Бесплатные сертификаты необходимы для защиты личных данных и предотвращение возможности прослушивания интернет-соединений, при этом информация сертификата не подтверждена, кроме имени домена.
Бесплатные сертификаты необходимы для защиты личных данных и предотвращение возможности прослушивания интернет-соединений, при этом информация сертификата не подтверждена, кроме имени домена. Таким образом такого вида сертификат является чуть более доверенным, чем самоподписанный сертификат. Подключим его к вебсерверу.
В статье я буду использовать сертификат от 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)