It-e.RU
Цифровой двигатель вашего бизнеса.

NGINX с бесплатным SSL

NGINX с бесплатным SSL

Бесплатные сертификаты необходимы для защиты личных данных и предотвращение возможности прослушивания интернет-соединений, при этом информация сертификата не подтверждена, кроме имени домена.


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







Разрешённые теги: <b><i><br>Добавить новый комментарий: