我是 TLS/SSL 的新手,所以这可能是一个非常基本的问题,但我一直在寻找很多东西,但找不到答案。
我正在尝试实现 TLS/SSL 客户端。此客户端将在带有 Windows 操作系统(XPe 或 WES7)的嵌入式单元上运行。我的实现使用 GnuTLS。
如何将受信任的授权列表获取到我的设备,以便我的客户可以验证服务器的证书?它应该是存储在客户端的文件,客户端负责保持最新状态吗?或者我的客户可以在每次需要时从互联网上获取此列表,而不是在本地维护它?
证书颁发机构 (CA) 主证书存储在客户端,客户端负责使它们保持最新。让它们保持最新并不像听起来那么难,因为 CA 证书不会经常更改——大多数证书的有效期至少为 5-10 年。
客户端存储是必要的,因为您的应用程序使用的任何给定互联网站点都可能受到损害。
要获取列表,您可以先查看随浏览器分发的 CA 证书或随 Java 分发的 cacerts 文件。在发布您的代码之前,您可能需要根据 CA 提供的信息检查您使用的证书是否真实。
转到任何 Windows 机器并从命令行运行“certman.msc”。将每个 CA 证书(Intermediate Certificates、Trusted Authorities)导出到文件(BER、PEM),然后将这些证书导入您的嵌入式软件。现在您可以验证电子邮件证书,就像 Windows 一样(即使用各种与 x.509 相关的 RFC 和 CRL)