如何管理自主HTTPS的SSL密钥

Jus*_*nen 7 ssl https self-hosting ssl-certificate

我有Windows服务,在最终用户的计算机上侦听https请求,在这种情况下是否有可接受的创建或分发私钥的方法?我是否应该打包专门针对localhost请求的真正密钥(例如local.mydomain.com)或生成自签名密钥并在安装时添加受信任的根CA?

如果重要,该服务使用Nancy Self Host处理请求,并在SYSTEM用户上运行.我们有一个运行在https上的Web应用程序,它将向服务发出CORS请求,用户将在标准Web浏览器(> = IE10)上使用它.只有安装了服务的机器才会向其发出请求.

谢谢.

Kam*_*oij 1

解决此问题的最佳方法是在本地主机名上创建自签名证书,并在 IE 中添加例外。

有一些服务提供“通过 SSL 的本地主机”,但这些服务都要求使用该服务的所有用户共享私钥,从安全角度来看,这实际上使密钥无法使用。只要您只允许本地网络接口上的连接,您可能不会太关心这一点,但 CA 会尝试撤销这些证书,因为它们会损害 SSL 的完整性(例如,请参见http://readme.localtest.me/) 。

应该可以在 IE11 上发出混合内容(HTTPS 到 HTTP)CORS 请求(请参阅https://social.technet.microsoft.com/Forums/ie/en-US/ffec5b73-c003-4ac3-a0fd-d286d9aee89a /https-to-http-cors-issue-in-ie10?forum=ieitprocurrentver)。您只需确保两个站点都位于受信任区域并允许混合内容。我不太确定 Web 应用程序是否可以/应该被信任来运行混合内容,因此自签名证书更加明确并提供更高级别的信任!

您可能无法使用由受信任的 CA 签名的真实证书,因为 CA 无法根据解析为 127.0.0.1 的主机名验证您的身份。除非您在域名(即*.mydomain.com)上创建通配符证书,该域名也有解析local.mydomain.com到本地计算机的子域,但这可能会干扰 上现有的 SSL 基础设施mydomain.com

如果您已经在主机名上拥有证书,则可以127.0.0.1在客户端hosts文件中将该主机名设置为解决此问题,但这比仅仅制作自签名证书并信任它更麻烦且不那么明确。

顺便说一句:不要依赖localhost自签名密钥的主机名的安全性,如下所述: https: //github.com/letsencrypt/boulder/issues/137。其背后的原因是某些 DNS 解析器localhost向网络发送请求。然后,配置错误或受损的路由器可能会被用来拦截流量。