Наиболее распространенным решением бесплатного SSL является LetsEncrypt .
LetsEncrypt предоставляет множество клиентов для большинства операционных систем.Я рекомендую использовать клиент ACMESharp .
. Выполните следующие действия в Powershell (как описано в официальной документации проекта )
1) Установите ACMESharp
Import-Module ACMESharp
2) Инициализируйте хранилище
Initialize-ACMEVault
3) Создайте новую регистрацию ACME, используя электронную почту
New-ACMERegistration -Contacts mailto:somebody@example.org -AcceptTos
4) Отправьте идентификатор домена
New-ACMEIdentifier -Dns myserver.example.com -Alias dns1
5) Обработайте запрос на подтверждение владения доменом
Выберите способ, которым вы владеете своим доменом, я рекомендую HTTP Challenge.
(Complete-ACMEChallenge dns1 -ChallengeType http-01 -Handler manual).Challenge
Если вы не получите сведения о вызове, такие как путь к файлу и содержимое в выходных данных, попробуйте следующее:
(Update-ACMEIdentifier dns1 -ChallengeType http-01).Challenges | Where-Object {$_.Type -eq "http-01"}
Возможно, вам придется разрешить скрытые местоположениябыть доступным через Apache, так что вызов может достичь. хорошо известного местоположения.Вы можете использовать что-то вроде следующего конфига, в зависимости от ваших пользовательских потребностей (как упомянуто в в этом посте ):
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_FILENAME} !.well-known/
RewriteRule "(^|/)\.(?!well-known)" - [F]
</IfModule>
6) Отправьте ответ на вызов для подтвержденияВладение доменом (метод HTTP)
Submit-ACMEChallenge dns1 -ChallengeType http-01
Задача не обновляется мгновенно, поэтому попробуйте обновить результаты до тех пор, пока они не будут действительными.
(Update-ACMEIdentifier dns1 -ChallengeType http-01).Challenges |Where-Object {$_.Type -eq "http-01"}
После того, как они будут действительными, попробуйте:
Update-ACMEIdentifier dns1
7) Запрос и получение сертификата
New-ACMECertificate dns1 -Generate -Alias cert1
Submit-ACMECertificate cert1
Сертификат может быть выдан не сразу, поэтому попробуйте:
Update-ACMECertificate cert1
Пока все в порядке.
8) Экспорт открытых и закрытых ключей
Закрытый ключ:
Get-ACMECertificate cert1 -ExportKeyPEM "path\to\cert1.key.pem"
Запрос на подпись сертификата:
Get-ACMECertificate cert1 -ExportCsrPEM "path\to\cert1.csr.pem"
Позволяет зашифровать публичный сертификат:
Get-ACMECertificate cert1 -ExportCertificatePEM "path\to\cert1.crt.pem" -ExportCertificateDER "path\to\cert1.crt"
Публичный сертификат эмитента:
Get-ACMECertificate cert1 -ExportIssuerPEM "path\to\cert1-issuer.crt.pem" -ExportIssuerDER "path\to\cert1-issuer.crt"
В любом случае вам практически не нужно все вышеперечисленное, но закрытый ключабсолютно необходимо, поэтому держите его в безопасности.
Для получения дополнительной документации посетите github repo проекта.