最近,我的 IIS 7.5 SSL 站点在重启后开始拒绝连接。奇怪的是,可以通过将站点与不同的证书绑定并切换回正确的证书来解决此问题。
失败时,wireshark 显示客户端发送各种 SSL hello 数据包(TLS 1.0、1.1、1.2),服务器以 TCP RST 响应。正常工作时,客户端 hello 几乎相同(相同的密码/压缩/SNI)。IE 和 Chrome 显示的行为相同(内容略有不同,但即时 RST 很常见)这表明很可能是服务器端的问题。
我唯一的提示是随机 SChannel 事件 ID 36870“尝试访问 SSL 服务器凭据私钥时发生致命错误。从加密模块返回的错误代码为 0x8009030d。内部错误状态为 1001。”检查我的库 0x8009030d 是“SEC_E_UNKNOWN_CREDENTIALS”,1001 可能是 MSG_FILE_NOT_FOUND。
基于此,我根据 kb278381 检查了 Crypto/RSA 文件夹的权限,发现权限符合预期。我强制继承了底层文件夹,但行为没有发生任何变化。
如果能提供下一步该看哪里的线索,我们将不胜感激!
答案1
我猜想这是您提到的文件夹权限重置,很可能是通过组策略的安全策略。(对任何重置文件夹权限的行为都要保持怀疑态度)。
另外,只是一个想法 - 自从 CryptoAPI 成为 Crypto Next Generation 以来,私钥的位置已经发生了变化,因此您可能还想检查 ProgramData 文件夹以查看权限是否发生变化。
您可以直接通过证书 MMC 获取证书的私钥权限,因此如果您管理私钥权限,a) 您肯定会看到正确的密钥权限*,并且 b) 您可能会得到关于问题原因的提示。
*实际里程可能在镜子中更大