Let’s Encrypt — еще один простой способ.

Привет.

Небольшой how-to как прикрутить letsencrypt для нового сайта.

Инструменты:
1. nginx
2. acme.sh

Acme.sh — это набор sh скриптов для регистрации ключей и получения сертификатов.
Чем он хорош? тем что работает там где есть sh и curl, а значит почти везде.

Ранее, я всегда указывал webroot и использовал временную директорию в качестве места для файлов.

Сейчас acme.sh  научился работать в дополнительных режимах: в standalone ( когда он запускает nc в режиме сервера и выдает нужные значения сам) и в режиме stateless (он просто выдает значение, без обращений к фс).

Оба этих режима прекрасны тем, что позволяют дополнительно обезопасить сервер, а второй режим, еще и незначительно ускорить. Вернее сократить IO на несколько запросов.

И так.


Пример конфига для standalone:

server {

listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
location / {
return 301 https://$host$request_uri;
}

location ~ «^/\.well-known/acme-challenge/([-_a-zA-Z0-9]+)$»  {
proxy_pass http://localhost:30000;
}
}

И тут все очевидно: все обращения на acme-challenge будут проксироваться на локалхост с портом 3000.

И все.

Перезапускаем nginx, запускаем acme:

acme.sh —issue -d yourdomen.cool —standalone —httpport 30000

Acme.sh начнет выполнение скриптов и поднимет nc в режиме сервера на 3000 порту. После чего будет дана команда acme серверу, чтобы тот прошел валидацию. И нгинкс перенаправит запрос на nc, валидация пройдет и после чего nc будет остановлен.

Кстати, порт дополнительный в фаерволе открывать не надо.

Далее все как обычно. правим пути в ssl блоке и пользуемся.

 

Пример конфига для режима stateless:

Сначала нам надо зарегистрироваться в letsencrypt:

acme.sh —register-account

После выполнения команды получаем это:

[Mon Aug 6 10:20:20 CST 2017] ACCOUNT_THUMBPRINT=’znachenie’

Записываем в буфер это самое znachenie.

Конфиг для нгинкс будет таким:

server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
location / {
return 301 https://$host$request_uri;
}
location ~ «^/\.well-known/acme-challenge/([-_a-zA-Z0-9]+)$» {
default_type text/plain;
return 200 «$1.znachenie»;
}
}

Сохраняем, перезапускаем нгинкс, запискаем акме:

acme.sh —issue -d super.domain —stateless

И все как обычно. правим пути в ssl блоке и пользуемся.