Если Вы используете web-сервер Apache на операционной системе Windows, то эта краткая инструкция позволит выпустить и установить бесплатный SSL сертификат Let’s Encrypt, настроить автоматический перевыпуск/установку сертификата и перенаправить запросы с http на https.
В зависимости от версий acme и Apache могут быть различия. Тестировалось на Windows 2016 Server, Apache 2.4.46, win-acme 2.1.12. Сертификат “живет” 3 месяца, потом автоматически обновляется.
1. Установите Apache 2.4 в C:\Apache24 (скачать последние релизы можно от сюда https://www.apachelounge.com/download/)
2. Установите win-acme в C:\win-acme (скачать можно от сюда https://www.win-acme.com/)
3. Создайте файл C:\win-acme\Scripts\ RestartApache.bat с содержимым:
net stop “Apache2.4”
net start “Apache2.4”
4. Запустите клиент win-acme let’s encrypt C:\win-acme\wacs.exe
5. Выберите «М»
6. Выберите «Manual input» (в нашем случае – 2)
7. Введите доменные имена (в нашем случае mysite.ru)
8. Просит ввести альтернативное имя – просто жмем Enter
9. Выбираем пункт: [http-01] Save verification files on (network) path
10. Указываем путь: C:\Apache24\htdocs
11. Спрашивает, хотите ли вы скопировать файл web.config перед проверкой, отвечаем “N”
12. Выбираем «RSA key»
13. Поскольку будем использовать Apache, то выбираем «PEM encoded files (Apache, nginx, etc.)»
14. Укажем каталог, куда сохраним .pem файлы: C:\Apache24\conf
15. Другие варианты нам не нужны, поэтому выбираем «No (additional) store steps»
16. После создания сертификаты нужно выполнить дополнительный шаг (выберем пункт 3) и введем: C:\win-acme\Scripts\RestartApache.bat
17. Далее введем { StoreType } { StorePath } { RenewalId }
18. Больше никаких дополнительных шагов не требуется
19. Сгенерируются ключи в C:\Apache24\conf: 4 файла
• mysite.ru-chain.pem
• mysite.ru-chain-only.pem
• mysite.ru-crt.pem
• mysite.ru-key.pem
20. ДОНАСТРАИВАЕМ САМ APACHE – включаем SSL
В файле C:\Apache24\conf\httpd.conf
Раскомментируем следующие строки
Loadmodule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
Include conf/extra/httpd-default.conf
Include conf/extra/httpd-ssl.conf
Пропишем в файл C:\Apache24\conf\extra\httpd-ssl.conf
ServerName mysite.ru
После рестарта Apache в списке служб будет подобная картинка
21. Настроим SSL для выданного сертификата, для этого отредактируем файл C:\Apache24\conf\extra\httpd-ssl.conf
Заменим
SSLCertificateFile “${SRVROOT}/conf/server.crt”
на
SSLCertificateFile “${SRVROOT}/conf/mysite.ru-chain.pem”
Заменим
SSLCertificateKeyFile “${SRVROOT}/conf/server.key”
на
SSLCertificateKeyFile “${SRVROOT}/conf/mysite.ru-key.pem”
Заменим
SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
на
\SSLCipherSuite ECDH+AESGCM256:ECDH+CHACHA20:DH+AESGCM256:ECDH+AES256:DH+AES256:!aNULL:!MD5:!DSS
SSLProxyCipherSuite ECDH+AESGCM256:ECDH+CHACHA20:DH+AESGCM256:ECDH+AES256:DH+AES256:!aNULL:!MD5:!DSS
Заменим
SSLProtocol all -SSLv3
SSLProxyProtocol all -SSLv3
на
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLProxyProtocol all -SSLv3 -TLSv1 -TLSv1.1
Заменим
# General setup for the virtual host
DocumentRoot “${SRVROOT}/htdocs”
ServerName www.example.com:443
ServerAdmin admin@example.com
ErrorLog “${SRVROOT}/logs/error.log”
TransferLog “${SRVROOT}/logs/access.log”
на
# General setup for the virtual host
DocumentRoot “${SRVROOT}/htdocs”
ServerName mysite.ru:443
ServerAdmin <example@example.com>
ErrorLog “${SRVROOT}/logs/error.log”
TransferLog “${SRVROOT}/logs/access.log”
22. Перенаправим http на https
В файле C:\Apache24\conf\httpd.conf после последней строки #LoadModule
Добавим строки:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}
В итоге мы получаем SSL соединение и в API, и в браузере.