Создание сертификата SSL в nginx для Ubuntu 12.04

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

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

Данное руководство предполагает наличие у пользователя root-привилегий. Чтобы получить информацию о данных правах и их установке, читайте разделы 3 и 4 руководства «Начальная настройка сервера Ubuntu 12.04». 

Кроме того, на VPS должен быть установлен и запущен nginx. Чтобы установить nginx, используйте:

sudo apt-get 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» и «company name» пустыми.

На данном этапе нужно ввести информацию, которая будет включена
в запрос на сертификат.
То, что здесь необходимо ввести – это Distinguished Name (отличительное имя), или DN.
Полей, которые нужно заполнить, достаточно много, но некоторые можно оставить незаполненными.
Некоторые из них содержат значения по умолчанию.
Чтобы оставить поле незаполненным, введите '.'
-----
Country Name (2-буквенный код) [AU]:US
State or Province Name (полностью) [Some-State]:New York
Locality Name (город) []:NYC
Organization Name (название компании) [Internet Widgits Pty Ltd]:Awesome Inc
Organizational Unit Name (отдел) []:Dept of Merriment
Common Name (FQDN сервера или IP-адрес) []:example.com
Email Address []:webmaster@awesomeinc.com

3: Удаление фразового пароля

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

Чтобы удалить пароль, используйте:

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

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

Итак, сертификат готов, и все, что осталось сделать – подписать его.

Запомните: чтобы указать срок действия сертификата, замените значение 365 необходимым количеством дней. По умолчанию срок действия сертификата истекает через год.

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

Готово!

5: Настройка SSL-сертификата

Теперь, когда сертификат готов, все, что осталось сделать – это настроить виртуальные хосты для отображения нового сертификата.

Создайте новый файл с текстом по умолчанию и структурой стандартного файла виртуального хоста. Замените «example» в команде необходимым значением.

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example

Откройте новый файл:

sudo nano /etc/nginx/sites-available/example

В конце файла найдите раздел, который начинается так:

# HTTPS server
server {
listen 443;
server_name example.com;
root /usr/share/nginx/www;
index index.html index.htm;
ssl on;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
}

Раскомментируйте строки раздела «HTTPS Server». Замените example.com в строке «server_name» своим доменным именем или IP-адресом. Затем укажите правильный каталог сайта (выше приведенные конфигурации указывают на страницу Nginx по умолчанию).

Кроме того, необходимо убедиться, что обе эти строки в начале файла раскомментированы:

# Make site accessible from http://localhost/
# server_name localhost;

6: Активация виртуального хоста

В завершение нужно активировать хост, создав символьную ссылку между каталогами «sites-available» и «sites-enabled».

sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled/example

Теперь перезапустите nginx:

sudo service nginx restart

Чтобы увидеть самоподписанный сертификат, посетите https://ваш_адрес.

Tags: , , , ,

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