我有兩個(gè)應(yīng)用程序,一個(gè)是用 nodejs 編寫(xiě)的(在本例中是簡(jiǎn)單的模擬服務(wù)器)和 spring 應(yīng)用程序(核心應(yīng)用程序)。我想在這兩者之間創(chuàng)建一個(gè) SSL 連接。首先,我生成了一對(duì)密鑰和證書(shū),然后簡(jiǎn)單地設(shè)置一個(gè) nodejs 以通過(guò) SSL 工作(我使用了這個(gè)例子:設(shè)置 SSL - nodeJs)。我已經(jīng)檢查過(guò),當(dāng)我在瀏覽器中寫(xiě)入時(shí)https://localhost:3000它給了我一個(gè)“安全”連接(帶有打開(kāi)的掛鎖 - 所以沒(méi)關(guān)系)。接下來(lái)我使用設(shè)置 SSL - Spring在 spring 應(yīng)用程序上進(jìn)行配置。我從上一步生成的證書(shū)中獲取了證書(shū),并將其在密鑰庫(kù)中設(shè)置為 .p12 文件。在 spring 應(yīng)用程序中,我將節(jié)點(diǎn)應(yīng)用程序的 url 更改為 https。當(dāng)我嘗試從 spring 應(yīng)用程序連接并從節(jié)點(diǎn)獲取一些模擬數(shù)據(jù)時(shí),我得到了這個(gè)堆棧跟蹤:Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target我在堆棧中發(fā)現(xiàn)了一些東西,但是當(dāng)我在特定目錄中設(shè)置此證書(shū)然后重新啟動(dòng)我的應(yīng)用程序時(shí),結(jié)果是一樣的。有沒(méi)有人可能知道此配置中可能有什么問(wèn)題以及如何解決它的一些建議?
1 回答

蕪湖不蕪
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊
我找到了這個(gè)問(wèn)題的解決方案。我不知道為什么,但是當(dāng)我創(chuàng)建一個(gè)內(nèi)部帶有證書(shū)的密鑰庫(kù),然后在我的 spring 應(yīng)用程序中使用它時(shí),它無(wú)法在全局范圍內(nèi)找到帶有證書(shū)的密鑰庫(kù)。我一直在尋找有關(guān) openJDK11 的文檔(因?yàn)槲沂褂眠^(guò)它)并找到了一個(gè)指向啟用無(wú)限強(qiáng)度管轄策略的鏈接并檢查了我擁有 openJDK11 版本的文件。
在我的例子中,來(lái)自的那一行crypto.policy
被評(píng)論了,不知道為什么。當(dāng)我取消注釋并設(shè)置它時(shí),unlimited
它又給我一個(gè)錯(cuò)誤,但后來(lái)我找到了另一種解決方案。我發(fā)現(xiàn),我需要將我的自簽名證書(shū)添加到 cacerts 文件(如何將我的自簽名證書(shū)添加到 cacerts)。在這兩個(gè)操作之后,它就像魅力一樣。
添加回答
舉報(bào)
0/150
提交
取消