Создание сертификата SSL на сервере nginx в CentOS 6

Published by Leave your thoughts

О самоподписанных сертификатах

SSL-сертификат — это способ шифрования информации сайта и создания более защищенных соединений. Кроме того, сертификат может предоставить посетителям сайта идентификационную информацию о виртуальном выделенном сервере. Чтобы получить SSL сертификат, подтверждающий данные сервера, можно обратиться в центр сертификации или же создать самостоятельно подписанный сертификат, не требующий сторонних подтверждений.

Требования

Для выполнения данного руководства на VPS должен быть установлен nginx.

Чтобы установить nginx:

  • установите репозиторий EPEL:

su -c 'rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm'

  • затем приступайте к установке nginx:

yum install nginx

1: Создайте каталог для сертификата

SSL-сертификат состоит из двух частей: самого сертификата и открытого ключа. Для простоты работы нужно создать отдельный каталог для хранения этих файлов:

sudo mkdir /etc/nginx/ssl

Теперь перейдите в новый каталог, поскольку следующие действия нужно выполнить в нем:

cd /etc/nginx/ssl

2: Создайте ключ и запрос на подпись сертификата

Сначала создайте закрытый ключ. В ходе этого процесса будет предложено ввести определенный пароль. Обязательно запишите или запомните этот пароль — если он будет утерян, получить доступ к сертификату будет невозможно.

sudo openssl genrsa -des3 -out server.key 1024

Затем создайте запрос на подпись сертификата:

sudo openssl req -new -key server.key -out server.csr

Данная команда выведет на экран список полей, которые необходимо заполнить.

Самым важным полем является Common Name. Внесите в него официальный домен или IP-адрес (если домена нет). Поля Challenge password и Optional company name заполнять не нужно.

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]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:NYC
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Awesome Inc
Organizational Unit Name (eg, section) []:Dept of Merriment
Common Name (e.g. server FQDN or YOUR name) []:example.com
Email Address []:webmaster@awesomeinc.com

3: Удалите пароль

Сертификат почти готов. На данном этапе нужно удалить установленный ранее пароль. Конечно, наличие пароля повышает уровень безопасности. Тем не менее, его нужно вводить всякий раз, когда nginx терпит сбои или требует перезагрузки,.

Для удаления пароля используйте команду:

sudo cp server.key server.key.org
sudo openssl rsa -in server.key.org -out server.key

4: Подпишите SSL-сертификат

Теперь осталось только подписать сертификат. Обратите внимание: на данном этапе можно указать срок действия сертификата. Для этого нужно заменить 365 нужным количеством дней. Согласно следующей команде, сертификат будет действителен в течение 365 дней:

sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Сертификат SSL готов!

5: Установите сертификат

Откройте конфигурационный файл SSL:

vi /etc/nginx/conf.d/ssl.conf

Раскомментируйте раздел, начинающийся со строки HTTPS Server. Отредактируйте данный файл согласно нижеприведенному коду (не забудьте заменить example.com в строке server_name своим доменным именем или IP-адресом). Чтобы просто протестировать сертификат, укажите root по умолчанию.

# HTTPS server
server {
listen       443;
server_name example.com;
ssl on;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
}

Затем перезапустите nginx:

/etc/init.d/nginx restart

Посетите https://ваш_адрес.

Это откроет страницу самоподписанного сертификата.

Готово!

Tags: , , , , , ,

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>