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

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

Roman Bogachev VMware Specialist | Drone Pilot | Traveler

Для начала необходимо создать приватный ключ.
Private key - специальный 2048 битный ключ для шифрования по алгортму RSA.
Он необходим для работы с SSL сертификатами.

Генерируем приватный ключ:

1
2
3
4
5
6
7
openssl genrsa -des3 -out /root/serts/private.key 2048
Generating RSA private key, 2048 bit long modulus
........................++++++
......++++++
e is 65537 (0x10001)
Enter pass phrase for /root/serts/private.key:
Verifying - Enter pass phrase for /root/serts/private.key:

Далее проверим, создан ли ключ, прочитав файл:

cat /root/serts/private.key

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,F8B18E31151D9E52
ZO+ls4I25/FhNhbamJ9QPohUxoGvGK6rKV/43dLDxjwZVB2vAmWFOLs+afu8cg0o
7ft7rjg3bOnC+6FpjTMb9WCQYjmP+gP0OkPExwo1xSp4JUVcooeI/gg8AZOxwlx6
1Bn7jDcV3R6cS/d7dxtXJeVS8NH8qYV9/HnvuKJEJdD0KUd1aWyOfIJ0s8MiBEx9
XqqJi+h2Kexuyu1tOrYttRmPhYAnTvaYBuhutax5MSx6tgu6ju0Vc1ELaCkmCKR4
fXZ73M/dbb/zOUtfsM6PHZr5btAWYI/piDX0lOg2Ywin23rWttY21GzVv9hnNhiF
ECEfD8fMrZBy6hOZbyS/vZTnX7wclMo2HVTKfwljTrMbUDVe/p9jXBXS/Zq06NTp
ZCgzCfb/j+B1sY8kaNCl0GDuBEsDwkCJlVy1FJB3Z3kmSR3I0KfiE/a+zicl4naQ
QCaI3mUbCEt51/CfW6SClVNjMv3jFmeXgrEz1/jQQkREpvfiPbXZMi/IrsJuJ3LC
fHEKinLBwShBUrEw8J8bwEW/6RvdlRZpRKgF+g4os7CKBMuEDphjRiHXkUhW6gNX
9RoZ3GS3I+wdNQi6DLhZLU9ygWWM6Wcn9d1ojaoy5II54QavX1dch4pZ1HWERB89
LArFPKgJ8RWnY4G0p9Bx4H2I6Hj38fys33K/SB0794MH4g/WZaVI2VnBkdBx3rk5
zE1ZNjnw0iRptGxx3mf9rUmo8HhlsvQpbrel2SjTVOqAIq8vI9dVjnkZl+2jeaR9
jxLca3kCOBreCJQwb4c/LZpR7e4jTVBrGlWRb9WG2Ah2v2VKeq4VpA==
-----END RSA PRIVATE KEY-----

Полученный файл private.key - это и есть необходимый приватный ключ.

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

Генерация CSR-запроса

CSR-запрос необходим для получения сертификата в соответствующем сертификационном центре. Для его генерации выполните в консоли сервера команду:

1
openssl req -new -key /root/serts/private.key -out /root/serts/request.csr

/root/serts/private.key - путь к файлу приватного ключа, созданного на предыдущем шаге.
/root/serts/request.csr - путь по которому будет создан файл запроса сертификата

Команда запустит диалог в котором Вам потребуется ответить на несколько вопросов.
Обратим внимание, что на первый запрос «Enter pass phrase for /root/serts/private.key» необходимо ввести пароль, выбранный в Шаге 1, а на последние два запроса «A challenge password» и «An optional company name» отвечать не нужно.
Пример сессии представлен ниже:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Enter pass phrase for /root/serts/private.key:
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-State
Locality Name (eg, city) []:Moscow
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Some hosting
Organizational Unit Name (eg, section) []:Technical Support Department
Common Name (eg, YOUR name) []:www.example.com
Email Address []:support@example.com
Please enter the following `extra` attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Проверяем:

