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 слушателят все още държи стария, и затова проверката трябва да назове порта, който клиентите действително достигат. Запишете отпечатъка до датата на подновяване, така че следващото сравнение да е проверка, а не акт на памет.