【问题标题】:TLS/SSL certificate verificationTLS/SSL 证书验证
【发布时间】:2017-03-25 01:24:57
【问题描述】:

我是 TLS/SSL 的新手,所以这可能是一个非常基本的问题,但我一直在搜索,但找不到答案。

我正在尝试实现 TLS/SSL 客户端。此客户端将在带有 Windows 操作系统(XPe 或 WES7)的嵌入式单元上运行。我的实现使用 GnuTLS。

如何将受信任的机构列表提供给我的设备,以便我的客户可以验证服务器的证书?它应该是存储在客户端的文件,客户端负责保持最新状态吗?或者我的客户能否在每次需要时从互联网上获取此列表,而不是在本地维护?

【问题讨论】:

    标签: ssl gnutls


    【解决方案1】:

    证书颁发机构 (CA) 主证书存储在客户端,客户端负责使它们保持最新。让它们保持最新并不像听起来那么难,因为 CA 证书不会经常更改 - 大多数证书的有效期至少为 5-10 年。

    客户端存储是必要的,因为您的应用程序使用的任何给定 Internet 站点都可能受到损害。

    要获取列表,您可以先查看随浏览器分发的 CA 证书或随 Java 分发的 cacerts 文件。在发布代码之前,您可能需要根据 CA 提供的信息检查您使用的证书是否真实。

    【讨论】:

    • 谢谢!这是有道理的。如果我的客户负责发送电子邮件,那么创建列表的正确方法是什么?我需要手动添加每个电子邮件提供商吗?
    • 电子邮件的工作方式不同。电子邮件服务器相互通信,因此客户端只需要知道一个电子邮件服务器。
    • 所以...基本上你的意思是我只需要在我的客户端上保留一个证书?例如,如果我只保留 google 的证书,它将能够向 yahoo 发送电子邮件吗?我应该去哪里检查谷歌的正版证书?根据我的浏览器信息,他们的证书来自 Usertrust,但我不知道如何从那里获得。抱歉,我知道这些问题非常基础。网上有很多关于它的信息,我最近也读了很多,但似乎很难找到这些小问题的答案。
    • 您的客户是什么客户 - 电子邮件、网络或其他?
    • 它是一个嵌入式系统,可以做很多事情,但现在它还需要发送电子邮件。关键是它是一个emb。系统,意思是它是一个精简的系统,不允许做人们通常在 Windows 上做的事情,比如互联网浏览、安装软件等。系统连接到网络。作为开发人员,我需要找到在此类单元上维护证书文件的正确方法。看起来它必须是带有证书的本地文件。现在看来我只需要电子邮件提供商证书,但我希望它以通用方式工作以允许未来发展。
    【解决方案2】:

    转到任何 Windows 机器并从命令行运行“certman.msc”。将每个 CA 证书(中间证书、受信任的机构)导出到文件(BER、PEM),然后将这些证书导入您的嵌入式软件。现在您可以验证电子邮件证书,就像 Windows 一样(即使用各种与 x.509 相关的 RFC 和 CRL)

    【讨论】:

      猜你喜欢
      • 2015-05-19
      • 2014-02-14
      • 1970-01-01
      • 1970-01-01
      • 2017-06-13
      • 2019-03-29
      • 1970-01-01
      • 1970-01-01
      • 2022-08-23
      相关资源
      最近更新 更多