2016-09-29 127 views
0

我们正在开发一个本地服务器应用程序(现在写在nodejs中),由我们的网站用来操纵本地文件和文件夹(浏览,上传,下载...)。使用自己的证书创建https服务器应用程序

基本上,客户安装了nodejs应用程序,该应用程序启动了一个监听127.0.0.1的本地服务器。
然后,当网站上需要(例如)本地文件夹列表时,JS脚本查询本地服务器,它返回本地文件夹,并且它们显示在网站上。

问题是,当网站配置为HTTPS时,网站的JS拒绝与HTTP-non-S nodejs应用进行通信。

,我们正在探索各种选择:

    使用部署在应用自签名证书
  • ,并安装在信任他们的机器上,但我觉得会有的时候很多时候,它不会工作
  • 使用local.example.com的“正确”证书,其中local.example.com指向127.0.0.1的DNS条目,但似乎将私钥分发给大多数(如果不是全部的话)证书颁发机构的CGU禁止向公众分发私钥。

现在我想到了另一种意思。 “打包的”HTTPS服务器(用任何语言编写,我不在乎),“生活”在一个exe文件中,是否使用正确的SSL证书签名,使用应用程序的证书?
我不知道我是否有任何意义,我不太清楚证书...

谢谢!

+0

请给我们提供一个参考,以便向CGU禁止向公众分发私人密钥 – AEonAX

+0

另请参阅http://stackoverflow.com/a/22258328/2186591 – AEonAX

+0

我们的系统管理员表示(关于CGU ),但我没有检查自己(我倾向于相信他)。是的,我看到了这个问题。指向localhost的公共DNS很有趣,但还有其他一些问题:例如,我们安装应用程序的一些客户没有互联网访问权限(高安全性限制)。而且我们必须分发公有DNS条目的私钥,因此存在很高的安全风险。 – thomasb

回答

0

我们最后使用的certutil将自签名的根CA:

certutil.exe -user -addstore Root "mycert\rootca.cer" 

因为我们加入了根CA,它会生成用户必须接受弹出式警告,但它已被视为可以接受的权力。

有一个“检查配置”屏幕,如果第一次没有正确添加证书,可以尝试再次添加证书。

有组策略(GPO)阻止信任自签名证书的情况。在这种情况下,certutil的返回码为0(证书已添加),但根CA不受信任,因此本地服务器不起作用。因此,安装后,我们要检查该证书是使用受信任:

certutil.exe -user -verifystore Root xxx 

xxx是证书序列号)。如果证书不可信,则此命令会退出并显示错误,因此我们解析输出为CERT_TRUST_IS_UNTRUSTED_ROOT0x800b0109

相关问题