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

Почему я получаю несоответствия URL-адресов в моем самозаверяющем сертификате с подстановочными знаками?

Я пытаюсь настроить самозаверяющий сертификат с подстановочными знаками для использования Apache, обычно это довольно просто. Я просто устанавливаю альтернативное имя субъекта с корневым доменом и указываю * .dcrdev.com в поле общего имени. Однако, похоже, это не работает - когда я пытаюсь получить доступ к сайту в Chrome или тестирую его в sslabs, они сообщают о несоответствии URL-адресов при доступе к любому поддомену, например www.dcrdev.com или subdomain1.dcrdev.com. Я не уверен, почему, когда я просматриваю информацию о сертификате в Chrome, общее имя отображается как * .dcrdev.com.

Мой csr:

Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=GB, ST=South Yorkshire, L=Sheffield, O=DCR Holdings, OU=DCR Development, CN=*.dcrdev.com/emailAddress=webmaster@dcrdev.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (4096 bit)
                Modulus:
                lah blah

Мой сертификат:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1048577 (0x100001)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=GB, ST=South Yorkshire, L=Sheffield, O=DCR Holdings, OU=DCR Root Authority, CN=*.dcrdev.com/emailAddress=administrator@dcrdev.com
        Validity
            Not Before: Oct 13 23:41:03 2015 GMT
            Not After : Oct 10 23:41:03 2025 GMT
        Subject: C=GB, ST=South Yorkshire, L=Sheffield, O=DCR Holdings, OU=DCR Development, CN=*.dcrdev.com/emailAddress=webmaster@dcrdev.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (4096 bit)
                Modulus:
               Blah blah
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                83:2D:84:F1:E2:B0:72:30:E6:3B:6A:F6:8E:6A:68:8E:3F:D4:69:44
            X509v3 Authority Key Identifier: 
                keyid:F5:A6:82:E2:DD:52:10:CE:FD:C5:C7:E1:E9:CF:C6:8C:30:26:D7:DC

            X509v3 Subject Alternative Name: 
                DNS:dcrdev.com
            X509v3 Key Usage: 
                Digital Signature, Non Repudiation, Key Encipherment
    Signature Algorithm: sha256WithRSAEncryption
        Blah blah

Crossdupe из https://stackoverflow.com/questions/3093112/certificateexception-no-name-matching-ssl-someurl-de-found .

Общее имя субъекта больше не контролирует сертификаты HTTPS.

AFAICT на самом деле нет стандартного высказывания, но Практика в течение нескольких лет такова, что браузеры и т. д. используют расширение SubjectAlternativeName (SAN), если оно присутствует, и CommonName (CN) в Subject, только если SAN отсутствует. В вашем сертификате присутствует SAN с dcrdev.com, так что только это соответствует.

Обновить: нашел в RFC2818 3.1 :

Если присутствует расширение subjectAltName типа dNSName, оно ДОЛЖНО использоваться в качестве идентификатора. В противном случае ДОЛЖНО использоваться (наиболее конкретное) поле Common Name в поле Subject сертификата. Хотя использование общего имени является существующей практикой, оно устарело, и центрам сертификации рекомендуется использовать вместо него dNSName.

Этот RFC был написан в мае 2000 года, но, насколько я помню, сертификаты, с которыми я столкнулся, начали использовать SAN только ближе к 2010 году. Последний март 2011 года. RFC6125 идентифицированный @JennyD (работает ли он в теле ответа?), является более общим лечением, но прямо говорит

Этот документ также не отменяет правила проверки идентичности службы, представленные в спецификациях для существующих протоколов приложений, опубликованных до этого документа, например, тех, которые приведены в Приложении B.

а приложение B включает RFC2818.

Базовые требования из Форум CA-Browser говорят, что центры сертификации должны выпуск сертификаты с SAN, в то время как Subject.CN устарел, хотя это не является прямым требованием для браузеров / клиентов.

Если вы хотите использовать и домен, и поддомены (только один уровень), поместите две записи dnsName в SAN, одну для dcrdev.com и один для *.dcrdev.com.