Windows上的特定于应用程序的X509证书



我正试图在公司内建立一个内部CA。这样做的主要目的之一是向我们的客户颁发证书,他们将使用证书在我们的客户端和服务器应用程序(均基于Windows操作系统)之间建立TLS连接。我目前在以下限制条件下工作:

  • 服务器证书将颁发给我们的每个服务器客户,并应安装在客户的服务器上,以便我们的服务器应用程序可以使用它来建立TLS会话
  • 我们CA的受信任根证书将与我们的客户端应用程序打包,并且应该与应用程序一起静默安装,以便客户端应用程序可以使用它来验证服务器证书。(假定安装程序对客户端计算机具有管理访问权限。)
  • 受信任的根证书应可供客户端计算机上客户端应用程序的任何用户使用,并且不需要用户的密码即可访问
  • 我不太愿意将受信任的根证书放在本地计算机证书存储的"受信任根证书颁发机构"部分,因为它可以在比简单地验证我们的应用程序(例如,验证IE的网页)更大的范围内使用,我宁愿将损害限制在我们自己的应用程序上

我应该在哪里以及如何在服务器和客户端计算机上安装服务器证书和受信任的根证书(同样,都使用Windows操作系统),以满足这些限制?

Common 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具有Environment.SpecialFolders枚举。对于本机C++,如何使用C++在Windows中获取应用程序数据路径?是一个很好的起点。

最新更新