世界杯举办地_世界杯预选赛巴西 - emsxbc.com

keytool查看和导入证书,使用 jre 发行包中的 cacerts 操作方法

keytool查看和导入证书,使用 jre 发行包中的 cacerts 操作方法

接上篇

支付宝调用接口openapi CY24蚂蚁集团网站新根证书升级说明

https://www.cnblogs.com/oktokeep/p/18331448

本地运行测试类报错:

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

使用 jre 发行包中的 cacerts

cacerts 文件是 Java 环境默认使用的信任根证书库,位于 %JAVA_HOME%/lib/security/目录下,cacerts 文件本质是一个JKS (Java KeyStore),可使用 Java 发行包中自带的 keytool 工具来查看和修改,默认密码为“changeit”

关键:需要定位到文件cacerts的当前目录下: D:\Program Files\Java\jdk1.8.0_11\jre\lib\security

命令如下:

keytool -list -v -keystore cacerts > mycacerts.txt

DEMO1

代码语言:javascript代码运行次数:0运行复制D:\Program Files\Java\jdk1.8.0_11\jre\lib\security>keytool -list -v -keystore cacerts > mycacerts.txt

输入密钥库口令: changeit

Warning:

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。导出的mycacerts.txt是否包含搜素关键字 "DigiCert Global Root G2"

如果没有查找到怎么处理

方案1 : 添加根证书到 cacerts

keytool -keystore cacerts -importcert -alias DigiCertGlobalRootG2With2024 -file D:/alipayG2/DigiCertGlobalRootG2.crt.pem

DigiCertGlobalRootG2.crt.pem文件的下载地址:https://cacerts.digicert.com/DigiCertGlobalRootG2.crt.pem

DEMO2

代码语言:javascript代码运行次数:0运行复制 D:\Program Files\Java\jdk1.8.0_11\jre\lib\security>keytool -keystore cacerts -importcert -alias DigiCertGlobalRootG2With2024 -file D:/alipayG2/DigiCertGlobalRootG2.crt.pem

输入密钥库口令:

所有者: CN=DigiCert Global Root G2, OU=www.digicert.com, O=DigiCert Inc, C=US

发布者: CN=DigiCert Global Root G2, OU=www.digicert.com, O=DigiCert Inc, C=US

序列号: 33af1e6a711a9a0bb2864b11d09fae5

生效时间: Thu Aug 01 20:00:00 CST 2013, 失效时间: Fri Jan 15 20:00:00 CST 2038

证书指纹:

SHA1: DF:3C:24:F9:BF:D6:66:76:1B:26:80:73:FE:06:D1:CC:8D:4F:82:A4

SHA256: CB:3C:CB:B7:60:31:E5:E0:13:8F:8D:D3:9A:23:F9:DE:47:FF:C3:5E:43:C1:14:4C:EA:27:D4:6A:5A:B1:CB:5F

签名算法名称: SHA256withRSA

主体公共密钥算法: 2048 位 RSA 密钥

版本: 3

扩展:

#1: ObjectId: 2.5.29.19 Criticality=true

BasicConstraints:[

CA:true

PathLen:2147483647

]

#2: ObjectId: 2.5.29.15 Criticality=true

KeyUsage [

DigitalSignature

Key_CertSign

Crl_Sign

]

#3: ObjectId: 2.5.29.14 Criticality=false

SubjectKeyIdentifier [

KeyIdentifier [

0000: 4E 22 54 20 18 95 E6 E3 6E E6 0F FA FA B9 12 ED N"T ....n.......

0010: 06 17 8F 39 ...9

]

]

是否信任此证书? [否]: y

证书已添加到密钥库中方案2 : 升级JDK版本

正常情况下 JDK 1.6.05 及以上版本的 cacerts 应已经包含了 DigiCert Global Root CA,JDK 1.8.0 131+ 及以上版本的 cacerts 应已经包含了 DigiCert Global Root G2

导入之后,重新查询

DEMO3

代码语言:javascript代码运行次数:0运行复制D:\Program Files\Java\jdk1.8.0_11\jre\lib\security>keytool -list -v -keystore cacerts > mycacertsV2.txt

输入密钥库口令: changeit

Warning:

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。

