SSL сертификат для NGINX на Ubuntu 12

Что такое самостоятельно подписанный сертификат?

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

Настройка

Следующие действия требуют root прав. Также нам понадобится установленный и настроенный сервер nginx. Установить его вы можете выполнив следующую команду:

~~~{.bash} sudo apt-get install nginx


### Шаг 1 - Создание директории для сертификата

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

~~~{.bash}
sudo mkdir /etc/nginx/ssl

Перейдём всозданную директорию:

~~~{.bash} cd /etc/nginx/ssl


### Шаг 2 - Создание ключа сервера и запроса подписи сертификата

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

~~~{.bash}
sudo openssl genrsa -des3 -out server.key 1024

Затем создадим запрос на подпись

~~~{.bash} sudo openssl req -new -key server.key -out server.csr


В ответ на эту команду вы увидите список обязательных к заполнению полей.

Наиболее важное поле - “Общественное имя (common name)”.  Введите свое официальное доменное имя или свой IP адрес, в случае если у вас ещё нет доменного имени. Поля challenge password (усложненный пароль) и optional company name (дополнительное имя компании) оставьте пустыми.

~~~{.bash}
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]:Moscow
Locality Name (eg, city) []:Moscow
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Example Inc
Organizational Unit Name (eg, section) []:Example Organization
Common Name (e.g. server FQDN or YOUR name) []:example.com                  
Email Address []:webmaster@example.com

Шаг 3 - Удаление пароля (Passphrase)

Мы почти закончили создание сертификата. Однако полезным будет удалить пароль. Хотя использование пароля и делает сертификат более безопасным, у вас могут возникнуть проблемы при перезагрузке сервера. В случае падения сервера или просто требуется перезагрузка, вам всегда придётся вводить пароль, иначе загрузить сервер у вас не получится.

Следующая команда позволяет удалить пароль на сертификат:

~~~{.bash} sudo cp server.key server.key.org sudo openssl rsa -in server.key.org -out server.key


### Шаг 4 - Подпись сертификата

Осталось только подписать сертификат. Вы можете установить срок действия сертификата заменив число 365 в следующей команде на количество дней действия. В следующем примере сертификат истечет через год.

~~~{.bash}
sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

На этом сертификат готов.

Шаг 5 - Установка сертификата

Теперь, когда мы подготовили все необходимые компоненты, можно настроить наши виртуальные хосты на отображение сертификата. Создадим файл, полностью скопировав в него содержание файла настройки виртуального хоста по-умолчанию (/etc/nginx/sites-available/default). Замените “example” на любое имя по вашему усмотрению:

~~~{.bash} sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example


Теперь откройте этот файл:

~~~{.bash}
sudo nano /etc/nginx/sites-available/example

Прокрутите вниз до следующих строк:

~~~{.nginx}

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” на своё доменное имя или IP адрес. Также пропишите правильный путь к вашему сайту. (приведенный файл содержит настройки сервера nginx по-умолчанию).
Также убедитесь, что следующие строки закомментированы:

~~~{.nginx}
# Make site accessible from http://localhost/
# server_name localhost;

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

Заключительный шаг - активация хоста. Создадим ссылку в директории sites-enabled на файл из директории sites-available.

~~~{.bash} sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled/example


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

~~~{.bash}
sudo service nginx restart

Откройте браузер по адресу https://ваш_адрес и вы увидите ваш самостоятельно подписанный сертификат!

Комментарии

0