Назад | Перейти на главную страницу

IIS отправляет неверный промежуточный сертификат SSL

Я только что установил новый сертификат SSL (от StartCom) на один из наших серверов и заметил, что в Chrome для сайта отображается значок перечеркнутого замка, поэтому я начал исследовать, почему это так. Оказалось, это потому, что промежуточный сертификат, отправленный в браузер, использует старый алгоритм подписи SHA-1.

Чтобы быть уверенным, я взял наш сертификат (как первоначально был предоставлен центром сертификации), снова запустил его через OpenSSL, чтобы объединить его с промежуточным сертификатом SHA-2 (я загрузил его с сайта центра сертификации) и снова обновил его в IIS. Это все равно не помогло.

Я провел тест на SSL Labs и вот что он показывает:

Я не знаю, откуда берется показанный здесь промежуточный сертификат (с отпечатком пальца «a1ac ...»).

  1. Он не установлен на сервере - я проверил это, пытаясь найти его в консоли оснастки «Сертификаты» сервера:

  1. Это не часть сертификата, который я назначил сайту - это результат работы certutil -dump cert.pfx:

    ================ Certificate 0 ================
    ================ Begin Nesting Level 1 ================
    Serial Number: 1cab36472d9c51
    Issuer: CN=StartCom Certification Authority, OU=Secure Digital Certificate Signing, O=StartCom Ltd., C=IL
     NotBefore: 10/14/2007 10:57 PM
     NotAfter: 10/14/2022 10:57 PM
    Subject: CN=StartCom Class 2 Primary Intermediate Server CA, OU=Secure Digital Certificate Signing, O=StartCom Ltd., C=IL
    Non-root Certificate
    Template: 
    Cert Hash(sha1): 06 49 69 b7 f4 d6 a7 4f d0 98 be 59 d3 79 fa e4 29 a9 06 fb
    ----------------  End Nesting Level 1  ----------------
    No key provider information
    Cannot find the certificate and private key for decryption.
    
    ================ Certificate 1 ================
    ================ Begin Nesting Level 1 ================
    Serial Number: 07aa747ba37df3
    Issuer: CN=StartCom Class 2 Primary Intermediate Server CA, OU=Secure Digital Certificate Signing, O=StartCom Ltd., C=IL
     NotBefore: 7/15/2015 3:41 AM
     NotAfter: 7/15/2017 3:23 AM
    Subject: E=jan.valenta@idioma.com, CN=*.idioma.com, O=IDIOMA, s.r.o., L=Praha, S=Praha, C=CZ
    Non-root Certificate
    Template: 
    Cert Hash(sha1): 02 90 be 6e 6e b8 a5 7a ff aa a2 ac 95 b8 61 2a 3d c7 80 f6
    ----------------  End Nesting Level 1  ----------------
      Key Container = <hidden>
      Unique container name: <hidden>
      Provider = Microsoft Enhanced Cryptographic Provider v1.0
    Encryption test passed
    CertUtil: -dump command completed successfully.
    

Обратите внимание, что подпись промежуточного сертификата не соответствует выходным данным SSL Labs. Однако он соответствует тому, что я вижу, когда открываю сертификат сайта в IIS, перехожу к его пути сертификации, открываю промежуточный сертификат и вижу его подпись.

Что заставляет IIS отправлять именно этот промежуточный сертификат?

ОБНОВИТЬ:

Публичная часть моего сертификата (тот самый файл CRT, который я получил от центра сертификации) Вот.

Выход certutil -verifystore CA "StartCom Class 2 Primary Intermediate Server CA":

CA "Intermediate Certification Authorities"
================ Certificate 3 ================
Serial Number: 1cab36472d9c51
Issuer: CN=StartCom Certification Authority, OU=Secure Digital Certificate Signing, O=StartCom Ltd., C=IL
 NotBefore: 10/14/2007 10:57 PM
 NotAfter: 10/14/2022 10:57 PM
Subject: CN=StartCom Class 2 Primary Intermediate Server CA, OU=Secure Digital Certificate Signing, O=StartCom Ltd., C=IL
Non-root Certificate
Cert Hash(sha1): 06 49 69 b7 f4 d6 a7 4f d0 98 be 59 d3 79 fa e4 29 a9 06 fb
No key provider information
Cannot find the certificate and private key for decryption.
Encryption test passed
Verified Issuance Policies:
    1.3.6.1.4.1.23223.1.1.1
