Содержание

Чтобы обеспечить правильный TLS для ваших служб, вам понадобится сертификат, подписанный доверенным центром сертификации (CA). Самый простой вариант на данный момент - использовать клиент Let's Encrypt, например acme-client.

Настройка

Вам нужно будет настроить httpd-сервер для работы acme-клиента. Рекомендуется использовать openhttpd, нажмите здесь, чтобы узнать, как настроить этот сервер.

Сначала скопируйте шаблон /etc/examples/acme-client.conf:

$ doas cp /etc/examples/acme-client.conf /etc/acme-client.conf
authority letsencrypt {
        api url "https://acme-v02.api.letsencrypt.org/directory"
        account key "/etc/acme/letsencrypt-privkey.pem"
}

authority letsencrypt-staging {
        api url "https://acme-staging.api.letsencrypt.org/directory"
        account key "/etc/acme/letsencrypt-staging-privkey.pem"
}

domain example.com {
        alternative names { secure.example.com }
        domain key "/etc/ssl/private/example.com.key"
        domain full chain certificate "/etc/ssl/example.com.fullchain.pem"
        sign with letsencrypt
}

Замените example.com на ваш домен. Если вы не использовали поддомены раньше:

alternative names { }

- создаст проблемы. По этому, если у вас нет поддоменов, я рекомендую закомментировать эту строку следующим образом:

#        alternative names { secure.example.com }

Теперь запустите клиент:

$ doas acme-client -Fv example.com

Исправление проблем

Если вы столкнулись с ошибками, убедитесь, что:

$ ls -l /var | grep www
drwxr-xr-x  11 root     daemon     512 Mar 28 05:28 www
$ ls -l /var/www
total 36
drwxr-xr-x  2 root  daemon  512 Mar 28 22:16 acme
drwxr-xr-x  2 root  daemon  512 Mar 14 06:12 bin
drwx-----T  2 www   daemon  512 Oct 12 12:34 cache
drwxr-xr-x  2 root  daemon  512 Mar 14 06:12 cgi-bin
drwxr-xr-x  2 root  daemon  512 Mar 14 06:03 conf
drwxr-xr-x  3 root  daemon  512 Oct 12 12:34 htdocs
drwxr-x---  2 root  www     512 Mar 28 05:28 letsencrypt
drwxr-xr-x  2 root  daemon  512 Mar 29 00:00 logs
drwxr-xr-x  2 root  daemon  512 Oct 12 12:34 run

Правильная работа

В случае успеха вы увидите:

$ doas ls -l /etc/ssl/private
-r--------  1 root  wheel  3272 Mar 28 22:16 example.com.key
$ ls -l /etc/ssl/*.pem
-r--r--r--  1 root  wheel    3937 Mar 28 22:16 example.com.fullchain.pem

Вывод работы клиента будет иметь следующий вид. Например, для example.com:

acme-client: /etc/ssl/private/example.com.key: generated RSA domain key
acme-client: /etc/acme/letsencrypt-privkey.pem: generated RSA account key
acme-client: https://acme-v02.api.letsencrypt.org/directory: directories
acme-client: acme-v02.api.letsencrypt.org: DNS: 172.65.32.248
acme-client: 172.65.32.248: tls_close: EOF without close notify
acme-client: 172.65.32.248: tls_close: EOF without close notify
acme-client: dochngreq: https://acme-v02.api.letsencrypt.org/acme/authz-v3/3674632835
acme-client: 172.65.32.248: tls_close: EOF without close notify
acme-client: challenge, token: mylkLrPXTvdyiTbDDybKy7M-0JyqiBr0nOg8UXnJ0uDL, uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/3674632835/-1tUXQ, status: 0
acme-client: /var/www/acme/mylkLrPXTvdyiTbDDybKy7M-0JyqiBr0nOg8UXnJ0uDL: created
acme-client: https://acme-v02.api.letsencrypt.org/acme/chall-v3/3674632835/-1tUXQ: challenge
acme-client: 172.65.32.248: tls_close: EOF without close notify
acme-client: 172.65.32.248: tls_close: EOF without close notify
acme-client: order.status 0
acme-client: dochngreq: https://acme-v02.api.letsencrypt.org/acme/authz-v3/3674632835
acme-client: 172.65.32.248: tls_close: EOF without close notify
acme-client: challenge, token: mylkLrPXTvdyiTbDDybKy7M-0JyqiBr0nOg8UXnJ0uDL, uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/3674632835/-1tUXQ, status: 2
acme-client: 172.65.32.248: tls_close: EOF without close notify
acme-client: order.status 1
acme-client: https://acme-v02.api.letsencrypt.org/acme/finalize/81817869/2815341474: certificate
acme-client: 172.65.32.248: tls_close: EOF without close notify
acme-client: 172.65.32.248: tls_close: EOF without close notify
acme-client: order.status 3
acme-client: https://acme-v02.api.letsencrypt.org/acme/cert/vxsJMODZOeZxwiuyq9Bz6jqgoRRRUak8ZQ3ob: certificate
acme-client: 172.65.32.248: tls_close: EOF without close notify
acme-client: /etc/ssl/example.com.fullchain.pem: created