Облачное хранилище

Установка бесплатного SSL сертификата Let’s Encrypt на Apache под Windows Server

Если Вы используете 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, и в браузере.