2016-09-29 114 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

相關問題