JAVA有一個keystore用來存放私鑰和證書,該文件是伴隨JDK默認存在的,路徑默認是/lib/security/cacerts,默認密碼是changeit,實際上空密碼也可以直接訪問
其中cacerts就是上面說的keystore
我們使用命令keytool -list -rfc -keystore cacerts來列出其中的內容
-list -rfc 這些參數的意思可以參考下圖
在樂山的時候,我們的代碼曾經在測試環境報過一個錯誤
我們代碼報這個錯,是在KeyProvider這個bean實例化的時候,要給密鑰容器密碼賦值,我們配的是明文12345678,導致解密失敗。實際上配置密文就可以了。
但是為什么配了明文之后,解密失敗,最后keystorePassword為空,竟然也能正常工作呢。
經過查資料和不斷實驗,我發現無論keystore設置什么密碼,都能以空密碼進入。也就是說,keystore就是可以在不輸入密碼的時候訪問的。那這個密碼的用途是什么呢。
在不輸入密碼的時候訪問keystore,有一段提示
***************** WARNING WARNING WARNING ***************** * 存儲在您的密鑰庫中的信息的完整性 * * 尚未經過驗證! 為了驗證其完整性, * * 必須提供密鑰庫口令。 * ***************** WARNING WARNING WARNING *****************
可以看出,該密碼的作用是為了維護信息的完整性
具體的工作機制,在stackoverflow中有人做了解答:https://stackoverflow.com/questions/2343691/do-you-not-need-a-password-to-access-a-truststore-made-with-the-java-keytool