使用的 1024 位 RSA 密钥 被视为存在安全风险。此密钥大小将在未来的更新中被禁用。导出的mycacertsV2.txt是否包含搜素关键字 "DigiCert Global Root G2",这次搜索到了,内容如下:

代码语言:javascript代码运行次数:0运行复制摘要信息如下:

别名: digicertglobalrootg2with2024

创建日期: 2024-8-8

条目类型: trustedCertEntry

所有者: CN=DigiCert Global Root G2, OU=www.digicert.com, O=DigiCert Inc, C=US

发布者: CN=DigiCert Global Root G2, OU=www.digicert.com, O=DigiCert Inc, C=US

序列号: 33af1e6a711a9a0bb2864b11d09fae5

生效时间: Thu Aug 01 20:00:00 CST 2013, 失效时间: Fri Jan 15 20:00:00 CST 2038

证书指纹:

SHA1: DF:3C:24:F9:BF:D6:66:76:1B:26:80:73:FE:06:D1:CC:8D:4F:82:A4

SHA256: CB:3C:CB:B7:60:31:E5:E0:13:8F:8D:D3:9A:23:F9:DE:47:FF:C3:5E:43:C1:14:4C:EA:27:D4:6A:5A:B1:CB:5F

签名算法名称: SHA256withRSA

主体公共密钥算法: 2048 位 RSA 密钥

版本: 3再次运行测试类,运行正常不报错了。

代码语言:javascript代码运行次数:0运行复制private static AlipayClient ac = null;

/**

* 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

* @return

*/

public static com.alipay.api.AlipayClient getAlipayClient(){

if(ac == null){

// com.alipay.api.AlipayClient alipayClient = new com.alipay.api.DefaultAlipayClient("https://openapi.alipay.com/gateway.do","you appid",prv_key,"JSON","utf-8",pub_key,"RSA2");

com.alipay.api.AlipayClient alipayClient = new com.alipay.api.DefaultAlipayClient("https://openapi-with-g2-only.alipay.com/gateway.do","you appid",prv_key,"JSON","utf-8",pub_key,"RSA2");

ac = alipayClient;

}

return ac;

}最后测试下高版本的jdk C:\Program Files\Java\jdk1.8.0_333 是否包含该根证书。

D:\Program Files\Java\jdk1.8.0_11\jre\lib\security>java -version

java version "1.8.0_421"

Java(TM) SE Runtime Environment (build 1.8.0_421-b09)

Java HotSpot(TM) 64-Bit Server VM (build 25.421-b09, mixed mode)

查看环境变量的配置,JAVA_HOME路径。

C:\Program Files\Java\jdk1.8.0_333\jre\lib\security>keytool -list -v -keystore cacerts > mycacertsV3.txt

拒绝访问。

使用PowerShell客户端来访问。 >> cmd 出现在列表中,然后按下 Ctrl + Shift + Enter 快捷键,打开管理员权限的dos命令窗口。

DEMO4

代码语言:javascript代码运行次数:0运行复制C:\Program Files\Java\jdk1.8.0_333\jre\lib\security>keytool -list -v -keystore cacerts > mycacertsV3.txt

输入密钥库口令: changeit导出的mycacertsV3.txt是否包含搜素关键字 "DigiCert Global Root G2",这次搜索到了,内容如下:

代码语言:javascript代码运行次数:0运行复制别名: digicertglobalrootg2 [jdk]

创建日期: 2016-8-25

条目类型: trustedCertEntry

所有者: CN=DigiCert Global Root G2, OU=www.digicert.com, O=DigiCert Inc, C=US

发布者: CN=DigiCert Global Root G2, OU=www.digicert.com, O=DigiCert Inc, C=US

序列号: 33af1e6a711a9a0bb2864b11d09fae5

生效时间: Thu Aug 01 20:00:00 CST 2013, 失效时间: Fri Jan 15 20:00:00 CST 2038

证书指纹:

SHA1: DF:3C:24:F9:BF:D6:66:76:1B:26:80:73:FE:06:D1:CC:8D:4F:82:A4

SHA256: CB:3C:CB:B7:60:31:E5:E0:13:8F:8D:D3:9A:23:F9:DE:47:FF:C3:5E:43:C1:14:4C:EA:27:D4:6A:5A:B1:CB:5F

签名算法名称: SHA256withRSA

主体公共密钥算法: 2048 位 RSA 密钥

版本: 3