Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows上特定于应用程序的X509证书?_Windows_Ssl_X509_Ca - Fatal编程技术网

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

Windows上特定于应用程序的X509证书?,windows,ssl,x509,ca,Windows,Ssl,X509,Ca,我正试图在公司内部建立一个内部CA。这样做的主要目的之一是向客户颁发证书,他们将使用证书在客户机和服务器应用程序(均基于Windows操作系统)之间建立TLS连接。我目前在以下限制条件下工作: 服务器证书将颁发给我们的每个服务器客户,并应安装在客户的服务器上,以便我们的服务器应用程序可以使用它建立TLS会话 CA的受信任根证书将与客户端应用程序一起打包,并应随应用程序一起静默安装,以便客户端应用程序可以使用它来验证服务器证书。(假定安装程序对客户端计算机具有管理访问权限。) 受信任的根证书应可

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

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

我应该在服务器和客户端计算机上安装服务器证书和受信任的根证书(同样,两者都使用Windows操作系统)的位置和方式,以便满足这些约束条件?

公共应用程序数据文件夹是CA证书和服务器证书的适当位置(但不是服务器私钥!)

安装的“方式”取决于打包和分发方法——对于WiX,您可以使用以下方法:

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

在代码中确定通用AppDATA文件夹的位置取决于编程语言和框架.NET有枚举。对于本地C++,是一个好的开始位置。