当前位置:首页 > 话题广场 > 攻略专题 > 游戏问答

JDK版本低导致对Let’s Encrypt证书不信任的问题

例外信息:

javax . net . pkix path building failed : unable to find valid certification path to requested target原因:

此问题通常发生在以下情况下:

Java调用的第三方服务使用Let's Encrypt颁发的证书,JVM不信任Let's Encrypt证书。这是因为本地JDK版本太低,Let's Encrypt证书不在JVM的信任列表中。

解决方法:

方法1(推荐):

本地JDK升级(Java 7=7 u111 and Java 8=8u 101)

方法2:

在代码级别忽略证书(不建议使用,可临时使用以防止安全风险)

方法3:

使用工具类在本地JVM上安装证书,如下所示:

创建In文件,如下所示:

import Java . io . buffered reader;

import Java . io . file;

import Java . io . fileinputstream;

import Java . io . fileoutputstream;

import Java . io . input stream;

import Java . io . inputstreamreader;

import Java . io . output stream;

Import Java。

Import Java。

Import Java。

Import Java。

Import javax.net

Import javax.net

Import javax.net

Import javax.net

Import javax.net

import javax . net . factory;

Import javax.net

Public class InstallCert {

public static void main(string[]args)throws exception {

字串主机;

Int port

char[]pass phrase;

if==1)| | |==2){

String[] c=args[0]。split(' : ');

主机=c[0];

Port====1)?443 3360 in(c[1]);

字串p====1)?变更it ' : args[1];

pass phrase=p . to chararray();

} else {

sy(' usage : Java install cert host[: port][pass phrase]');

Return

}

File File=new File(' jss ecacerts ');

If ()==false) {

Char SEP=File.separatorChar

filedir=new file(' Java . home ')sep ' lib ' sep ' security ');

File=new File(dir,' js secacerts ');

If ()==false) {

File=new File(dir,' cacerts ');

}

}

Sy('Loading KeyStore' file ' . '));

inputstream in=new file inputstream(文件);

KeyStore ks=KeyS();

Ks.load(in,pass phrase);

in . close();

SSL context context=SSL con(' TLS ');

TrustManagerFactory tmf=Tru();

(ks);

x 509 trust manager defaulttrustmanager=(x 509 trust manager)()[0];

savingtrustmanager TM=new savingtrustmanager(defaulttrustmanager);

Con (null,new trust manager [] {TM},null);

Ssl套接字工厂工厂=CON();

sy(' opening connection to ' host ' : ' port ' .));

Ssl套接字套接字=(SSL套接字) (主机、端口);

(10000);

Try {

Sy('Starting SSL handshake . '));

();

();

sy();

Sy ('no errors,certificate is already trusted ');

} catch (SSLException e) {

sy();

e . printstacktrace);

}

x 509 certificate[]chain=;

If (chain==null) {

sy(' could not obtain server certificate chain ');

Return

}

buffered reader reader=new buffered reader(new input stream reader);

sy();

sy(' serversent ' c ' certificate(s): ');

sy();

message digest SHA1=Me(' SHA1 ');

message digest MD5=Me(' MD5 ');

for(int I=0;I c;I) {

x 509 certificate cert=chain[I];

sy(' '(i1)' subject ' cert . getsubjectdn());

sy(' Issuer ' cert . getissuerdn());

());

sy(' sha1 ' to hexstring());

MD5 . update();

sy(' MD5 ' to hexstring());

sy();

}

sy(' enter certificate to add to trusted keystore or ' q ' to quit :[1]);

Stringline=reader.readline()。trim();

int k;

Try {

K=()===0)?0 :英寸(线)-1;

} catch(numberformatexceptione){

sy(' keystore not changed ');

Return

}

x 509 certificate cert=chain[k];

string alias=host '-'(k 1);

Ks。setcertificateentry (alias、cert);

output stream out=new file output stream(' JSSE cacerts ');

Ks.store(out、pass phrase);

out . close();

sy();

市(CERT);

sy();

sy(' added certificate to keystore ' JSSE cacerts ' using alias ' ' alias ');

}

private static finalchar[]hex digits=' 0123456789 ABC def '。tochararay();

private static string to hexstring(byte[]bytes){

string builder sb=new string builder * 3);

For (int b : bytes) {

B=0xff

(hex digits[b 4]);

(hex digits[b 15]);

(' ');

}

return();

}

private static class savingtrustmanager implements x509 trust manager {

Private final X509TrustManager TM:

private x 509 certificate[]chain;

Savingtrustmanager (x509信任管理器TM) {

=TM

}

@Override

public x509 certificate[]getacceptedissuers(){

return new x 509 certificate[0];

//throw new unsupportedoperationexception();

}

public void checkclienttrusted(x 509 certificate[]chain,string authtype)

Throws CertificateException {

throw new unsupportedoperationexception();

}

public void checkservertrusted(x 509 certificate[]chain,string authtype)

Throws CertificateException {

=chain

(陈、Authtype);

}

}

}

编译此文件:

Javac In

运行安装证书:

Java InstallCert www.domain.com

记录如下。

# Java InstallCert www.domain.com

Loading KeyStore /data/a.

opening connection to www . domain.com :443.

Starting SSL handshake.

javax . net . pkix path building failed : unable to find valid certification path to requested target

At (Alerts.java:192)

At (SSL插槽impl.java :1949)

At (Handshaker.java:302)

At (Handshaker.java:296)

at(clienthandshaker . Java :1509)

at(clienthandshaker . Java :216)

At (Handshaker.java:979)

At (Handshaker.java:914)

At (SSL插槽impl.java :1062)

At (SSL插槽impl.java :1375)

At (SSL插槽impl.java :1403)

At (SSL插槽impl.java :1387)

at In(In 336071)

caused by : pkix path building failed : unable to find valid certification path to requested target

At (PKIXValidator.java:387)

At (PKIXValidator.java:292)

at(validator . Java 3360260)

atsun . security . impl . validate(x 509 trustmanagerimpl . Java :324)

atsun . security . impl . check trusted(x 509 trustmanagerimpl . Java :229)

atsun . security . impl . checkservertrusted(x 509 trustmanagerimpl . Java 3360105)

at install cert $ savingtru(in :169)

At (SSLContextImpl.java:922)

at(clienthandshaker . Java :1491)

.8摩尔

caused by : unable to find valid certification path to requested target

at(suncertpathbuilder . Java :141)

at(suncertpathbuilder . Java :126)

At Java。(certpathbuilder.java :280)

At (PKIXValidator.java:382)

.16莫尔

Server sent 2 certificate(s):

1 Subject CN=www.domain.com

is suer cn=let ' s encrypt authority x 3,o=let's encrypt,c=us

sha 1 0 Abe b 4 66 34 61 0 c 12 a 6 ce 41 23 fa a 6 AC 07 4 e 0d 01 c 5

MD5 03 62 53 B6 64 EB E2 C1 94 B1 78 ca 7f ca ba 09

2 subject cn=let ' s encrypt authority x 3,o=let's encrypt,c=us

Issuer cn=dst root ca x3,o=digital signature trust co .

sha 1 e 6 a 3 b 4 5 b 06 2d 50 9 b 33 82 28 2d 19 6 e Fe 97d 5 95 6 c CB

MD 5 b 1 54 09 27 4 f 54 ad 8 f 02 3d 3 b 85 a 5 EC 5d

enter certificate to add to trusted keystore or ' q ' to quit :[1]

