【问题标题】:Importing root CA or the intermediate CA instead of the individual public cert导入根 CA 或中间 CA 而不是单独的公共证书
【发布时间】:2016-03-23 00:56:58
【问题描述】:

SSL 证书永远不会让我眼花缭乱。我有一个网络应用程序,它从合作伙伴那里对另一项服务进行休息调用以获取某些数据。他们使用自签名或为公司生成的内部 CA。问题是每当另一端更新 SSL 证书时,我的应用程序就会失败。这是因为我从他们的网站下载并导入到我的应用程序的 java 信任库中的公共证书 (.cer) 与他们的新网站不匹配。要解决这个问题,我必须重新下载他们最新的公共服务器证书并再次导入我的 java 信任库。

假设他们使用一致的根 CA 或中间 CA 证书来签署他们不断变化的 SSL 证书,我可以只在我的 java 信任存储中导入根 CA 或中间 CA 来处理这个问题吗?因此,只要他们不更改 ROOT CA 或 INTERMEDIATE CA,我的应用程序就可以进行调用。

【问题讨论】:

    标签: java ssl ssl-certificate truststore


    【解决方案1】:

    所以他们的自签名 CERT 不是从 ROOT CA 构建的。他们的 CERT 是他们自己生成的,因此默认情况下它被认为是不可信的。所以每次他们生成一个新的时,都会发生这种情况:

    1. 您的应用向他们的服务器打招呼
    2. 他们的服务器发送新生成的 CERT,其中包括以下信息:公钥、算法、证书有效日期范围等。
    3. 您的应用获取新的 CERT 并将其与旧的 CERT 进行比较,然后意识到,哦,这些不一样。
    4. 您的应用说,嗯,这不值得信赖并引发错误。

    这是设计使然,因为这类似于中间人攻击的相同结果。由于这个原因,您的客户只信任某些 CA。 CA 的工作是针对证书进行认证,看看它们是好是坏。如果您可以在 CA 不知情的情况下即时添加证书,那么 CA 真的不知道要信任哪些证书。

    因此,该公司可能已向您开放或与他们合作提供给您的中间证书颁发机构。您将不得不询问他们是否正在使用您可以连接的某种 CA。

    我对此表示怀疑,因为您说他们使用的是“自签名”证书,这意味着他们没有与任何 CA 合作。

    【讨论】:

      猜你喜欢
      • 2019-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-06
      • 2019-05-12
      • 1970-01-01
      • 2011-05-17
      • 2021-01-17
      相关资源
      最近更新 更多