慕桂英3389331
2023-08-23 15:01:06
我已經(jīng)使用 Java-WebSocket 和有效的雙向 TLS 連接建立了一個 websocket 連接。但是,為了使客戶端身份驗證成為可能,我希望能夠獲取客戶端證書附加的信息。這將包含一些有關客戶端連接的信息,因此擁有它會很有用。我已在調(diào)試模式下查看了連接及其包含的數(shù)據(jù)的所有數(shù)據(jù),但找不到對證書的任何引用。網(wǎng)上大多數(shù)問題似乎都是關于標準 javax websocket,但我使用的問題是由 TooTallNate 提出的(https://github.com/TooTallNate/Java-WebSocket)我希望能夠從已建立的會話中獲得證書。這可能嗎?
1 回答

弒天下
TA貢獻1818條經(jīng)驗 獲得超8個贊
顯然,在新版本中,從會話獲取 SSLEngine 的可能性已經(jīng)成為可能。這應該從版本 1.4.1 開始出現(xiàn),目前是一個快照。
對于其他遇到這個問題的人來說,這是一個從使用的 1.4.1-SNAPSHOT 版本開始工作的解決方案。此代碼應該在任何服務器事件中起作用。就我而言,我將其放置在 onOpen 事件中,我猜這也是您希望它出現(xiàn)的位置。我還沒有使用非 SSL 服務器對此進行全面測試,但由于有檢查到位,所以應該沒問題。不過,請?zhí)崆皽y試。
Certificate[] certificates = null;
if(webSocket.hasSSLSupport()) {
try {
certificates = webSocket.getSSLSession().getPeerCertificates();
} catch (SSLPeerUnverifiedException e) {
logger.error("Could not read SSL Certificates");
e.printStackTrace();
}
}
添加回答
舉報
0/150
提交
取消