[

[

Version: V3

Subject: CN=www.domain.com

signature algorithm : sha 256 with RSA,oid=1.2.840.113549.1.1.11

密钥: sun RSA public key,2048位

modulus : 200730052437287038905886259434398485612135042303461059853939686786974700735349726894253716749732354692843522 26510552

Public exponent: 65537

validity 3360[from : thu may 03 09:57:46 CST 2018、

to : wed aug 01 09:57336046 CST 2018]

is suer : cn=let ' s encrypt authority x 3,o=let's encrypt,c=us

serial number :[0490 ded 4 91 a 4 b 26 f d 82 AAA 5 a BD 06 FFA 4 4804]

Certificate Extensions: 9

[1]: objectid : 1 . 3 . 6 . 1 . 4 . 1 . 11129 . 2 . 4 . 2 criticality=false

扩展unknown : der encoded octet string=

0003360 04 81 F5 04 81 F2 00 F0 00 76 00 55 81 D4 C2 16.v.u .

00103360 90 36 01 4a ea 0b 9b 57 3c 53 F0 c0 E4 38 78 70.6 . j.ws.8xp

00203360 25 08 17 2f a3 aa 1d 07 13 D3 0c 00 00 01 63 23%./...c #

00303360 ef 2b C9 00 00 04 03 00 47 30 45 02 21 00 E3 52.g0e.r

00403360 37 05 ff 9 f 1 16ce 6 fa 4 86 77 df 3d 4d 82 cf 7……。o.w.=m……。

00503360 92 2d bc04 2f 1c B0 DC 4e ff90 C1 D1 7e 02 20./.n……。

0060: 27 e 7 af 9 e 09 14 32d 0 52 BD b 9 1 f fdb 4 8 b 1 c’……。2.r……。

0070: df a2 FD 6c Fe B2 E6 9b3a 45 47 78 6b37 AE a3.l. egxk7……。

0080: 00 76 00 29 3c 51 96 54 c8 39 65 BAAA 50 FC 58 . V .)q . t . 9E.p.x

00903360 07 D4 B7 6f BF 58 7a 29 72 DC a4 C3 0cf 4 E5 45.o.xz) r.e

00a 0: 47 f 4 78 00 001 63 23 ef 2 b a 4 00 00 04 03 00g . x.c #。……。

00b 0: 47 30 45 02 20 0a 09d 1 3 f 17 b 2d 5 21 f 9d 8 9dg 0 e.

00c 0: D1 15 73 4f 81 dc4c 0a cb1 ff 6 34 47 b8 F3 8f.so.l.4g.

00d 0: 21 2d 8 b 25 01 02 21 00 FD 99 44 63 9 c 65 54 a 4!-%.Dc.eT .

