Let’s Encrypt: SSL и ошибка SERVFAIL looking up CAA for domain.com

Автор: | 29/07/2021

Отвалился один из сайтов, начал падать с ошибкой Connection reset.

По конфигам NGINX всё хорошо, должен работать.

В логах ошибок NGINX тоже пусто, конфиги PHP-FPM правильные.

Проверяем curl-ом:

[simterm]

$ curl -Iv https://example.setevoy.org.ua/ 
*   Trying 139.59.205.180:443...
* Connected to example.setevoy.org.ua (139.59.205.180) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* OpenSSL SSL_connect: Connection reset by peer in connection to example.setevoy.org.ua:443 
* Closing connection 0
curl: (35) OpenSSL SSL_connect: Connection reset by peer in connection to example.setevoy.org.ua:443

[/simterm]

Содержание

Причина

Так как ошибка выше прилетает от SSL_connect, то первая мысль – проверить сертификат, хотя если бы он проекспайрился – ошибка была бы другая.

Тем не менее, идём пробовать обновить сертификат:

[simterm]

root@rtfm-do-production-d10:/etc/nginx/conf.d# certbot renew
...
Attempting to renew cert (example.setevoy.org.ua) from /etc/letsencrypt/renewal/example.setevoy.org.ua.conf produced an unexpected error: Failed authorization procedure. example.setevoy.org.ua (http-01): urn:ietf:params:acme:error:dns :: DNS problem: SERVFAIL looking up CAA for setevoy.org.ua - the domain's nameservers may be malfunctioning. Skipping.
...

DNS problem: SERVFAIL looking up CAA for setevoy.org.ua – the domain’s nameservers may be malfunctioning.” – хорошо, ошибку увидели.

Но почему ошибка от корневого домена – setevoy.org.ua? И откуда проверка CAA-записи? Раньше не было такого.

Ладно, проверяем, работает ли DNS домена – находим его name servers:

root@rtfm-do-production-d10:/etc/nginx/conf.d# whois setevoy.org.ua | grep nserver
nserver:          ns-1083.awsdns-07.org
nserver:          ns-2030.awsdns-61.co.uk
nserver:          ns-271.awsdns-33.com
nserver:          ns-721.awsdns-26.net

[/simterm]

Проверяем, отвечает ли DNS:

[simterm]

root@rtfm-do-production-d10:/etc/nginx/conf.d# dig @ns-1083.awsdns-07.org setevoy.org.ua +short
139.59.205.180

[/simterm]

Всё хорошо.

Гуглим про CAA, находим ветку обсуждения тут>>> и вот этот пост от Namecheap, проверяем, есть ли у меня CAA на корневом домене:

Хм… А у Google – есть:

[simterm]

root@rtfm-do-production-d10:/etc/nginx/conf.d# dig google.com CAA +short
0 issue "pki.goog"

[/simterm]

У rtfm.co.ua, кстати, тоже нету – но тут (пока) SSL обновляется без проблем. Может, на следующем апдейте отвалится, посмотрим.

Решение

Идём в Route53, добавляем запись:

Выбираем тип CAA, значение указываем как 0 issue "letsencrypt.org" – разрешаем выдачу сертификатов от Let’s Encrypt:

Проверяем, добавилась ли запись и обновились ли DNS:

[simterm]

root@rtfm-do-production-d10:/etc/nginx/conf.d# dig setevoy.org.ua CAA +short
0 issue "letsencrypt.org"

[/simterm]

Ещё пробуем обновить сертификат:

[simterm]

root@rtfm-do-production-d10:/etc/nginx/conf.d# certbot renew
...
Congratulations, all renewals succeeded. The following certs have been renewed:
  /etc/letsencrypt/live/example.setevoy.org.ua/fullchain.pem (success)

[/simterm]

Готово.