Неполная цепочка сертификатов TLS — как исправить
Браузер открывает сайт, а curl, Android и API-клиенты — нет. Причина — сервер не отдаёт промежуточный сертификат.
Что не так
Сервер отдаёт только сертификат сайта без промежуточного (intermediate). Десктопные браузеры часто достраивают цепочку сами, поэтому «у меня всё открывается». А curl, Java, Go, старые Android, вебхуки платёжных систем падают с unable to get local issuer certificate.
Как исправить
Отдавайте fullchain — сертификат сайта + промежуточные (корневой не нужен).
nginx
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # не cert.pem
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
Apache 2.4.8+: SSLCertificateFile — тот же fullchain.
Сертификат от УЦ (не Let's Encrypt): склейте файлы в порядке «сайт → промежуточные»:
cat example.com.crt intermediate.crt > fullchain.pem
После nginx -t && nginx -s reload проверьте в SSL Checker: цепочка должна быть полной.
Проверка из консоли: openssl s_client -connect example.com:443 -servername example.com -showcerts — должно быть больше одного сертификата.
