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

Как защитить корневой домен и поддомены с подстановочными знаками с помощью одного сертификата SSL?

Я пытаюсь создать самозаверяющий сертификат SSL для защиты обоих example.com и *.example.com. Глядя на ответы на этот и этот вопросы, похоже, одинаковое количество людей согласны и не согласны с тем, можно ли это сделать. Однако интернет сайт от центра сертификации, кажется, предполагает, что это могло быть сделано.

В настоящий момент в мой файл конфигурации openssl добавлены следующие изменения:

[req]
req_extensions = v3_req

[req_distinguished_name]
commonName = example.com

[v3_req]
subjectAltName = @alt_names

[alt_names]
DNS.1 = example.com
DNS.2 = *.example.com

Я попробовал вышеуказанную конфигурацию и сгенерировал сертификат. При переходе к https://example.com, он выдает обычное предупреждение о том, что сертификат является «самоподписанным». После принятия я перехожу к https://abc.example.com и появляется дополнительное предупреждение о том, что сертификат действителен только для example.com.

Указаны только данные сертификата example.com в иерархии сертификатов без каких-либо признаков наличия поддомена с подстановочными знаками.

Я не уверен, связано ли это с неправильной конфигурацией, или что общее имя должно иметь подстановочный знак, или что это невозможно сделать.

Дальнейшее обновление:

Вот что я получаю, просматривая запрос сертификата с помощью openssl:

# openssl req -text -noout -in eg.csr
Certificate Request:
 Data:
  Version: 0 (0x0)
  Subject: C=xx, L=Location, O=Example Pte Ltd, CN=example.com/emailAddress=admin@example.com
  Subject Public Key Info:
  Public Key Algorithm: rsaEncryption
  Public-Key: (1024 bit)
  Modulus:
   00:c1:c7:0d:7e:b7:48:d3:b8:9a:5a:88:db:c2:91:
   ...
  Exponent: 65537 (0x10001)
  Attributes:
  Requested Extensions:
   X509v3 Basic Constraints: 
    CA:FALSE
   X509v3 Key Usage: 
    Digital Signature, Non Repudiation, Key Encipherment
   X509v3 Subject Alternative Name: 
    DNS:example.com, DNS:*.example.com
  Signature Algorithm: sha1WithRSAEncryption
   4d:4a:8a:d9:32:e2:31:c5:6c:8c:6a:2a:a6:c3:17:63:dd:a4:
   ...

И вот что я получаю, просматривая сертификат:

# openssl x509 -in eg.crt -noout -text
Certificate:
 Data:
  Version: 1 (0x0)
  Serial Number:
   d0:9e:b3:d5:83:b5:a1:0d
  Signature Algorithm: sha1WithRSAEncryption
  Issuer: C=xx, L=Location, O=Example Pte Ltd, CN=example.com/emailAddress=admin@example.com
  Validity
   Not Before: Sep 30 10:16:34 2012 GMT
   Not After : Sep 30 10:16:34 2013 GMT
  Subject: C=xx, L=Location, O=Example Pte Ltd, CN=example.com/emailAddress=admin@example.com
  Subject Public Key Info:
   Public Key Algorithm: rsaEncryption
   Public-Key: (1024 bit)
   Modulus:
    00:c1:c7:0d:7e:b7:48:d3:b8:9a:5a:88:db:c2:91:
    ...
  Exponent: 65537 (0x10001)
  Signature Algorithm: sha1WithRSAEncryption
   3d:98:0d:f1:1b:06:27:63:09:14:4d:41:37:49:eb:70:15:1c:
   ...

При просмотре в браузере поле сертификата должно содержать расширение для альтернативного имени субъекта. Но этого не было. Я полагаю, что при создании сертификата могут возникнуть некоторые проблемы, если это действительно возможно.

Да, отлично работает. Вы обычно будете видеть подстановочный знак в качестве субъекта сертификата в подстановочных знаках, выдаваемых общедоступными центрами сертификации, с базовым доменом в качестве альтернативного имени субъекта, но я считаю, что работает и обратное расположение.

Взгляните на созданный вами сертификат - правильно ли включены alt_names в сертификат?