Lar*_*335 9 javascript security ssl https ssl-certificate
我有一个Owin自托管C#应用程序,提供超过127.0.0.1:5555的Web API服务(它只侦听localhost,没有外部连接).
使用AngularJS应用程序中的Ajax调用这些Web API服务.另外:Owin应用程序的原因是需要与硬件进行某些交互,这在浏览器中是不可能的.此外,AngularJS应用程序供内部使用,因此我可以控制所使用的浏览器.
以上在HTTP上工作得非常好,但Angular JS应用程序需要使用SSL,除非Owin应用程序也使用SSL(否则会出现"混合内容"错误),这不起作用.
我已经为AngularJS应用程序购买了官方证书,我正在使用Owin localhost的自签名证书.
问题是我在与Owin Web API交谈时从AngularJS应用程序获得"NET :: ERR_CERT_AUTHORITY_INVALID"(来自Chrome的testin)和"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
Run Code Online (Sandbox Code Playgroud)
我错过了什么?如何让Chrome等信任本地主机的SSL证书?
我得到了这个工作(至少足以满足我目前的需求).
我将localhost证书从"证书(本地计算机)>个人>证书" 复制到"证书(当前用户)>个人>证书".这消除了Chrome中的https红色交叉(以及"NET :: ERR_CERT_AUTHORITY_INVALID"消息)以及AngularJS中的"net :: ERR_INSECURE_RESPONSE"错误.
请注意,在我的情况下,localhost证书必须同时位于本地计算机存储和当前用户存储中,否则用于将其绑定到端口5555(对于Owin应用程序)的netsh命令将失败:
netsh http add sslcert ipport=127.0.0.1:5555 certhash=1234555555555555555555511155555555555555 appid={1234a123-1234-1234-1234-123412341234}
SSL Certificate add failed, Error: 1312, A specified logon session does not exist. It may already have been terminated.
Run Code Online (Sandbox Code Playgroud)
Chrome中仍然没有漂亮的绿色挂锁(它现在在垫锁上有一个黄色的小三角形,"这个网站的身份已经过ca.acme.com验证,但没有公开审核记录"),但这样做似乎没有干扰Web API通信,所以应该没问题.
如果有人知道一个简单的方法,让它全部绿色,没有任何警告,我仍然感兴趣,但它并不重要.
| 归档时间: |
|
| 查看次数: |
17132 次 |
| 最近记录: |