【发布时间】:2014-12-22 19:07:26
【问题描述】:
我有一个 Owin 自托管 C# 应用程序,它通过 127.0.0.1:5555 提供 Web API 服务(它只侦听 localhost,没有外部连接)。
这些 Web API 服务是使用 AngularJS 应用程序中的 Ajax 调用的。顺便说一句:Owin 应用程序的原因是需要与硬件进行某些交互,而这在浏览器中是不可能的。另外,AngularJS 应用程序是供内部使用的,所以我可以控制所使用的浏览器。
以上内容在 HTTP 上运行良好,但 Angular JS 应用程序需要使用 SSL,除非 Owin 应用程序也使用 SSL,否则它不起作用(否则会出现“混合内容”错误)。
我已经为 AngularJS 应用程序购买了一个官方证书,并且我正在为 Owin localhost 的东西使用自签名证书。
问题是我在与 Owin Web API 交谈时从 AngularJS 应用程序中得到“NET::ERR_CERT_AUTHORITY_INVALID”(从 Chrome 测试时)和“net::ERR_INSECURE_RESPONSE”。
这是我所做的,概括地说:
我使用 CentOS 机器为 localhost 生成证书并将其导出为 pkcs12 / pfx 格式。我还生成了一个 CA 证书并以同样的方式导出。
使用 MMC,我将运行 Angular 和 Owin 应用程序的 Windows 7 机器上的 localhost 证书导入到证书(本地计算机)> 个人 > 证书中。
我还将 Windows 7 机器上的 CA 证书导入到证书(本地计算机)> 受信任的根证书权限 > 证书
查看 localhost 证书,它显示“颁发给:localhost”,颁发者:“ca.acme.com”,“您有一个与此证书相对应的私钥”,(在证书路径下)“此证书没问题”
CA 证书显示“颁发给:ca.acme.com”、颁发者:“ca.acme.com”、“您拥有与此证书相对应的私钥”、(在证书路径下)“此证书没问题”
netsh http show sslcert
IP:port : 127.0.0.1:5555
Certificate Hash : 1234555555555555555555511155555555555555
Application ID : {1234a123-1234-1234-1234-123412341234}
Certificate Store Name : (null)
Verify Client Certificate Revocation : Enabled
Verify Revocation Using Cached Client Certificate Only : Disabled
Usage Check : Enabled
Revocation Freshness Time : 0
URL Retrieval Timeout : 0
Ctl Identifier : (null)
Ctl Store Name : (null)
DS Mapper Usage : Disabled
Negotiate Client Certificate : Disabled
我错过了什么?如何让 Chrome 等信任本地主机的 SSL 证书?
【问题讨论】:
-
如果这只是为了您自己的测试:直接调用使用该证书的HTTPS URL,并在您的浏览器中添加一个例外。如果您希望它可以在网络上用户的浏览器中随处使用 - 那么您需要获得由受信任的 CA 签名的证书。
-
@CBroe 不用于测试。此外,这将在大量内部计算机上使用;我可以获取 localhost 的官方证书并以某种方式在所有这些证书上使用它吗?由于这只是 localhost 流量(没有敏感数据),我真的没有安全问题。
-
如果它是一个开发环境。那么请参考@Brad Parks 下面的建议......它拯救了我的一天......!谢谢布拉德...
标签: javascript security ssl https ssl-certificate