Verified Application Policies:
    1.3.6.1.5.5.7.3.1 Server Authentication
    1.3.6.1.5.5.7.3.2 Client Authentication
    1.3.6.1.5.5.7.3.4 Secure Email
    1.3.6.1.5.5.7.3.3 Code Signing
    1.3.6.1.5.5.7.3.8 Time Stamping
    1.3.6.1.4.1.311.10.3.4 Encrypting File System
    1.3.6.1.5.5.7.3.6 IP security tunnel termination
    1.3.6.1.5.5.7.3.7 IP security user
Certificate is valid
CertUtil: -verifystore command completed successfully.

Выход certutil -GroupPolicy -verifystore CA "StartCom Class 2 Primary Intermediate Server CA":

CA "Intermediate Certification Authorities"
CertUtil: -verifystore command FAILED: 0x80090011 (-2146893807 NTE_NOT_FOUND)
CertUtil: Object was not found.

Это не вина IIS. Похоже, вы загрузили неправильный промежуточный сертификат CA или неправильно объединили сертификаты с OpenSSL.

IIS внутренне создает цепочку сертификатов и использует эти сертификаты (кроме корневого сертификата, который не передается во время подтверждения SSL) для отправки клиенту. Даже если сертификат не представлен в магазине, IIS может использовать расширение сертификата доступа к информации о полномочиях для получения отсутствующего сертификата эмитента.

Судя по вашим выводам, промежуточный сертификат CA (в пакете PFX) не является правильным эмитентом вашего сертификата. Если бы вы могли отправить нам (или опубликовать здесь) публичную часть вашего сертификата, я бы предоставил больше информации о том, что происходит. Но, скорее всего, проблема на стороне StartCom.

Редактировать 17.07.2015

Я изучил ваш вывод и обнаружил, что StartSSL приняла неверное решение, когда обновила свой промежуточный сертификат ЦС. Они повторно использовали пару ключей, и в результате для вашего сертификата могут быть сгенерированы несколько идентичных цепочек через разные промежуточные сертификаты CA и один корень. В зависимости от ряда факторов, любая цепочка может быть выбрана механизмом цепочки.

Хорошей практикой является обновление сертификата CA с новой парой ключей, когда в сертификате CA изменена какая-либо важная информация.

Что делать (если возможно):

  1. удалить привязки в IIS.
  2. экспортировать сертификат SSL в PFX. В мастере экспорта снимите флажок с опции, которая включает все сертификаты в цепочке, и отметьте, чтобы удалить закрытый ключ, если экспорт будет успешным.
  3. удалите сертификат из магазина и очистите кеш CryptoAPI: certutil -urlcache * delete.
  4. установите соответствующий сертификат CA StartSSL в Local Machine \ Intermediate CAs: (https://www.startssl.com/certs/class2/sha2/der/sub.class2.server.sha2.ca.crt)
  5. установить экспортированный PFX в машинное хранилище (личный контейнер). Вы можете отметить закрытый ключ как экспортируемый во время операции импорта.
  6. Дважды щелкните сертификат, перейдите на вкладку «Путь сертификации», выберите промежуточный сертификат ЦС -> «Просмотр сертификата» и проверьте, является ли это правильным сертификатом SHA256.
  7. настроить привязки SSL в IIS.

Хотя я не могу комментировать конкретно StartCom, у меня были аналогичные проблемы в прошлом от поставщиков, меняющих с SHA 1 на SHA 2, обычно проблемы с сертификатами перекрестной подписи.

Лучше всего найти все промежуточные и корневые сертификаты, возвращаемые вашим сервером в текущий момент, и удалить промежуточные и корневые записи.

В вашем случае это будут «ЦС первичного промежуточного сервера StartCom класса 2» и «Центр сертификации StartCom». Вы, вероятно, захотите сначала экспортировать их, чтобы быть в безопасности.

На этом этапе вы должны иметь возможность импортировать новые сертификаты из пакета CA от поставщика.