Бесплатные сертификаты необходимы для защиты личных данных и предотвращение возможности прослушивания интернет-соединений, при этом информация сертификата не подтверждена, кроме имени домена.
Бесплатные сертификаты необходимы для защиты личных данных и предотвращение возможности прослушивания интернет-соединений, при этом информация сертификата не подтверждена, кроме имени домена. Таким образом такого вида сертификат является чуть более доверенным, чем самоподписанный сертификат. Подключим его к вебсерверу.
В статье я буду использовать сертификат от CAcert. Этот сервис, хоть и выдаёт сертификат всего на полгода, но мне приглянулся своей простотой и выдачей wildcart сертификатов (это сертификат вида *.it-e.ru) на неограниченное количество доменов. Существуют аналоги, например, startssl, но все они не предоставляют wildcart сертификаты и имеют различные сложности в работе с ними. Сложности необходимы, чтобы пользователи всё-таки оплачивали работу сервиса.
Начать следует с регистрации на сервиса и подтверждения своей электропочты по этой ссылке. Далее подключаете домены и подтверждаете управление ими посредством перехода по ссылкам, которые сервис высылает на технологические почтовые ящики домена. Далее необходимо создать запрос на выпуск сертификата:
# openssl genrsa -out domain.key 2048 Generating RSA private key, 2048 bit long modulus .............................................................+++ .......+++ e is 65537 (0x10001) # openssl req -new -key domain.key -out domain.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:RU State or Province Name (full name) [Some-State]:Russia Locality Name (eg, city) []:Moscow Organization Name (eg, company) [Internet Widgits Pty Ltd]: НАЗВАНИЕ КОМПАНИИ Organizational Unit Name (eg, section) []:НАЗВАНИЕ ОТДЕЛА Common Name (e.g. server FQDN or YOUR name) []:ТОЧНОЕ ДОМЕННОЕ ИМЯ Email Address []: не обязательно Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: не обязательно An optional company name []: не обязательно
Двумя командами был создан ключ и запрос на выпуск сертификатов. Теперь необходимо вставить запрос на выпуск в форму ввода и получить сертификат. Серитфикат копируйте из браузера и вставляйте в файл domain.crt. На этом процедура получения сертификата окончена. Для владельцев субдоменов могу порекомендовать ещё раз пройти процедуру и получить сертификат вида *.domain. Соответственно на вопрос "Common Name (e.g. server FQDN or YOUR name) []:" ответьте "*.domain". Это позволит вам защитить и субдомены. Теперь необходимо подключить сертификат в вебсерверу nginx.
Подготовим сертификат:wget http://www.cacert.org/certs/root.crt wget http://www.cacert.org/certs/class3.crt cat root.crt class3.crt >> DOMAIN.crtТеперь можно сделать конфиг сервера:
server {
listen 0.0.0.0:443 ssl spdy;
server_name DOMAIN;
index index.html;
ssl on;
ssl_certificate /etc/nginx/ssl/DOMAIN.crt;
ssl_certificate_key /etc/nginx/ssl/DOMAIN.key;
#ssl_session_cache shared:SSL:50m;
#ssl_session_cache 50m;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:
ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:HIGH:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!CBC:!EDH:!kEDH:!PSK:!SRP:!kECDH;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/nginx/ssl/DOMAIN.crt;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_session_timeout 5m;
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000;" always;
access_log /var/log/nginx/access_log main;
error_log /var/log/nginx/error_log debug;
root /var/www/DOMAIN/ssl;
location / {
proxy_pass http://$host;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}
}
Перезапускаем вебсервер.
Комментарии (0)
Добавление комментариев закрыто.