Нужно ли предоставлять корневой сертификат при установке SSL-сертификата на nginx?
В Qualys SSL test всегда предупреждают меня, что корневой сертификат является дополнительной загрузкой и может быть безопасно удален.
Однако, с сайта Comodo, их руководство по установке cert на nginx
NGINX Needed for this task: * PEM encoded certificates (Root, Intermediate(s) and
Domain/Device) COMBINE (CONCATENATE) MULTIPLE CERTIFICATES INTO ONE FILE
Вы знаете, они являются центром сертификации и являются подлинным ответчиком. Итак, кому я должен доверять?
Обновления: я также собираю больше советов от других CA также
Предложить добавление корневого сертификата
- https://support.globalsign.com/customer/portal/articles/1290470-install-certificate---nginx
- https://support.comodo.com/index.php?/Knowledgebase/List/Index/37/certificate-installation
- https://www.namecheap.com/support/knowledgebase/article.aspx/9419/0/nginx
Предложите не нужен корневой сертификат
- https://www.digicert.com/ssl-certificate-installation-nginx.htm
- https://www.geocerts.com/install/nginx
- https://www.ssllabs.com/ssltest/
Так запутанно?
2 ответа
И Qualys SSL test, и Comodo верны. Comodo является правильным с точки зрения кода на стороне сервера. Nginx должен доверять сертификатам, которые он использует.
С другой стороны, тест Qualys SSL является правильным с точки зрения сетевого протокола. Во время согласования SSL сервер должен отправить свой собственный сертификат SSL и все промежуточные сертификаты CA за исключением корневого сертификата. Ссылка из RFC 5246 §7.4.2:
Certificate_list Это последовательность (цепочка) сертификатов. Сертификат отправителя ДОЛЖЕН быть первым в списке. Каждый следующий сертификат ДОЛЖЕН непосредственно подтверждать предыдущий. Поскольку проверка сертификата требует, чтобы корневые ключи распространялись независимо, самозаверяющий сертификат, который указывает корневой центр сертификации, МОЖЕТ быть исключен из цепочки при условии, что удаленный конец должен уже обладать им для проверки его в любом случае.
Суть проверки цепочки сертификатов заключается в том, что у вас есть локальные доверенные (корневые) сертификаты, и от этого вы откладываете доверие на сертификаты, отправленные партнером. Таким образом, сервер должен отправлять только листовой сертификат и промежуточные сертификаты, необходимые для построения цепочки доверия, из локального корневого сертификата в конечный сертификат. Это означает, что вы не должны отправлять корневой сертификат, но если вы этого не делаете, его обычно игнорируют.
И вы должны убедиться, что вы добавляете сертификаты в правильном порядке, то есть сначала листовой сертификат, а затем цепные сертификаты в правильном порядке подписания. Некоторые серверы или клиенты могут работать в неправильном порядке, но вы не должны на это рассчитывать.