00e 0: 74 fc fbf 6 D1 60 66 25 60 df c0 97 59 9b 08 6c t.f% `.y.l

00f0: de13 58 7f6b5a23e8.x.kz #。

[2]: objectid : 1 . 3 . 6 . 1 . 5 . 5 . 7 . 1 . 1 criticality=false

AuthorityInfoAccess [

[

AccessMethod: ocsp

access location : uriname :

而且,

AccessMethod: caIssuers

access location : uriname :

]。

]。

[3]: objectid : 2 . 5 . 29 . 35 criticality=false

AuthorityKeyIdentifier [

密钥标识符[

000: A8 4a 6a 63 04 7d ddba E6 D1 39 B7 a6 45 65 ef . jjc……。9 .ee。

0010: F3 A8 EC A1.

]。

]。

[4]: objectid : 2 . 5 . 29 . 19 criticality=true

BasicConstraints:[

CA:false

PathLen: undefined

]。

[5]: objectid : 2 . 5 . 29 . 32 criticality=false

CertificatePolicies [

[certificatepolicyid :[2 . 23 . 140 . 1 . 2 . 1]

[]]

[certificatepolicyid :[1 . 3 . 6 . 1 . 4 . 1 . 44947 . 1 . 1]

[PolicyQualifierInfo: [

鉴定id : 1.3.6.1.5.5.7.2.1

qualifier : 0003360 161 a68 74 74 70 3a2f 2f 63 70 73 2e 6c 65 74……。

0010: 73 65 6e 63 72 79 70 74 2e 6f 72 67

]、PolicyQualifierInfo: [

鉴定id : 1.3.6.1.5.5.7.2.2

qualifier : 00003360 30 81 9e0c 81 9b 54 68 69 73 20 43 65 72 74 690.this certi

00103360 66 69 63 61 74 65 20 6d 61 79 20 6f 6e 6c 79 20 fica te may only

00203360 62 65 20 72 65 6c 69 65 64 20 75 70 6f 6e 20 62 be relied upon b

00303360 79 20 52 65 6c 79 69 6e 67 20 50 61 72 74 69 65y relying partie

00403360 73 20 61 6e 64 20 6f 6e 6c 79 20 69 6e 20 61 63s and only in AC

00503360 63 6f 72 64 61 6e 63 65 20 77 69 74 68 20 74 68 cor dance with th

00603360 65 20 43 65 72 74 69 69 63 61 74 65 20 50 6f e certificate po

00703360 6c 69 63 79 20 66 f 75 6e 64 20 61 74 20 68 74 licy found at ht

00803360 74 70 733 a 2 f 2 f 6 c 65 74 73 65 6 e 63 72 79 70 TPS ://let sencryp

00903360 74 2e 6f 72 67 2f 72 65 70 6f 73 69 74 6f 72 79t . org/存储库

00A0: 2F/

]]]

]。

[6]: objectid : 2 . 5 . 29 . 37 criticality=false

ExtendedKeyUsages [

ServerAuth

ClientAuth

]。

[7]: objectid : 2 . 5 . 29 . 15 criticality=true

KeyUsage [

DigitalSignature

Key_Encipherment

]。

[8]: objectid : 2 . 5 . 29 . 17 criticality=false

SubjectAlternativeName [

DNSName: www.domain.com

]。

[9]: objectid : 2 . 5 . 29 . 14 criticality=false

SubjectKeyIdentifier [

密钥标识符[

000: 4d 27 88 53 f 8 2 be 5 57 e 3 93 a 2 39 0 c d 0 8 a d 8m’。s.w.9 .

0010: E5 BC 84 A4.

]。

]。

]。

Algorithm: [SHA256withRSA]

Signature:

000: 5d 16 29 6 DC 4 e 8 76 AC 32 cf 44 AE e 4 27 3 b 44].)m. v.2.d.d

00103360 CCA 7 9 a df 95 1 a a c 73 af 2 b 89 51 14 32 2 c 5d.s.q.2,]

0020: 7c 04 9e 29 47 aa ad C4 cf 9e ef db B3 7b a9 09.)g...

00303360 28 8 B85 60 C1 4B67 31 D5 4C 7 AC 6 54 64 C9 90(.`。kg1.lz.td……。

00403360 7c 31 7a a4 ca 59 CD 9b 0b 78 0c c0 00a 4 F6 ef . 1z.y.x……。

00503360 99 af 60 F7 98 3c db F0 8e 08 38 7f 8b 7f c0 9a.`.8 ……。

00603360 180 b 2 c d 5 CD 01 08 EB 2 c ea aa 69 21 c 7 996 e..I!n

0070: 24 4 e 13 41 94 28 7 a c 2d 2 43 e 9 20 22 c 2 35 c 9 $ n . a .(z . c . ' . 5)。

0080: 9d 05 51 25 db 4d D5 19 583 BD 7 1d 8e DBF 2 2e.q % .m.x……。

00903360 78 73 63 35 9 cb2 51 88 00 00 61 1f db79 87 ea xs C5.q.a.y……。

00a 0: af 60 9f 7 03 cab 7 63 f 4 95 c 2d 1 8 f d 0 1 e 2 f.`........./

00b 0: 21 65 d0 cf ef 7a B9 F7 B7 2a BF F2 04 be 78 F4!e.z.*.x.

00c 0: 6f ea 29 89 00 15 E0 8f 72 77 79 8a 9c 6e 2e 98o.)……。rwy.n……。

00d 0: c 9 ee BF 71 18 ab 90 7 a 65 c 8 FD 03 1 c 7 c 0 b 32.q.ze.2

