我们正在开发一个本地服务器应用程序(目前用nodejs编写),我们的网站用它来操作本地文件和文件夹(浏览,上传,下载......)。
基本上,客户安装nodejs app,启动本地服务器监听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 :(得分: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_ROOT
或0x800b0109
的输出。