对于我们的内部测试,我需要在我们的 IIS 服务器(它托管两个应用程序:ASP.NET Web GUI 和 Web 服务)和客户端(以两种可能的方式访问服务器:使用浏览器的 Web GUI 和使用 WinForms 创建的客户端的 Web 服务)之间设置相互 SSL 身份验证。当测试完成并评估结果时,我必须向我们的客户提供一些指示,说明如何在他们的环境中进行设置和配置 - 一个封闭的企业环境,可通过 VPN 通过非公开 URL 访问。
我对 PKI、密钥和证书非常熟悉,只是在 HTTPS 环境中对 PKI 缺乏经验。借助一些可用工具(主要是 XCA),我成功创建了根 CA 证书、服务器证书和一堆客户端证书;我将它们安装在 IIS 和客户端存储中,一切运行顺利,但存在一些问题和疑问:
- 服务器证书所需的(扩展)密钥使用值有哪些?在我的测试证书中,我获得了
Digital Signature
、Non Repudiation
和Key Encipherment
扩展TLS Web Server Authentication
- 我是否遗漏了任何内容?这些都是必需的吗? - 关于客户端证书的相同问题:需要哪些密钥用法?我的测试证书有
Digital Signature
、Key Encipherment
和Data Encipherment
扩展TLS Web Client Authentication
- 我是否遗漏了任何内容?所有这些都是必需的吗? - 客户端证书还应具备其他特殊功能吗?
- 服务器证书应将其名称列在 SAN 列表中作为 DNS 条目(或 IP,如果通过 IP 地址访问,对吗?)。但是其可分辨名称的主题 CN 字段呢?它应该有任何特定形式吗?应该是空的吗?非公共地址,例如,可以
mytestenv.mycompany.lan
用作 SAN 吗?目前在我的测试服务器证书中,我只有一个主题 CN 集,没有 SAN DNS 条目,我认为我需要添加它,对吗? - 我需要采取什么措施(除了在浏览器或 Windows 商店中将 CA 证书添加到受信任的 CA 之外)来防止浏览器显示有关网站不安全的整页安全警告?我认为没有“绿锁”或地址栏中的某些警告或其他东西我可以忍受,但例如 Chrome 显示整页安全错误,并且直到我为服务器配置安全例外时才显示网页。我该如何防止这种情况发生?缺少 SAN 可能是原因吗?IE 和 Firefox 显示页面。
- DV/OV/EV、证书透明度、浏览器传入的“HTTPS 末日”或其他东西是否会以某种方式影响我(以及可能客户的)的设置?我需要特别注意这些吗?
如果可能的话,我会对一般性评论以及特定服务器(尤其是 IIS)和浏览器的要求感兴趣(在客户的基础架构中,这些主要是 IE 11+ 和 Edge)。
答案1
密钥用法
对于 TLS,您需要密钥加密和数字签名以及适用的 TLS Web 服务器/客户端身份验证扩展用法。不使用不可否认性。理论上,密钥协议可用于 ECDH,而不是 ECDHE。请参阅https://security.stackexchange.com/a/24107
证书透明度。
谷歌正以其巨大的影响力推动这一进程。在向透明日志提交证书时需要考虑的一件重要事情是,它们实际上是域名(或通配符)的发布。我注意到在获得 letsencrypt 证书后立即向网络服务器发出查询,理论上这甚至可以在您的 SSL 证书实际安装之前发生,因为透明日志具有预发布。
4 月 Chrome 更新:
从:https://groups.google.com/a/chromium.org/forum/#!topic/ct-policy/wHILiYf31DE
自 2015 年 1 月起,Chrome 要求扩展验证 (EV) 证书必须符合 CT 要求才能获得 EV 状态。2018 年 4 月,此要求将扩展到所有新颁发的公开信任证书 - DV、OV 和 EV - 不符合此政策的证书在 Chrome 评估时将不会被识别为受信任的证书。由用户或管理员添加的本地信任或企业 CA 颁发的证书不受此要求的约束。
具有当地名称的 SAN
据我所知没有问题。尽管 .local 是一个特别讨厌的 TLD,因为它与多播 DNS 一起使用。
其他需求
对于任何成熟的系统,都需要 CRL 和 OCSP 服务器。一些子进程甚至比浏览器本身的要求更高。以 IE11 中的 Java 插件为例。如果 Webstart 应用程序或小程序在层次结构中有一个无法访问的 CRL 或 OCSP 服务器,则浏览器框架可能会在几分钟内保持完全空白。此外,如果 Apache Web 服务器使用 OCSP 装订,那么 OCSP 服务器最好在 Web 服务器本身调用时做出响应,否则不幸的是,对于 Apache,所有客户端都将显示错误,直到服务器再次装订响应。
授权密钥 ID。使用此功能可以从因错误或泄露而撤销的中间证书中恢复。
CAA 记录。公共 CA 在颁发证书时需要检查此记录。请参阅https://scotthelme.co.uk/certificate-authority-authorization/
更多参考: