Дело не очень уже нужное, благодаря появлению 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;
}