В связи с тем что Google Chrome заблокировал сертификаты StartCom, а доля пользователей Google Chrome не маленькая то решил воспользоваться сертификатом Let’s Encrypt.
Сертификаты Let’s Encrypt выдаются на 90 дней так что придётся чаще придется его обновлять.
Инструкция по получению сертификата:
Устанавливаем git
yum install git
Переходим в директорию /tmp
cd /tmp
С помощью git скачиваем файлы Let’s Encrypt. Сам скрипт теперь называется /certbot
git clone https://github.com/certbot/certbot
Переходим в скачанную директорию
cd certbot
Даем права на выполнение для файла скрипта
chmod a+x ./certbot-auto
кКоманда непосредственно получения сертификата
./certbot-auto certonly --webroot --agree-tos --email webmaster@my-site.ru -w /var/www/my-site.ru/ -d my-site.ru -d www.my-site.ru
После этого скрипт начнет работу и предложит установить недостающие пакеты. Соглашаемся и ждём.
--webroot — так как автоматическая установка для nginx пока не надежна, используем этот ключ;
--agree-tos — соглашаемся с лицензионным соглашением;
--email webmaster@my-site.ru — указываем свой e-mail. В дальнейшем он может пригодиться для восстановления своего аккаунта;
-w /var/www/my-site.ru/ — указываем корневую директорию сайта;
-d my-site.ru — наш домен. так же можно указывать и поддомены, например -d site.my-site.ru.
Если все прошло успешно то мы увидим следующего плана сообщение:
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/my-site.ru/fullchain.pem. Your cert will expire on 2017-01-21. To obtain a new version of the certificate in the future, simply run Certbot again. - If you lose your account credentials, you can recover through e-mails sent to webmaster@my-site.ru. - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Сертификаты получены и остается только немного настроить наш NGINX
Если уже использовали другие сертификаты то просто меняем пути:
ssl_certificate /etc/letsencrypt/live/my-site.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/my-site.ru/privkey.pem;
Если еще не пользовались другими сертификатами то настраиваем:
server { listen 80 ; server_name my-site.ru www.my-site.ru; #Делаем 301 редирект с 80 порта на 443 return 301 https://www.my-site.ru$request_uri; } server { listen 443 ssl; server_name my-site.ru www.my-site.ru; ssl on; keepalive_timeout 70; keepalive_requests 150; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_certificate /etc/letsencrypt/live/my-site.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/my-site.ru/privkey.pem; location / { proxy_pass http://127.0.0.1:81; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
После этого перезапускаем nginx
service nginx reload
Обновить сертификат можно командой
certbot-auto renew