gpt4 book ai didi

java - 外行术语中的信任库与 keystore

转载 作者:搜寻专家 更新时间:2023-11-01 03:46:47 24 4
gpt4 key购买 nike

我试图以通俗易懂的方式理解信任库和 keystore 之间的区别。它们与 java 中的 cacerts 有何关系?我已经经历了很多线程,但仍然无法理解何时使用 keystore 以及何时使用信任库。

当我尝试通过 https 对 Web 服务进行 API 调用时,我一直遇到 SSL 证书问题。 HTTPS 服务使用的是自签名证书,我将证书导入到我的 cacert,问题仍然存在。我必须在哪里导入此服务器证书?如果导入解决问题,部署应用程序时是否需要在其他环境中导入证书?

我们的应用程序使用 JKS 文件,它需要什么?当我查看 JKS 文件时,我看到其中有 2 个证书。我们为什么要使用它?

对于信任库,我看到人们说信任我们自己。我们凭什么相信自己?信任库是否使用任何证书?什么时候应该使用 keystore 而不是信任库?

任何帮助理解这一点的人都会对我很有帮助。

最佳答案

Truststore - 一个包含证书的容器,这些证书应该被应用程序接受或信任。例如,这可以是自签名证书或由不在全局 CA 列表中的 CA 机构签名的证书。例如,公司可以拥有自己的 CA 以允许使用自己的证书。将此类 CA 添加到您的信任库(应用程序或将其安装在系统中)将验证由 CA 签署的所有其他证书。

Keystore - 存放私钥的容器。这允许应用程序接受使用相应公钥初始化的通信。

在 Java 中,它们可以都是 JKS 格式,并且它们“在技术上”是同一回事。出于安全原因,您在逻辑上将它们分成 2 个容器。

您可能不知道的是,PKI 的工作方式是您始终拥有一对唯一的公钥和私钥。公钥用于加密通信,而私钥用于解密通信。当客户端通过 SSL channel 连接时,它使用公钥建立 key 交换。如果服务器身份是合法的,它就会有私钥,就可以进行交换。

现在回答你的问题

Where do I have to import this server certificate? If the import solves the issues, do I need to import the certificate in other environments when i deploy the application?

服务器必须有私钥才能成功进行 SSL 握手。它还使用相应的公钥(在证书中)介绍自己。如果该证书由世界范围内受信任的 CA 签署 - 无需执行任何操作 - 证书将被信任。如果它不是(自签名的私有(private) CA),则必须将它添加到客户端信任库中,以告诉应用程序尽管没有公共(public)权威机构保证,但应该信任该特定证书。

If the import solves the issues, do I need to import the certificate in other environments when i deploy the application?

必须通知每个系统它应该信任该特定证书。如果客户端应用程序是您专有的,您可以将信任库与其一起分发。

For truststore, I see people saying trusting ourself. What are we trusting ourself with?

通过将给定的证书添加到“信任列表”- 信任库。它的字面意思是,可以连接到使用该特定证书介绍自己的服务器(它仍然必须有私钥来验证自己)

Do the truststore uses any certificates?

Trust store 只是一个容器。

When should I be using a keystore versus a truststore?

已经回答,但是 - 使用信任存储来说明使用一些公钥连接是安全的,尽管事实上它没有被全局 CA 签名。在服务器端使用 keystore 以允许进行适当的握手。

关于java - 外行术语中的信任库与 keystore ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48241755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com