SHA256服务器证书强制ECDHE密码

时间:2015-02-09 10:40:51

标签: ssl encryption

我在向IIS Web服务器分配新的SHA256证书时遇到了一个奇怪的问题。

服务器启用了SSL 3.0,TLS 1.0,1.1和1.2,并且在使用RSA(而非SHA256RSA)签名的站点上使用服务器证书时,客户端会连接并协商TLS_RSA_WITH_AES_256_CBC_SHA以进行TLS加密。

第二个SHA256证书在网站上使用,然后尝试使用TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA。

奇怪的是,在使用www.ssllabs.com服务器测试检查时,我可以看到,当使用或不使用SHA256证书时,服务器会显示完全不同的密码。

密码套件在使用SHA1证书的网站上展示。

TLS_RSA_WITH_AES_256_CBC_SHA256 TLS_RSA_WITH_AES_256_CBC_SHA TLS_RSA_WITH_AES_128_CBC_SHA256 TLS_RSA_WITH_AES_128_CBC_SHA TLS_RSA_WITH_RC4_128_SHA TLS_RSA_WITH_3DES_EDE_CBC_SHA TLS_ECHDE_RSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA TLS_RSA_WTH_RC4_128_MD5

使用SHA256证书的网站上提供了密码套件。

TLS_ECHDE_RSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

我找不到任何信息来说明为什么会发生这种情况,但我知道TLS_RSA_WITH_AES密码与TLS 1.2兼容,并且似乎没有文献说明服务器证书是否为SHA256,它强制使用Elliptical Curve Difie Helman Exchange进行密钥加密。

任何人都可以解释为什么会这样吗?

亲切的问候

James Tighe

1 个答案:

答案 0 :(得分:0)

我现在设法解决了这个问题,以防其他人得到它。

似乎与用于请求CSR的加密/密钥存储提供程序有关。

如果使用加密API提供程序(例如Microsoft Strong Cryptographic Provider)在Windows Server 2008 R2计算机上生成CSR,并且在生成CSR时未特别提及KeySpec,则会设置 KeySpec = 2 AT_SIGNATURE < / strong>即可。 KeySpec确定密钥是否可用于签名,密钥交换(加密)或两者。

将Cryptography提供程序设置为Crypto API提供程序时,似乎会导致Windows Server 2008 R2计算机完成请求,但默认为 KeySpec = 2 在我们的情况下,这是因为我们生成了一个。由于IIS无法强制使用SHA256作为签名算法,因此与CERTREQ一起使用的INF文件。

如果在.INF文件中将KeySpec设置为 KeySpec = 1 AT_KEYEXCHANGE ,那么这应该有效,尽管我们以不同的方式解决了这个问题。

为了解决此问题,我们更改了.INF文件以设置ProviderName =&#34; Microsoft软件密钥存储提供程序&#34; (CNG提供商)。证书完成后,显示 KeySpec = 0 AT_NONE ,即密钥存储提供商设置为CNG时。

此问题已提交给Microsoft以帮助我们更好地理解,看起来我们在KeySpec行为和密码提供程序的使用方面是正确的。

他们确认.INF文件(或Cert MMC中的客户模板注册)您需要确保KeySpec属性设置为1 AT_KEYEXCHANGE,否则默认为2 AT_SIGNATURE 。如果您使用CNG提供程序,它将默认使用0 AT_NONE并且将正常工作。

我希望这可以帮助其他可能会遇到这个恼人问题的人,因为很难找到解决方案。

亲切的问候

James Tighe