JRE 導(dǎo)入 StartSSL 證書

0x00 緒言

通過(guò) java 執(zhí)行 https 請(qǐng)求時(shí)可能出現(xiàn)以下錯(cuò)誤:

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

這是因?yàn)?java 在執(zhí)行 SSL/TLS 通訊時(shí)使用特定的數(shù)據(jù)識(shí)別 Certificate Authorities(CA),如果你試圖發(fā)起的 SSL/TLS 連接使用不屬于這些根證書機(jī)構(gòu)所頒發(fā)的證書,就會(huì)拋出

SunCertPathBuilderException: unable to find valid certification path to requested target

因此,如果你使用自簽名證書,或者根證書機(jī)構(gòu)不在 JRE 默認(rèn)信任列表中,則需要向 JRE 導(dǎo)入根證書。

最近我們有個(gè)項(xiàng)目使用了沃通的免費(fèi) SSL 證書,因其根證書屬于 StartSSL 并不在 JRE 默認(rèn)信任列表中,因此簡(jiǎn)單記錄下導(dǎo)入過(guò)程。

0x01 導(dǎo)入根證書到 JRE

首先,我們需要獲取根證書:

mkdir ~/tmp
cd ~/tmp

curl http://www.startssl.com/certs/ca.crt -O
curl http://www.startssl.com/certs/sub.class1.server.ca.crt -O
curl http://www.startssl.com/certs/sub.class2.server.ca.crt -O
curl http://www.startssl.com/certs/sub.class3.server.ca.crt -O
curl http://www.startssl.com/certs/sub.class4.server.ca.crt -O

然后,將證書導(dǎo)入到 JRE 信任列表:

sudo keytool -import -trustcacerts -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/security/cacerts -storepass changeit -noprompt -alias startcom.ca -file ca.crt

sudo keytool -import -trustcacerts -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/security/cacerts -storepass changeit -noprompt -alias startcom.ca.sub.class1 -file sub.class1.server.ca.crt

sudo keytool -import -trustcacerts -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/security/cacerts -storepass changeit -noprompt -alias startcom.ca.sub.class2 -file sub.class2.server.ca.crt

sudo keytool -import -trustcacerts -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/security/cacerts -storepass changeit -noprompt -alias startcom.ca.sub.class3 -file sub.class3.server.ca.crt

sudo keytool -import -trustcacerts -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/security/cacerts -storepass changeit -noprompt -alias startcom.ca.sub.class4 -file sub.class4.server.ca.crt

別奇怪,"changeit" 只是個(gè)默認(rèn)密碼而已。

最后,驗(yàn)證一下導(dǎo)入是否成功:

keytool -keystore "/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/security/cacerts" -storepass changeit -list | grep start

輸出:

startcom.ca, 2015-11-3, trustedCertEntry,
startcom.ca.sub.class4, 2015-11-3, trustedCertEntry,
startcom.ca.sub.class3, 2015-11-3, trustedCertEntry,
startcom.ca.sub.class2, 2015-11-3, trustedCertEntry,
startcom.ca.sub.class1, 2015-11-3, trustedCertEntry,

It's OK!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,724評(píng)論 19 139
  • 原文: 高性能網(wǎng)絡(luò)瀏覽器-第四章傳輸層安全性(Transport Layer Security,TLS) 翻譯: ...
    夢(mèng)很想家閱讀 4,981評(píng)論 2 6
  • 根證書含義 - 孤舟蓑笠翁,獨(dú)釣寒江雪 - 博客頻道 - CSDN.NET 本文想簡(jiǎn)單談?wù)勀莻€(gè)所謂的...
    拉肚閱讀 2,498評(píng)論 0 1
  • 目錄 準(zhǔn)備 分析2.1. 三次握手2.2. 創(chuàng)建 HTTP 代理(非必要)2.3. TLS/SSL 握手2.4. ...
    RunAlgorithm閱讀 39,078評(píng)論 12 117
  • 沒有什么比心累還累的了,我想我應(yīng)該先放下一段時(shí)間了。不管她了,過(guò)好自己的生活吧,離開了誰(shuí)地球都照樣轉(zhuǎn),為什么我就不...
    下午茶咖啡閱讀 235評(píng)論 0 0

友情鏈接更多精彩內(nèi)容