У меня есть два очень похожих самоподписанных сертификата, созданных двумя разными способами.Открывает ли opensl самоподписанные сертификаты без основных ограничений?
Чтобы проверить их у меня есть:
- Добавлена запись в моих хозяев файл для local.mydomain.com
- Настройка сервера Nginx для прослушивания этого домена на порт 443 с сертификатом испытываемой плюс соответствующий закрытый ключ (я тогда переключить серт и перезапустить Nginx для сравнения)
- Подключен к Nginx с
openssl s_client -connect local.mydomain.com -CAfile /path/to/the/ca/cert.pem
Один сертификат не удается:
CONNECTED(00000003)
depth=0 CN = local.mydomain.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 CN = local.mydomain.com
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
0 s:/CN=local.mydomain.com
i:/CN=local.mydomain.com
---
Один сертификат преуспевает:
CONNECTED(00000003)
depth=0 CN = local.mydomain.com
verify return:1
---
Certificate chain
0 s:/CN = local.mydomain.com
i:/CN = local.mydomain.com
---
Я сравниваю детали сертификатов с openssl x509 -in /path/to/the/ca/cert.pem -text -noout
неисправного серт:
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
47:dc:02:c7:11:fc:8e:96:45:22:aa:6b:23:79:32:ca
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=local.mydomain.com
Validity
Not Before: Nov 18 11:55:31 2016 GMT
Not After : Nov 18 12:15:31 2017 GMT
Subject: CN=local.mydomain.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
<stuff>
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage: critical
Digital Signature, Key Encipherment
X509v3 Extended Key Usage:
TLS Web Client Authentication, TLS Web Server Authentication
X509v3 Subject Alternative Name:
DNS:local.mydomain.com
X509v3 Subject Key Identifier:
6D:4F:AF:E4:60:23:72:E5:83:27:91:7D:1D:5F:E9:7C:D9:B6:00:2A
Signature Algorithm: sha256WithRSAEncryption
<stuff>
Рабочий серт:
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
9b:6b:3d:a3:b9:a3:a4:b4
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=local.mydomain.com
Validity
Not Before: Nov 19 13:27:30 2016 GMT
Not After : Nov 19 13:27:30 2017 GMT
Subject: CN=local.mydomain.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
<stuff>
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
03:E7:DA:AA:2E:CC:23:ED:C5:07:3D:E1:33:86:F5:22:D4:76:EB:CB
X509v3 Authority Key Identifier:
keyid:03:E7:DA:AA:2E:CC:23:ED:C5:07:3D:E1:33:86:F5:22:D4:76:EB:CB
X509v3 Basic Constraints:
CA:TRUE
Signature Algorithm: sha256WithRSAEncryption
57<stuff>
Глядя на это, наиболее очевидная разница заключается в том, что рабочий сертификат имеет CA:TRUE
под номером X509v3 Basic Constraints
. Тем не менее, от чтения по сети, я был под впечатлением, что самоподписывающемуся не были сертификаты предназначены быть УЦ, в частности, это говорит, что они, как правило, не будет:
https://security.stackexchange.com/questions/44340/basic-self-signed-certificate-questions
Ответ там говорит, что, будучи самозаверяющий не участвует в CA. Но, возможно, openssl требует, чтобы самоподписанные сертификаты имели такой набор?
Лучшим сайтом для запроса этого вопроса может быть security.stackexchange.com. –
OK Я тоже попробую там, спасибо! – junichiro
Существует два типа сертификатов. Сначала это сертификаты CA. Сертификаты CA могут выдавать другие сертификаты. Они сигнализируются с помощью 'Basic Constraint CA = Yes'. Второй - сертификат конечного объекта. Сертификаты конечных объектов - это сертификаты сервера и клиента. Это листовые сертификаты. Сертификат A * Self-Signed * является сертификатом, в котором * Эмитент = Тема *, * Идентификатор ключа полномочий = Идентификатор открытого ключа субъекта * и т. Д. Это означает, что он означает самозапись. Как сертификат конечной сущности, так и сертификат ЦС могут быть самоподписаны. Когда его CA, он обычно называется * Root CA *. – jww