00e 0: dd00 06 D4 67 61 af BF 83 3f F3 D8 9d ee 3b 2e.正式发行.

00 f 03360 e 4 94 bb ad 9 b 48 47 f 3 c 2 CEC 2 36 8 ced 74 3 e.Hg.6 .t

]。

added certificate to keystore ' JSSE cacerts ' using alias ' www . domain.com-1 '

成功运行后,在正在运行的目录中创建名为jssecacerts的文件,并将其复制到JDK安装目录中。

mv JSSE cacerts $ Java _ home/JRE/lib/security/最后重新启动Tomcat。

1.《JDK版本低导致对Let’s Encrypt证书不信任的问题》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《JDK版本低导致对Let’s Encrypt证书不信任的问题》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/2174118.html

上一篇

07word怎么从第二页开始设置页码?终于找到答案了在Word中让页码从指定页开始,3秒搞定它只需这一招,看完就会!

下一篇

关于1 0 -1 0 后面是什么,你需要知道这些无穷大与无穷大,谁大?

04f5怎么样2017看这里!JDK版本低导致对Let’s Encrypt证书不信任的问题

04f5怎么样2017看这里!JDK版本低导致对Let’s Encrypt证书不信任的问题

04f5怎么样2017相关介绍,例外信息: javax . net . pkix path building failed : unable to find valid certification path to requested...

04f5怎么样2017?终于找到答案了JDK版本低导致对Let’s Encrypt证书不信任的问题

04f5怎么样2017?终于找到答案了JDK版本低导致对Let’s Encrypt证书不信任的问题

04f5怎么样2017相关介绍,例外信息: javax . net . pkix path building failed : unable to find valid certification path to requested...

04f5怎么样2017?我来告诉你答案甲状腺结节自我检查法

04f5怎么样2017?我来告诉你答案甲状腺结节自我检查法

04f5怎么样2017相关介绍,{ ' RICH _ CONTENT ' : { ' TEXT ' : '《甲状腺结节自检法》、' spans' : null}、' v...

04f5怎么样2017?终于找到答案了开年轻化的先河 测试2019款哈弗F5

04f5怎么样2017?终于找到答案了开年轻化的先河 测试2019款哈弗F5

04f5怎么样2017相关介绍,【太平洋汽车网评价频道】这是一个平行于“H系”的新序列,“F系”面临着更年轻的消费群体。 在这个系列中,哈弗已经推出了三款车型,F5、F7和F7x,而F5就是这一车系的第一款车型。 哈弗F5 2019...

04f5怎么样2017看这里!十七岁的单车:一部难得的国产好电影,被禁播4年,剪掉8个镜头后才被公映

04f5怎么样2017看这里!十七岁的单车:一部难得的国产好电影,被禁播4年,剪掉8个镜头后才被公映

04f5怎么样2017相关介绍,{ ' rich _ content ' : { ' text ' : ' ',' spans' : null},' video...

04f5怎么样2017看这里!头条|2017银川3所民办中学小升初电脑派位录取名单出炉,来看看有你家孩子吗?

04f5怎么样2017看这里!头条|2017银川3所民办中学小升初电脑派位录取名单出炉,来看看有你家孩子吗?

04f5怎么样2017相关介绍,7月11日上午,记者从2017民营小升初计算机部署现场获悉,今年加入我市3所民营中学计算机部署网络的人数为5227人。其中银川外国语学校1970人,银川预警学校1789人,银川英才学校1468人,此次...

04f5怎么样2017看这里!以太坊盗币方式揭秘之“偷渡时代”

04f5怎么样2017看这里!以太坊盗币方式揭秘之“偷渡时代”

04f5怎么样2017相关介绍,摘要:攻击者通过端口扫描等方式发现受害者打开JSON-rpc端口后,查询当前节点的最新块高度和该节点上已存在的帐户。 查询账户余额并发起转账申请。当受害者解锁账户时,被攻击者就完成攻击。 古人的盗亦有...