В зависимости от версий acme и Apache могут быть различия. Тестировалось на Windows 2016 Server, Apache 2.4.58-win64 (Apache 2.4.60-win64), win-acme 2.2.6.1571.x64. Сертификат "живет" 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), я запускал через Far от имени администратора
5. Выбираем «М»
6. Выбираем «Manual input» (в нашем случае – 2)
7. Вводим имена хостов (в нашем случае mysite.ru)
8. Просит ввести альтернативное имя – просто жмем Enter
9. Выбираем пункт: Single certificate
10. Выбираем пункт: [http-01] Save verification files on (network) path
11. Указываем путь: c:\Apache24\htdocs
12. Спрашивает, хотите ли вы скопировать файл web.config перед проверкой, отвечаем “N”
13. Выбираем «RSA key»
14. Поскольку будем использовать Apache, то выбираем «PEM encoded files (Apache, nginx, etc.)»
15. Указываем каталог, куда сохраним .pem файлы: c:\Apache24\conf
16. Устанавливать пароль на сертификаты под Apache не нужно
17. Другие варианты нам не нужны, поэтому выбираем "No (addition) store steps"
18. После создания сертификатов нужно выполнить дополнительный шаг, выбираем пункт "Start external script or program"
19. Укажем bat-файл (п.4), чтобы автоматически перезапускать сервис Apache после обновления сертификатов: c:\win-acme\Scripts\RestartApache.bat
20. Далее вводим {StoreType} {StorePath} {RenewalId}
21. Больше никаких дополнительных шагов не требуется, выбираем "No (additional) installation steps"
22. Если ранее вы получали сертификаты на этот адрес (mysite.ru), то потребуется подтвердить свои действия
нужно указать логин и пароль пользователя ОС под которым будет запускаться задача в планировщике
23. Сгенерируются ключи (4 файла) в c:\Apache24\conf
• mysite.ru-chain.pem
• mysite.ru-chain-only.pem
• mysite.ru-crt.pem
• mysite.ru-key.pem
в планировщике появится задача по обновлению сертификатов по окончании срока действия (срок действия сертификата - 3 месяца)
24. Донастраиваем сам 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
Укажем:
ServerName mysite.ru
ServerAdmin admin@mysite.ru
После рестарта Apache в списке служб будет подобная картинка
25. Настроим 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"
26. Перенаправим http на https
В файле c:\Apache24\conf\httpd.conf
- Раскомментируем модуль:
LoadModule rewrite_module modules/mod_rewrite.so
- После последней строки #LoadModule добавим строки:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}
В итоге мы получаем SSL соединение и в API, и в браузере.
Результат теста от "Qualys SSL Labs" (https://www.ssllabs.com/ssltest/)