СОЗДАНИЕ СЕРТИФИКАТА SSL НА СЕРВЕРЕ NGINX В CENTOS 6

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

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

Thank you for reading this post, don't forget to subscribe! 

Требования

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

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

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

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

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

yum install nginx

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

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

mkdir /etc/nginx/ssl

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

cd /etc/nginx/ssl

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

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

openssl genrsa -des3 -out server.key 1024

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

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

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

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

[spoiler]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[/spoiler]

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

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

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

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

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

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

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 по умолчанию.

[spoiler]# 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;
}[/spoiler]

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

/etc/init.d/nginx restart

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

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

Гото­во!

 

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

пути про­пи­сать в вирт­хо­сте, в сек­ции server:

server {
listen 443;
server_name test2.t www.test2.t;

ssl on;
ssl_certificate /etc/nginx/ssl/test2.t.crt;
ssl_certificate_key /etc/nginx/ssl/test2.t.key;