2
我對使用客戶端令牌執行SSL/TLS的客戶端證書身份驗證感興趣,但客戶端私鑰駐留在(不可PKCS11訪問的)硬件令牌上。我原本想替換密鑰管理器,但我不能從令牌中返回私鑰,所以我正在考慮修改底層的SSLSocket和相關類來完成我的目標。帶硬件令牌密鑰的SSLSocket
在哪些Java類是建立TLS會話中使用的私鑰,以便我可以覆蓋該功能?還有其他建議嗎?
我對使用客戶端令牌執行SSL/TLS的客戶端證書身份驗證感興趣,但客戶端私鑰駐留在(不可PKCS11訪問的)硬件令牌上。我原本想替換密鑰管理器,但我不能從令牌中返回私鑰,所以我正在考慮修改底層的SSLSocket和相關類來完成我的目標。帶硬件令牌密鑰的SSLSocket
在哪些Java類是建立TLS會話中使用的私鑰,以便我可以覆蓋該功能?還有其他建議嗎?
我最終通過創建一個新的提供者來做到這一點。我的提供商註冊以下內容:
提供程序將我的令牌註冊爲PKCS11設備,以避免在客戶端身份驗證期間(我使用自定義密碼提示輸入令牌PIN)的默認密碼提示。我將提供者放在提供者列表的頂部,創建了一個新的SSLContext並設置了SSLSocketFactory,並最終建立了連接。
-Djavax.net.debug = true在客戶端和服務器上始終是我的朋友。