cat /root/serts/request.csr

1
2
3
4
5
6
7
8
9
10
11
12
13
-----BEGIN CERTIFICATE REQUEST-----
MIIB+jCCAWMCAQAwgbkxCzAJBgNVBAYTAlJVMRUwEwYDVQQIEwxNb3Njb3ctU3Rh
dGUxDzANBgNVBAcTBk1vc2NvdzEVMBMGA1UEChMMQmVzdCBIb3N0aW5nMSUwIwYD
VQQLExxUZWNobmljYWwgU3VwcG9ydCBEZXBhcnRtZW50MRwwGgYDVQQDExN3d3cu
YmVzdC1ob3N0aW5nLnJ1MSYwJAYJKoZIhvcNAQkBFhdzdXBwb3J0QGJlc3QtaG9z
dGluZy5ydTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA9QC5bmg6QjfVREpt
RaswDGEbFeZj0BcIG9DzDWsQ3h3N7xOm8d4lfOGIQYsSdZPgF53I1Brsi+ilcRrd
FtZpstAlkLHPkdJc2BuzPKshPoZiXcqBV45oQ+wOWRIg/2rzjxxPnuL53TAayVsC
zJWL131yLM2kdFfY1KpDgILNVscCAwEAAaAAMA0GCSqGSIb3DQEBBQUAA4GBAG8B
xsq7r61UTB9822e7Cez6/VXVa5XrPVtZZ6RdDIHAbQAh9WYG3i5s2LKM82qAYa0b
T2+Lv4maZcd0cntica3kLDbDE/usDESvlshVhW64tv4L+upgRgJkTaPaXmsJsOwP
D4WfNUrz+0RgSp5ypbv+e9E7or9Tkm3UXdTOFbln
-----END CERTIFICATE REQUEST-----

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

Установка полученного сертификата

В данном примере будет рассматриваться установка сертификата на сервер с nginx.
После получения RapidSSL сертификата выполняем следующие действия.

  1. Создаем файл ssl.crt и копируем в него полученный сертификат, который нам прислали в теле письма. (X.509)

    Удостоверьтесь, что есть 5 дефисов, в обе стороны от BEGIN CERTIFICATE и END CERTIFICATE и отсутствуют пропуски, лишние символы и табуляции.

  2. Необходимо скачать RapidSSL Intermediate CA Bundle (ссылка будет указана в письме либо тут)

  3. Копируем и вставляем его в новый файл, который называем Intermediate.crt
    Далее нам потребуется cоединить SSL и Intermediate CA Bundle

    (НЕ ЗАБУДЬТЕ СРАВНИТЬ МЕТОД ШИФРОВАНИЯ И СКАЧАТЬ НЕОБХОДИМЫЙ CA Bundle)

  4. Выполняем слияние следующей командой:

1
cat intermediate.crt >> ssl.crt

И переименовываем файл в example.crt (как удобнее)

  1. Помещаем приватный ключ в папку с созданным сертификатом и указываем пути в конфиге nginx

  2. Вносим изменения в конфиг nginx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
server {
listen *:80;
server_name example.com www.example.com;
rewrite ^(.*)$ https://$server_name$1 permanent;
}
server {
listen 443;
server_name example.com;
ssl on;
ssl_certificate /etc/ssl/example.com/example.com.bundled.crt;
ssl_certificate_key /etc/ssl/example.com/example.com.key;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers HIGH:!ADH:!MD5;
access_log /srv/www/example.com/logs/access.log main;
error_log /srv/www/example.com/logs/error.log info;
root /srv/www/example.com/public_html;
charset utf-8;
location / {
index index.php index.html;
root /srv/www/example.com/public_html;
}
error_page 404 /404.php;
location /404.php {
internal;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires 1w;
log_not_found off;
}
location ~ /\.ht.+$ {
return 404;
}
location ~ ^/(css|js|img).+\.php$ {
return 404;
}
location ~ \.php$ {
try_files $uri = 404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /srv/www/example.com/public_html/$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}