2012-02-12 56 views
0

我正在嘗試在我的公司內建立一個內部CA.這樣做的主要目的之一是向我們的客戶頒發證書,他們將使用這些證書建立我們的客戶端和服務器應用程序(基於Windows操作系統)之間的TLS連接。我目前的工作在以下限制:Windows上的特定於應用程序的X509證書?

  • 的服務器證書頒發給我們的每一個服務器的客戶,並應客戶的服務器上安裝,使得我們的服務器應用程序可以使用它來建立TLS會話。
  • 我們的CA的受信任根證書將與我們的客戶端應用程序打包在一起,並且應該以應用程序的方式靜默安裝,以便客戶端應用程序可以使用它來驗證服務器證書。 (假定安裝程序在客戶端計算機上具有管理訪問權。)
  • 受信任的根證書應該可供客戶端計算機上客戶端應用程序的任何用戶使用,並且不應要求用戶輸入密碼。
  • 我不願意將受信任的根證書放置在本地計算機證書存儲區的「受信任的根證書頒發機構」部分,因爲它可以用於比簡單地驗證我們的應用程序更大的範圍(驗證IE的網頁,例如)。如果我們的根證書受到損害,我寧願將損害限制在我們自己的應用程序中。

我應該在哪裏以及如何在服務器和客戶機(同時使用Windows操作系統)上安裝服務器證書和受信任的根證書,以滿足這些約束條件?

回答

0

共同Application Data文件夾是兩個CA證書和服務器證書的適當位置(而不是服務器私鑰,雖然!)

「如何」安裝的依賴於包裝和分配方法 - 對於WiX,您需要使用類似於:

<Directory Id="CommonAppDataFolder" Name="ComApptDt" > 
    <Directory Id="ProductAppData" Name="ProductName" > 
    <!-- add reference to the appropriate certificate here --> 
    </Directory> 
</Directory> 

確定代碼中Common AppData文件夾的位置取決於編程語言和框架。 .NET有一個the Environment.SpecialFolders枚舉。對於本機C++,How do I get the application data path in Windows using C++?是一個很好的開始。