Как получить ssl сертификат
Для этого воспользуемся китайским сервисом WoSign. Поэтапные шаги для получения сертификата выложены в слайдере ниже
Поскольку сайт WoSign китайский и интерфейс весь на китайском языке, то удобнее всего будет использовать Google Chrome
- Переходим по адресу https://login.wosign.com
- Переводим интерфейс на английский
- Для нового пользователя необходима регистрация. В правом верхнем углу нажимаем Sign up now
Мы попали на форму регистрации. Вводим
- Почтовый адрес
- Пароль
- Подтверждение пароля
- Код с капчи
- Нажимаем зеленую кнопку
На почтовый ящик должна прийти ссылка для активации
- Нажимаем на нее
Получаем сообщение об успешной активации с предложением скачать сертификат для входа в кабинет
- Переходим по адресу https://login.wosign.com
- В правой части сайта, в блоке из двух закладок выбираем закладку с Account password +
- Водим почтовый ящик на который регистрировались
- Пароль
- Код с капчи
- Жмем Login
- Переходим на https://buy.wosign.com/FreeSSL.html
- В Domain name вводим имя домена. Будет сгенерирован бандл для domain.tld и www.domain.tld. Если домен с www не нужен, то жмем No need to bind this domain name
- Вводим код с капчи
- Давим Submit request
Заявка на генерацию сертификата подана, указано время, срок на который будет выдан сертификат, в данном случае два года, и нулевая цена. Это приятно 🙂
- Жмем Domain control verification
В этой форме видно имя домена для которого будет сгенерирован сертификат. Необходимо выбрать способ подтверждения того, что данный домен Ваш. Есть два способа:
- Закладка Domain control verification. На почтовый адрес (выбираем нужный) будет выслан код активации, который вводим в секцию Verification code. Вводим капчу и давим Verify now
- Закладка Website control verification. В этом случае нам предложат файл, который необходимо положить в корень Вашего сайта
В левую секцию необходимо скопипастить результат генерации
csr запроса. Для этого выполняем следующие действия из командной строки (необходимо иметь установленный в системе
openssl)
- openssl genrsa -des3 -out mydomain.key 4096 (генерируем секретный ключ, попросит ввести пароль, вводим его)
- openssl rsa -in mydomain.key -out mydomain.key (снимаем введеный пароль, иначе всякий раз при старте веб-сервиса будет запрашиваться этот пароль)
- openssl req -new -key mydomain.key -out mydomain.csr (генерируем csr запрос)
- Содержимое файла mydomain.csr, которое находится между секциями -----BEGIN CERTIFICATE REQUEST----- и -----END CERTIFICATE REQUEST----- копипастим в левую секцию
- Жмем Check CSR
Если в предыдущем шаге все было сделано правильно, то в правой секции видно будет алгоритм шифрования и длина ключа
- Жмем Submit
Принимаем поздравления и скачиваем архив с сертификатами для популярных веб-серверов (Nginx, Apache, IIS, Other servers)
Переход на https в nginx
Беру ранее сгенерированый ключ, полученный сертификат для nginx и привожу конфиг-файл сайта к следующему виду
server {
listen 80;
server_name mydomain.tld www.mydomain.tld;
rewrite ^ https://$host$1 permanent;
}
server {
listen 443 ssl http2;
server_name mydomain.tld;
...
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_prefer_server_ciphers on;
ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:!EDH+aRSA:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4;
ssl_protocols TLSv1.2;
ssl_certificate /etc/ssl/nginx/mydomain.tld/1_mydomain_bundle.crt;
ssl_certificate_key /etc/ssl/nginx/mydomain.tld/2_mydomain.key;
add_header Strict-Transport-Security 'max-age=15552001';
ssl_stapling on;
resolver 127.0.0.1;
...
}
Подробности по параметрам смотрим тут
Проверка такой настройки на SSL LABS показала мне

Прекрасно. В адресной строке хрома теперь видно зелёный замочек
Важно!!!
Касается высоко нагруженных проектов, в случае если пользователь периодически возвращается. Директиву add_header Strict-Transport-Security внедряем уже после того, как все проверили при помощи 301 редитекта с 80-го порта на порт 443. При помощи данной директивы будет выполнен принудительный переход клиента с http на https. Если клиент придет по http протоколу, то получит в ответ Strict-Transport-Security ‘max-age=15552001’, что и будет закешировано на стороне клиента на время max-age, в данном случае 180 дней + 1 секунда. Следующее соединение клиент сделает сразу по протоколу https. Наличие этой директивы позволит снизить нагрузку на процессор и является последним штрихом к получению оценки A+ от ssllab
Если проект не высоконагруженный то можно установить max-age=600, тоесть 10 минут