导入根CA或中间CA而不是单个公共证书

时间:2015-12-16 18:38:16

标签: java ssl ssl-certificate truststore

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

假设他们使用一致的ROOT CA或中间CA证书来签署他们不断变化的SSL证书,我可以只导入ROOT CA或INTERMEDIATE CA一次并在我的java信任库中进行处理吗?因此,只要他们不更改ROOT CA或INTERMEDIATE CA,我的应用程序就可以拨打电话。

1 个答案:

答案 0 :(得分:0)

因此,他们的自签名CERT不是从ROOT CA构建的。他们生成自己的CERT,因此默认情况下将其视为不可信。因此,每当他们生成一个新的时,就会发生这种情况:

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

这是设计使然,因为这类似于中间人攻击的相同结果。因此,您的客户仅信任某些CA。 CA的工作是针对证书进行认证,以查看它们的优劣。如果您可以在不了解CA的情况下即时添加证书,则CA真的不知道要信任哪些证书。

因此,可能存在一个中间证书颁发机构,该公司已向您开放或与他们合作为您提供证书。您将不得不要求他们查看他们是否正在使用可以连接到的所有CA。

我对此情况表示怀疑,因为您说他们正在使用“自签名”证书,这意味着它们与任何CA都不兼容。

相关问题