Я пытаюсь проанализировать цепочку сертификатов с использованием запроса HTTPS от Node. Я тестирую его на npmjs.com (а не www.npmjs.com). Когда я тестирую его на OpenSSL, он показывает мне, что цепочка находится в неправильном порядке.Различные порядки цепочек сертификатов при использовании HTTPS/TLS Node по сравнению с OpenSSL s_client
openssl s_client -connect npmjs.com:443 -showcerts
OpenSSL Response First Certificate
subject: /OU=GT40876434/OU=See www.rapidssl.com/resources/cps (c)14/OU=Domain Control Validated - RapidSSL(R)/CN=*.npmjs.com
issuer: /C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA - G3
Следующая Сертификат ->
subject: /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
issuer: /C=US/O=Equifax/OU=Equifax Secure Certificate Authority
Следующая Сертификат ->
subject: /C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA - G3
issuer: /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
Однако, когда я иду к шагу через цепочку сертификатов с помощью запроса HTTPS моего узла, если сокет испускается и я
socket.getPeerCertificate(true)
цепь находится в правильном порядке, и я получаю одну другую сертификат в запросе узла, чем я на запрос openssl.
в Node Response First Certificate:
subject
{ OU:
[ 'GT40876434',
'See www.rapidssl.com/resources/cps (c)14',
'Domain Control Validated - RapidSSL(R)' ],
CN: '*.npmjs.com' }
issuer
{ C: 'US', O: 'GeoTrust Inc.', CN: 'RapidSSL SHA256 CA - G3' }
Следующая Сертификат ->
subject
{ C: 'US', O: 'GeoTrust Inc.', CN: 'RapidSSL SHA256 CA - G3' }
issuer
{ C: 'US', O: 'GeoTrust Inc.', CN: 'GeoTrust Global CA' }
Следующая Сертификат ->
subject
{ C: 'US', O: 'GeoTrust Inc.', CN: 'GeoTrust Global CA' }
issuer
{ C: 'US', O: 'GeoTrust Inc.', CN: 'GeoTrust Global CA' }
Почему это происходит?
Похоже, что сертификаты одинаковы; но похоже, что они заказываются по-разному. Каждая цепочка имеет как «CN = GeoTrust Global CA' *, так и« CN = RapidSSL SHA256 CA - G3' *. Я предполагаю, что Node.js дает вам цепочку после построения пути. Также см. [RFC 4158, Internet X.509 Инфраструктура открытого ключа: создание пути сертификации] (http://www.ietf.org/rfc/rfc4158.txt). – jww
@jww Приведенные сертификаты немного отличаются от сертификата, в котором GeoTrust Inc является субъектом, а эмитент был заменен узлом. –