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

标签 windows ssl x509 ca

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

  • 服务器证书将颁发给我们的每个服务器客户,并且应该安装在客户的服务器上,以便我们的服务器应用程序可以使用它来建立 TLS session 。
  • 我们 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 有一个 the Environment.SpecialFolders枚举。对于 native C++,How do I get the application data path in Windows using C++?是一个很好的起点。

关于windows - Windows 上特定于应用程序的 X509 证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9246925/

相关文章:

windows - 帮助我了解 Process Explorer 中的这些内存统计信息

windows - Delphi - 如何防止 Forms/MsgBoxes 在先前的表单下移动?

python - SSL_CERT_DIR 未由 urllib2 评估

java - 使用 VAULT 配置 Wildfly 8.0.0 以加密 keystore 密码时出现无效的 Keystore 格式异常

c - C 中的 X509* 证书序列化和反序列化

java - 使用带有证书路径(证书链)的 bouncycaSTLe 创建 x.509 证书

c# - 在受信任的发布者商店中找不到证书

c - Windows下如何获取ip地址

Windows 批处理文件 - 显示所有子文件夹

ssl - 无法打开配置文件/usr/lib/ssl/openssl.cnf