ECDSA证书可以具有RSA签名吗?

3

我需要关于ECDSA证书的相关信息。据我所知,ECDSA证书应该包含ECDSA签名,但我发现Facebook和Google服务器证书使用了带有RSA签名的ECDSA证书。

是否可能拥有带有RSA签名的ECDSA证书?


ECDSA和RSA在任何情况下都不兼容,所以我发现“我看到Facebook和Google服务器证书具有带有RSA签名的ECDSA证书”。请展示你所看到的。此外,这不是一个编程问题,可能更适合[security.se]。 - undefined
我捕获了数据包,发现Facebook选择了ECDHE_ECDSA加密方式,这意味着它希望通过ECDSA证书进行身份验证,并将发送ECDSA证书。以下是数据包捕获的输出结果... - undefined
1
签名算法: 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: - undefined
同一个证书也可以在浏览器上看到。 - undefined
2个回答

6
证书的签名是由颁发者使用颁发者的密钥创建的。因此,如果证书A内部有一个ECC密钥(即ECDSA证书),但颁发者B有一个RSA密钥,则A的签名将是RSA签名,因为这是颁发者用于签名的密钥。
例如,在facebook.com的情况下,证书本身具有ECC密钥,但发行方证书DigiCert SHA2 High Assurance Server CA具有RSA密钥。因为颁发者使用颁发者的密钥对facebook证书进行签名,所以必须使用RSA。

非常感谢您的回复。 - undefined
以下是RFC-4492的摘录,当选择ECDHE_ECDSA时,期望使用ECDSA签名。 - undefined
ECDHE_ECDSA 证书必须包含一个支持 ECDSA 的公钥。它必须由 ECDSA 签名。 - undefined
1
@rakeshsharma:如果你想要更深入的信息,我推荐访问http://security.stackexchange.com/questions/14207/does-a-ca-need-to-have-the-same-type-of-key-as-the-certificates-it-is-signing-r - undefined
1
@rakeshsharma:你把认证和服务器证书以及证书的验证搞混了。认证是检查服务器是否拥有证书中公钥对应的私钥。验证是检查证书是否直接或间接地由可信任的机构签名。密码只描述了认证部分。 - undefined
显示剩余7条评论

2

Steffen的回答对于X.509标准和许多基于标准SSL库的浏览器是正确的。然而,在这个现实世界中,我发现一些设备在TLS 1.2协商中拒绝具有RSA签名的ECDSA证书。

我认为原因是设备作者遵循了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.

因此,请注意这样的设备存在。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接