日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

在linux下tomcat报javax.net.ssl.SSLHandshakeException sun.security.validator.ValidatorException: PKIX

發(fā)布時(shí)間:2025/3/19 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在linux下tomcat报javax.net.ssl.SSLHandshakeException sun.security.validator.ValidatorException: PKIX 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在本地windows環(huán)境Java服務(wù)器?訪問https服務(wù)器沒有問題,換到測試環(huán)境linux服務(wù)器訪問時(shí)出現(xiàn)上面這個(gè)問題,

是證書出問題了,服務(wù)器不信任我們自己創(chuàng)建的證書,所以在代碼中必須要忽略證書信任問題。只要在創(chuàng)建connection之前調(diào)用兩個(gè)方法:?

? ? ? ? trustAllHttpsCertificates();??

? ? ? ?HttpsURLConnection.setDefaultHostnameVerifier(hv);

兩個(gè)方法的具體實(shí)現(xiàn),如下:

  • HostnameVerifier?hv?=?new?HostnameVerifier()?{??
  • ????????public?boolean?verify(String?urlHostName,?SSLSession?session)?{??
  • ????????????System.out.println("Warning:?URL?Host:?"?+?urlHostName?+?"?vs.?"??
  • ???????????????????????????????+?session.getPeerHost());??
  • ????????????return?true;??
  • ????????}??
  • ????};??
  • ??????
  • ????private?static?void?trustAllHttpsCertificates()?throws?Exception?{??
  • ? ? ? ? //創(chuàng)建信任管理器來信任所有的證書
  • ????????javax.net.ssl.TrustManager[]?trustAllCerts?=?new?javax.net.ssl.TrustManager[1];??
  • ????????javax.net.ssl.TrustManager?tm?=?new?miTM();??
  • ????????trustAllCerts[0]?=?tm;??
  • ? ? ? ? //實(shí)例化SSL協(xié)議
  • ????????javax.net.ssl.SSLContext?sc?=?javax.net.ssl.SSLContext??
  • ????????????????.getInstance("SSL");??
  • ? ? ? ? //實(shí)例化SSl協(xié)議?信任所有證書
  • ????????sc.init(null,?trustAllCerts,?null);??
  • ????????javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc??
  • ????????????????.getSocketFactory());??
  • ????}??
  • ??
  • ????static?class?miTM?implements?javax.net.ssl.TrustManager,??
  • ????????????javax.net.ssl.X509TrustManager?{??
  • ????????public?java.security.cert.X509Certificate[]?getAcceptedIssuers()?{??
  • ????????????return?null;??
  • ????????}??
  • ??
  • ????????public?boolean?isServerTrusted(??
  • ????????????????java.security.cert.X509Certificate[]?certs)?{??
  • ????????????return?true;??
  • ????????}??
  • ??
  • ????????public?boolean?isClientTrusted(??
  • ????????????????java.security.cert.X509Certificate[]?certs)?{??
  • ????????????return?true;??
  • ????????}??
  • ??
  • ????????public?void?checkServerTrusted(??
  • ????????????????java.security.cert.X509Certificate[]?certs,?String?authType)??
  • ????????????????throws?java.security.cert.CertificateException?{??
  • ????????????return;??
  • ????????}??
  • ??
  • ????????public?void?checkClientTrusted(??
  • ????????????????java.security.cert.X509Certificate[]?certs,?String?authType)??
  • ????????????????throws?java.security.cert.CertificateException?{??
  • ????????????return;??
  • ????????}??
  • ????}?
  • 以上的解決辦法來自http://mengyang.iteye.com/blog/575671,在這里記錄一下這個(gè)問題。

    這里簡單介紹下HostnameVerifier,這個(gè)接口主要是javax.net.ssl用于主機(jī)名驗(yàn)證的基接口。

    其中verify()這個(gè)方法驗(yàn)證主機(jī)名和服務(wù)器驗(yàn)證方案,這里重寫了這個(gè)方法在連接期間,如果URL的主機(jī)名和服務(wù)器名不匹配則驗(yàn)證機(jī)制可以回調(diào)此借口的實(shí)現(xiàn)程序來確定是否應(yīng)該允許此鏈接。

    TrustManager從Java API那看是

    就是信任管理器負(fù)責(zé)管理在進(jìn)行信任決策時(shí)使用的信任材料,以及決定是否應(yīng)該接受對等方提供的憑據(jù)。通過使用TrustManagerFactory或通過實(shí)現(xiàn)TrustManager子類之一來創(chuàng)建信任管理器。

    SSLContext類:

    這個(gè)類的實(shí)例 代表socket協(xié)議實(shí)現(xiàn),它作為socket工廠或SSLEngress的工廠。這個(gè)類用一組可選的密鑰和信任管理器和安全隨機(jī)字節(jié)的源進(jìn)行初始化。Java平臺(tái)的每一個(gè)實(shí)現(xiàn)都需要支持以下標(biāo)準(zhǔn)SSLVIEW協(xié)議。

    HostnameVerifier接口:

    在握手期間,如果URL的主機(jī)名和服務(wù)器的標(biāo)識(shí)主機(jī)名不匹配,驗(yàn)證機(jī)制可以調(diào)用該接口的實(shí)現(xiàn)者來確定是否應(yīng)該允許該連接。

    這個(gè)策略可以是基于證書的,或者可以依賴于其他認(rèn)證方案。當(dāng)URL主機(jī)名驗(yàn)證的默認(rèn)規(guī)則失敗時(shí),將使用這個(gè)回調(diào)。

    與50位技術(shù)專家面對面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

    總結(jié)

    以上是生活随笔為你收集整理的在linux下tomcat报javax.net.ssl.SSLHandshakeException sun.security.validator.ValidatorException: PKIX的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。