sap*_*Pro 57 java ssl keystore
我一直在:
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find
valid certification path to requested target
.
.
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.
ValidatorException: PKIX path building failed: sun.security.provider.
certpath.SunCertPathBuilderException: unable to find valid certification
path to requested target
Run Code Online (Sandbox Code Playgroud)
在搜索如何解决此异常时,我遇到了Keystore一个我不理解的术语.Keystore简单来说是什么?它与SSL的关系如何?
Bru*_*uno 132
Java中的密钥库可以引用三种内容,具体取决于上下文.(它们都是密切相关的,但却略有不同.)
密钥库可以是可以存储私钥,证书和对称密钥的存储库.这通常是一个文件,但也可以以不同的方式处理存储(例如加密令牌或使用操作系统自己的机制).
KeyStore也是一个类,它是标准API的一部分.它本质上是一种加载,保存并通常与如上所述的"物理"密钥库之一交互的方式.KeyStore如果您只需要应用程序的API抽象,那么A 也可以纯粹在内存中.
如何加载和处理此类KeyStore实例取决于支持它的密钥库文件(或其他存储系统)的格式.有多种格式可供选择.一些最常见的是JKS和PKCS#12(.p12).
"keystore"也可以用作"truststore"的对应物.这是令人困惑的地方,因为"keystore"和"truststore"都是密钥库,它们只是用于不同的目的.您可以在此答案中找到更多详细信息.密钥库用于初始化密钥管理器,而信任库用于初始化信任管理器.来自JSSE参考指南:
A
TrustManager确定是否应该信任远程身份验证凭据(以及连接).A
KeyManager确定要将哪些身份验证凭据发送到远程主机.
实质上,用作信任库的密钥库将包含您愿意信任的许多(CA)证书:这些证书是您将用于验证您尚不了解和信任的远程证书的信任锚.相反,用作密钥库的密钥库将包含您自己的证书及其私钥:这是您将用于向远程方验证自己的时间(如果需要).
有一个与JRE(/lib/security/cacerts)捆绑在一起的默认信任库.没有默认密钥库,因为它通常是用户更明确的步骤.
在SSL/TLS的上下文中,密钥库(用作密钥库的密钥库)将是服务器存储其证书和私钥的位置(或者,当使用客户端证书身份验证时,客户端存储其证书和私钥).信任库(用作信任库的密钥库)将是客户端存储其愿意信任的CA的CA证书的位置,以便能够在连接到SSL/TLS服务器时验证服务器证书(类似地,在服务器端,这也是存储用于验证客户端证书的CA证书的位置.
通常,ValidatorException: PKIX path building failed当您连接的服务器的证书无法使用您正在使用的信任库中的任何证书进行验证时,会发生您收到的错误(" ").您通常需要在您的信任库中直接在您的信任库中存储服务器证书(只能在小规模上管理)或者用于颁发该服务器证书的CA的CA证书(或者链中的一个证书)礼物,当有一个链).
| 归档时间: |
|
| 查看次数: |
58643 次 |
| 最近记录: |