Настройка HTTPS для Nginx | установка SSL-сертификатов на Nginx

moder

moder

Администратор
Команда форума
Чтобы подготовить сервер для работы с https, необходимо установить в систему SSL-сертификат. За сертификаты нужно платить, но можно установить бесплатный или самоподписной сертификат. Правда, при самоподписном сертификате, браузер будет ругаться, что сертификат не проверен, а это может отпугнуть часть пользователей.

Для работы с SSL нам потребуется установить OpenSSL на сервер (возможно он уже установлен, проверить можно командой openssl version). Качаем и устанавливаем:
Код:
wget http://www.openssl.org/source/openssl-1.0.0d.tar.gz
tar -xvzf openssl-1.0.0d.tar.gz
cd openssl-1.0.0d
./config --prefix=/usr --openssldir=/usr/ssl
make
make test
make install
./config shared --prefix=/usr --openssldir=/usr/ssl
make clean
make
make install
Получаем сертификат.

Стоимость сертификата зависит от его типа. Поскольку нам сертификат нужен прежде всего для защиты от цензуры и слежки, то мы можем использовать недорогой сертификат. Я беру сертификаты здесь.

Для генерации нового сертификата центр сертификации попросит вас файл CSR. Это ваш открытый ключ, который можно сгенерировать в командной строке
Код:
mkdir -p ~/etc/nginx/ssl && cd ~/etc/nginx/ssl

openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr
либо через isp manager, во вкладке SSL сертификаты > создать.
Создание SSL-сертификата



Копируем содержимое файла yourdomain.csr в центр сертификации (если сертификат создали из isp manager, то кликаем на него и нажимаем скачать) и создаем набор ключей для вашего домена (придут на Email). Файл yourdomain.csr удаляем с сервера.

У разных сертификатов может быть разный набор ключей. Например, для сертификата Comodo Essential SSL вы должны получить такой набор ключей:
  • AddTrustExternalCARoot.crt
  • ComodoUTNSGCCA.crt
  • EssentialSSLCA_2.crt
  • youdomain.crt
  • UTNAddTrustSGCCA.crt
youdomain.crt - это непосредственно сам сертификат. Остальные файлы нам нужны для того, чтобы получить цепочку, для этого набираем в командной строке:
Код:
# cd /etc/nginx/ssl
# cat youdomain.crt EssentialSSLCA_2.crt ComodoUTNSGCCA.crt UTNAddTrustSGCCA.crt AddTrustExternalCARoot.crt > yourdomain.bundle.crt
Иногда файл yourdomain.bundle.crt уже идет в комплекте с ключами.


Установка SSL сертификата на Nginx.

1. Сохраняем файлы сертификата в папке /etc/nginx/ssl на вашем сервере. В этой же директории должен находиться файл ключа (yourdomain.key), который мы сгенерировали ранее.

2. Для включения SSL в Nginx нужно добавить конфигурацию сервера следующие настройки:

Код:
server {
...
server_name youdomain.com www.youdomain.com;
listen 443;
#ssl on;
ssl_certificate /etc/nginx/ssl/yourdomain.bundle.crt; # цепочка сертификатов
ssl_certificate_key /etc/nginx/ssl/yourdomain.key; # файл ключа
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "RC4:HIGH:!aNULL:!MD5:!kEDH";
add_header Strict-Transport-Security 'max-age=604800'; # браузер будет автоматически перенаправлять на https, если пользователь зашел на сайт через http
...
}


Ссылки:
http://nginx.org/ru/docs/http/configuring_https_servers.html - мануал для Nginx
klen.github.io/https-setup-ru.html - настройка https для "чайников", с картинками.
http://ru.ispdoc.com/index.php/Ручная_установка_SSL_сертификата
http://linuxguru.ru/panel/ispmanager/nastrojka-ssl-v-ispmanager-cherez-nginx/

Любые вопросы, а также отзывы о работе сертификатов пишите в теме.
 
Последнее редактирование:
Сверху