我有一个 Owin 自托管的 C# 应用程序,可以通过 127.0.0.1:5555 提供 Web API 服务(仅在本地主机上监听,没有外部连接)。
这些 Web API 服务使用 AngularJS 应用程序中的 Ajax 进行调用。顺带一提:使用 Owin 应用程序的原因是需要与硬件进行某些交互,而这在浏览器内部是不可能的。此外,AngularJS 应用程序是为内部使用而设计的,因此可以控制所使用的浏览器。
以上内容在 HTTP 上运行非常良好,但是 AngularJS 应用程序需要使用 SSL,这并不起作用,除非 Owin 应用程序也使用 SSL(否则会出现“混合内容”错误)。
我已经购买了 AngularJS 应用程序的官方证书,并为 Owin 的 localhost 使用了自签名证书。
问题是当与 Owin Web API 通信时,我遇到了“NET::ERR_CERT_AUTHORITY_INVALID”(从 Chrome 中测试时)和来自 AngularJS 应用程序的“net::ERR_INSECURE_RESPONSE”。
以下是我大致执行的操作:
我使用 CentOS 盒子生成了用于 localhost 的证书,并将其导出为 pkcs12 / pfx 格式。我还生成了 CA 证书,并以同样的方式导出它。
使用 MMC,我将 localhost 证书导入运行 Angular 和 Owin 应用程序的 Windows 7 计算机中的证书(本地计算机) > 个人 > 证书。
我还将 CA 证书导入 Windows 7 计算机上的“证书(本地计算机)> 受信任的根证书颁发机构 > 证书”。
查看 localhost 证书,它说“颁发给:localhost”,颁发者:“ca.acme.com”、“您拥有与此证书相对应的私钥”(在认证路径下)“此证书没问题”。
CA 证书说“颁发给:ca.acme.com”,颁发者:“ca.acme.com”、“您拥有与此证书相对应的私钥”(在认证路径下)“此证书没问题”。
这些 Web API 服务使用 AngularJS 应用程序中的 Ajax 进行调用。顺带一提:使用 Owin 应用程序的原因是需要与硬件进行某些交互,而这在浏览器内部是不可能的。此外,AngularJS 应用程序是为内部使用而设计的,因此可以控制所使用的浏览器。
以上内容在 HTTP 上运行非常良好,但是 AngularJS 应用程序需要使用 SSL,这并不起作用,除非 Owin 应用程序也使用 SSL(否则会出现“混合内容”错误)。
我已经购买了 AngularJS 应用程序的官方证书,并为 Owin 的 localhost 使用了自签名证书。
问题是当与 Owin Web API 通信时,我遇到了“NET::ERR_CERT_AUTHORITY_INVALID”(从 Chrome 中测试时)和来自 AngularJS 应用程序的“net::ERR_INSECURE_RESPONSE”。
以下是我大致执行的操作:
我使用 CentOS 盒子生成了用于 localhost 的证书,并将其导出为 pkcs12 / pfx 格式。我还生成了 CA 证书,并以同样的方式导出它。
使用 MMC,我将 localhost 证书导入运行 Angular 和 Owin 应用程序的 Windows 7 计算机中的证书(本地计算机) > 个人 > 证书。
我还将 CA 证书导入 Windows 7 计算机上的“证书(本地计算机)> 受信任的根证书颁发机构 > 证书”。
查看 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证书?