Мне нужна информация, относящаяся к сертификатам ECDSA. Насколько я знаю, сертификат ECDSA должен содержать подпись ECDSA, но я вижу, что сертификаты facebook и google server имеют сертификаты ECDSA с подписью RSA. Возможно ли иметь сертификаты ECDSA с сигнатурами RSA?Могут ли сертификаты ECDSA иметь подпись RSA?
ответ
Подпись для сертификата создается эмитентом с использованием ключа эмитента. Таким образом, если сертификат A содержит ключ ECC внутри (то есть сертификат ECDSA), но у эмитента B есть ключ RSA, тогда подпись для A будет сигнатурой RSA, потому что это то, что эмитент имеет для подписания.
Например, в случае facebook.com сам сертификат имеет ключ ECC, но сертификат эмитентов DigiCert SHA2 CA с высоким уровнем достоверности имеет ключ RSA. Поскольку подпись для сертификата facebook выполняется эмитентом с ключом эмитентов, он также должен использовать RSA.
Большое спасибо за ваш ответ. –
Мой вопрос здесь, если сертификат подписан ключами RSA, тогда он будет на основе RSA аутентификации сервера клиентом, а не ECDSA ... тогда шифр должен быть похож на ECDHE_RSA, а не ECDHE_ECDSA .. –
Ниже приведена выдержка из RFC-4492 .. которая ожидает подписи в ECDSA при выборе ECDHE_ECDSA ... –
Ответ Штеффена верен для стандарта X.509 и многих браузеров , которые основаны на стандартных библиотеках SSL, поддерживают этот случай. Однако в этом суровом реальном мире я обнаружил, что некоторые устройства отказываются от сертификата ECDSA, который имеет подписи RSA, с переговорами TLS 1.2.
Я думаю, что причина в том, что авторы устройств следовали RFC-4492, (** мой)
2.2. ECDHE_ECDSA
In ECDHE_ECDSA, the server's certificate **MUST** contain an ECDSA-
capable public key and **be signed with ECDSA.**
The server sends its ephemeral ECDH public key and a specification of
the corresponding curve in the ServerKeyExchange message. These
parameters MUST be signed with ECDSA using the private key
corresponding to the public key in the server's Certificate.
хотя RFC-5246, TLS1.2, ослабил это ограничение. (** является моим):
7.4.4. Certificate Request
...
If the client provided a "signature_algorithms" extension, then all
certificates provided by the server MUST be signed by a
hash/signature algorithm pair that appears in that extension. **Note
that this implies that a certificate containing a key for one
signature algorithm MAY be signed using a different signature
algorithm (for instance, an RSA key signed with a DSA key). This is
a departure from TLS 1.1, which required that the algorithms be the
same.** Note that this also implies that the DH_DSS, DH_RSA,
ECDH_ECDSA, and ECDH_RSA key exchange algorithms do not restrict the
algorithm used to sign the certificate. Fixed DH certificates MAY be
signed with any hash/signature algorithm pair appearing in the
extension. The names DH_DSS, DH_RSA, ECDH_ECDSA, and ECDH_RSA are
historical.
Следует помнить, что такое устройство существует.
ECDSA и RSA несовместимы, поэтому я нахожу * «Я вижу, что сертификаты facebook и google server имеют сертификаты ECDSA с сигнатурой RSA» *. Пожалуйста, покажите, что вы видите. Кроме того, это не вопрос программирования и может быть лучше подходит для [security.se]. –
Я захватил пакеты, и я вижу, что facebook выбирает шифр ECDHE_ECDSA, который означает, что он хочет получить аутентификацию по сертификату ECDSA и отправит Cetificate ECDSA, следуя за o/p захвата пакета ... –
Алгоритм подписи: sha256WithRSAEncryption aa : 91: ae: 52: 01: 8c: 60: f6: 02: b6: 94: eb: af: 6e: eb: dd: 3c: c8: e1: 6f: 17: ab: b8: 28: 80: ec: dc: 54: 82: 56: 24: c1: 16: 08: e1: c2: –