Самоподписанный SSL-сертификат

Дмитрий Корнев
3 сентября 2016

Дело не очень уже нужное, благодаря появлению Let’s Encrypt. Тем не менее, необходимость иногда возникает. В этой публикации пошаговое руководство (проверенно на Debian), плюс пример подключения сертификата в Nginx.

Установка необходимого софта:

apt update
apt install openssl openssl-blacklist ssl-cert

Создаём приватный ключ:

openssl genrsa -des3 -out server.key 2048

В процессе задаём временный пароль.

Создаём сертификат:

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

Нас спросят временный пароль, потом отвечаем на вопросы:

Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:Russia
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:pctuner.club
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:pctuner.club
Email Address []:вашапочта@pctuner.club
A challenge password []:
An optional company name []:

Удаляем временный пароль из ключа:

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

При этом надо будет указать временный пароль.

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

Копируем сертификат и ключ на свои места:

cp server.crt /etc/ssl/certs/
cp server.key /etc/ssl/private/

Удаляем оставшиеся и не нужные теперь уже файлы:

rm server.crt server.key server.csr server.key.orig

Nginx

Пример простейшей конфигурации Nginx для сайта https. Используются созданный самоподписанный SSL-сертификат и ключ:

server {
    listen 443;
    server_name pctuner.club;
    root /var/www/default-ssl;
    index index.php index.html;

    ssl on;
    # Здесь ссылаемся на созданные ранее файлы сертификата SSL.
    ssl_certificate /etc/ssl/certs/server.crt;
    ssl_certificate_key /etc/ssl/private/server.key;

    ssl_session_timeout 5m;

    ssl_protocols SSLv3 TLSv1;
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
    ssl_prefer_server_ciphers on;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    access_log /var/log/www/pctuner.club/access.log;
    error_log /var/log/www/pctuner.club/error.log;
}

Комментарии