SoftEther ServerCertSet: імпарт абноўленага ланцуга праз vpncmd
Абноўлены файл не змяняе ідэнтычнасць сервера SoftEther. Імпартуйце ланцуг праз ServerCertSet, падключыце крок разгортвання і прачытайце слухач.
Certbot паведамляе пра паспяховае абнаўленне, файлы на дыску атрымалі новыя даты, а кліенты ўсё яшчэ сустракаюць старую ідэнтычнасць. SoftEther трымае свой SSL-сертыфікат сервера ва ўласнай канфігурацыі ўзроўню сервера, таму новы файл на дыску нічога не змяняе, пакуль не імпартаваныя канцавы сертыфікат і яго ключ. Паслядоўнасць ніжэй ахоплівае адно ручное імпартаванне, абгортку, якая запускаецца пасля кожнага абнаўлення, і праверку, якая чытае тое, што слухач фактычна прадстаўляе. Кожны крок пакідае сведчанні, якія можна параўнаць пасля наступнага абнаўлення.
Абноўлены файл не змяняе ідэнтычнасць сервера
Выдача і разгортванне — гэта асобныя падзеі з асобнымі рэжымамі адмоваў. Кліент ACME запісвае файлы ў каталог лініі і фіксуе поспех; SoftEther працягвае выкарыстоўваць той сертыфікат, які быў апошнім загрузены ў яго канфігурацыю. Таму нулявы статус выхаду апісвае файлы, а не службу, і гэтыя дзве рэчы могуць разыходзіцца, пакуль ніхто не глядзіць. Разглядайце імпарт як крок разгортвання, а абнаўленне — як яго ўваход.
Гэтае размежаванне тлумачыць і заблытаную палову-няўдачу: стары сертыфікат працягвае працаваць да заканчэння тэрміну, таму спачатку нішто не выглядае зламаным. Калі ж тэрмін сканчаецца, усе кліенты адмаўляюць адначасова, і гэта выглядае як збой, а не як прапушчаны крок разгортвання. Праверка прадстаўленай ідэнтычнасці пасля кожнага абнаўлення ператварае гэтую нечаканасць у звычайнае назіранне.
Выберыце выклік, які падыходзіць слухачу
Сертыфікат павінен называць хост, які правяраюць кліенты, таму выкарыстоўвайце публічнае імя DNS, а не ўнутраную метку або адрас. HTTP-01 патрабуе, каб выклік на працягу моманту быў адказаны на порце 80; гэта часовы слухач і ніколі не прычына пераносіць уласны порт SoftEther. DNS-01 даказвае кантроль праз запіс і зусім не патрабуе ўваходнага HTTP.
Аўтаматычнае абнаўленне азначае аўтаматычную інтэграцыю DNS з уліковымі данымі, абмежаванымі адной зонай, а не запіс TXT, які ўручную ўводзяць кожныя два месяцы. Wildcard змяняе тып выкліку, а не патрэбу ў такой аўтаматызацыі. Вырашыце гэта да стварэння першага сертыфіката, бо змена тыпу выкліку пазней азначае адначасовае ўмяшанне ў канфігурацыю кліента і ў фаервол.
Трымайце артэфакты ў парадку, пакуль вы тут. Канцавы сертыфікат і прамежкавыя прыходзяць як асобныя файлы і як адзін аб'яднаны файл ланцуга, прыватны ключ зноў асобны, а імпарту патрэбны ланцуг з адпаведным ключом, а не публічны сертыфікат сам па сабе.
Імпартуйце ланцуг на ўзроўні сервера
Зрабіце рэзервовую копію канфігурацыі сервера і пераканайцеся, што вы ўсё яшчэ можаце дасягнуць інтэрфейсу кіравання, перш чым кранаць сертыфікат. Падключайцеся як адміністратар сервера, а не як адміністратар Virtual Hub, бо сертыфікат належыць аб'екту сервера. Затым загрузіце ланцуг і ключ па абсалютным шляху, з файлаў, якія можа чытаць уліковы запіс, што запускае каманду. Заўважце, што шляхі абсалютныя, бо каманда вырашае іх ад працоўнага каталога таго працэсу, які запускаў vpncmd:
ServerCertSet /LOADCERT:/etc/letsencrypt/live/vpn.example.com/fullchain.pem /LOADKEY:/etc/letsencrypt/live/vpn.example.com/privkey.pemЧытайце вывад каманды, а не мяркуйце поспех, і затым перачытайце ланцуг, а не давярайце файлу, які вы перадалі. Мяжа паміж зборкамі, якія імпартуюць цэлы PEM-пакет, і зборкамі, якія бяруць толькі першы сертыфікат, не дакументавана ў адным месцы, таму менавіта праверка вырашае справу для зборкі перад вамі. Падлічыце сертыфікаты, якія прадстаўляе слухач; канцавы сертыфікат без прамежкавых — гэта подпіс імпарцёра, які спажыў толькі першы блок.
Трымайце імпартаваны ключ чытэльным толькі для ўліковага запісу, які запускае сервер, і трымайце пароль кіравання па-за гісторыяй абалонкі. Для гэтага першага імпарту ўвядзіце пароль у запыце, а не перадавайце яго аргументам каманды. Гэтыя дзве звычкі нічога не каштуюць і выдаляюць самы распаўсюджаны спосаб, якім разгортванне сертыфіката выдае тое, што павінна было абараніць. Зрабіце гэта да першага імпарту, а не пасля яго.
Падключыце разгортванне, а не абнаўленне
Калі ручны імпарт працуе, змясціце менавіта гэтыя крокі ў невялікую абгортку і выклічце яе з кліента ACME пасля паспяховага абнаўлення. Certbot усталёўвае RENEWED_LINEAGE і RENEWED_DOMAINS для хука, таму абгортка можа дзейнічаць на адзін сертыфікат на машыне, якая кіруе некалькімі. Фільтруйце па лініі, а не рэагуйце на кожнае абнаўленне на хосце. Абгортка — гэта код разгортвання, які працуе з прывілеямі сервера, таму аглядайце яго як любы іншы скрыпт у гэтай ролі.
certbot renew --deploy-hook /usr/local/sbin/softether-deploy.shХук, які працуе без нагляду, патрабуе ўласнага абароненага сховішча ўліковых даных і сігналу аб збоі, які даходзіць да чалавека. Калі выдача паспяховая, а імпарт правальваецца, паўтарыце імпарт, а не запытвайце іншы сертыфікат, бо другі запыт хавае дэфект разгортвання за новым файлам. Дакументацыя Certbot па абнаўленні ясна кажа, што запуск, які нічога не абнаўляе, — гэта нармальны вынік, таму менавіта хук адрознівае адно ад другога.
Параўнайце прадстаўлены ланцуг з файлам
Чытайце слухач, а не дыск. Падключыцеся да порта, які бачаць кліенты, з імем сервера, якое выкарыстоўваюць кліенты, затым параўнайце адбітак і дастаўлены ланцуг з лініяй, якую ўсталяваў хук. Дзве каманды ахопліваюць гэта, і першая таксама паказвае, ці прыходзяць прамежкавыя сертыфікаты наогул:
openssl s_client -connect vpn.example.com:443 -servername vpn.example.com -showcerts </dev/null 2>/dev/null | grep -c 'BEGIN CERTIFICATE'
openssl s_client -connect vpn.example.com:443 -servername vpn.example.com </dev/null 2>/dev/null | openssl x509 -noout -subject -dates -fingerprint -sha256Затым стварыце новае кліенцкае злучэнне, бо сеансы, усталяваныя да імпарту, былі аўтэнтыфікаваныя супраць папярэдняй ідэнтычнасці і нічога не даказваюць пра новую. Калі кліенты замацоўваюць стары канцавы сертыфікат, ім патрэбна ўзгодненае абнаўленне нават тады, калі публічны ланцуг сапраўдны, і гэтая задача належыць у той жа runbook, што і абнаўленне. Зваротны проксі перад службай можа прадстаўляць добры сертыфікат, пакуль слухач VPN усё яшчэ трымае стары, і менавіта таму праверка павінна называць порт, да якога кліенты фактычна датыкаюцца. Запішыце адбітак побач з датай абнаўлення, каб наступнае параўнанне было праверкай, а не актам памяці.