亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JDK8 -> JDK10:PKIX 路徑構建失?。?/h1>

問題我有一個使用名為的應用程序的 SpringBoot 應用程序Launchdarkly,它利用okhttp我正在從 JRE 8 遷移到 JRE 10,對其他資源的調用工作,但使用調用失敗 okhttp編輯:任何具有類似于我們應用程序使用的證書鏈的應用程序都可能發生這種情況。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例外錯誤發生在線程中...config-server_1  | 2018-11-10T21:25:19,147 67327 | DEBUG | okhttp-eventsource-[] ["okhttp-eventsource-stream-[]-0" {}] Connection problem.config-server_1  | 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 targetconfig-server_1  |  at sun.security.ssl.Alerts.getSSLException(Alerts.java:198) ~[?:?]config-server_1  |  at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1974) ~[?:?]config-server_1  |  at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:345) ~[?:?]config-server_1  |  at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:339) ~[?:?]config-server_1  |  at sun.security.ssl.ClientHandshaker.checkServerCerts(ClientHandshaker.java:1968) ~[?:?]config-server_1  |  at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1777) ~[?:?]config-server_1  |  at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:264) ~[?:?]config-server_1  |  at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1098) ~[?:?]config-server_1  |  at sun.security.ssl.Handshaker.processRecord(Handshaker.java:1026) ~[?:?]設置使用 jlink和選擇模塊來構建小型 JRE使用 Docker 在https://dev.to/gimlet2/dockerizing-java-10-spring-boot-app-3b4c安裝當前應用在 Docker 中的 JRE8 上運行(相同的基本映像)我只JAVA_HOME設置了...不確定我們是否需要其他任何東西
查看完整描述

1 回答

?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

從 JDK 8 遷移到 JDK 10 時的解決方案

證書真的不一樣

JDK 10 有 80 個,而 JDK 8 有 151 個

JDK 10 最近添加了 certs

https://dzone.com/articles/openjdk-10-now-includes-root-ca-certificates

http://openjdk.java.net/jeps/319

JDK 10

root@c339504909345:/opt/jdk-minimal/jre/lib/security #  keytool -cacerts -list

Enter keystore password:

Keystore type: JKS

Keystore provider: SUN


Your keystore contains 80 entries

JDK 8

root@c39596768075:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/cacerts #  keytool -cacerts -list

Enter keystore password:

Keystore type: JKS

Keystore provider: SUN


Your keystore contains 151 entries

修復步驟

我沒有檢查哪個證書鏈不受信任,但服務器的 URL 證書是有效的......cacerts來自 JDK 10 的鏈截至今天已損壞。我可以斷言,因為來自https://download.java.net/java/GA/jdk10/10/binaries/openjdk-10_linux-x64_bin.tar.gz的下載 被安裝在一個全新的 Docker 映像中。


我刪除了 JDK 10 證書并將其替換為 JDK 8

由于我正在構建 Docker 映像,因此我可以使用多階段構建快速完成此操作

我正在使用jlinkas構建一個最小的 JRE/opt/jdk/bin/jlink \

--module-path /opt/jdk/jmods...

所以,這是不同的路徑和命令的順序......


# Java 8

COPY --from=marcellodesales-springboot-builder-jdk8 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/cacerts /etc/ssl/certs/java/cacerts


# Java 10

RUN rm -f /opt/jdk-minimal/jre/lib/security/cacerts

RUN ln -s /etc/ssl/certs/java/cacerts /opt/jdk-minimal/jre/lib/security/cacerts


查看完整回答
反對 回復 2022-01-12
  • 1 回答
  • 0 關注
  • 315 瀏覽
慕課專欄
更多

添加回答

了解更多

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號