Я недавно купил бесплатный сертификат SSL от Comodo. Он поставляется с файлом пакета центра сертификации, который содержит все промежуточные сертификаты, а также корневой сертификат. Когда я запускаю команду "openssl s_client -connect www.mydomain.com:443 -showcerts", он показывает путь к сертификату, который выглядит следующим образом:
глубина = 4 C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root
подтвердить возврат: 1
глубина = 3 C = США, ST = UT, L = Солт-Лейк-Сити, O = Сеть USERTRUST, OU = http://www.usertrust.com, CN = UTN-USERFirst-Hardware
подтвердить возврат: 1
глубина = 2 C = ГБ, ST = Большой Манчестер, L = Солфорд, O = COMODO CA Limited, CN = COMODO Центр сертификации
подтвердить возврат: 1
глубина = 1 C = ГБ, ST = Большой Манчестер, L = Солфорд, O = COMODO CA Limited, CN = EssentialSSL CA
подтвердить возврат: 1
глубина = 0 OU = проверка домена подтверждена, OU = бесплатный SSL, CN = www.mydomain.com
подтвердить возврат: 1
Однако, когда я захожу на www.mydomain.com в любом браузере и смотрю сертификат, представленный сервером, он показывает следующий путь сертификата (взятый из окна сертификата IE9):
- COMODO
- EssentialSSL CA
- www.mydomain.com
Обратите внимание, что в цепочке меньше сертификатов (глубина 2 против 4 от команды openssl) и что корневой сертификат является сертификатом COMODO, а не корневым сертификатом внешнего CA AddTrust. Может кто-нибудь объяснить, почему браузер показывает путь, отличный от команды openssl?
Обратите внимание, что в обоих случаях представленная сервером цепочка сертификатов проходит проверку (проверьте результат 0 из openssl, в браузере нет предупреждений).