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

弒天下
TA貢獻1818條經驗 獲得超8個贊
顯然,在新版本中,從會話獲取 SSLEngine 的可能性已經成為可能。這應該從版本 1.4.1 開始出現,目前是一個快照。
對于其他遇到這個問題的人來說,這是一個從使用的 1.4.1-SNAPSHOT 版本開始工作的解決方案。此代碼應該在任何服務器事件中起作用。就我而言,我將其放置在 onOpen 事件中,我猜這也是您希望它出現的位置。我還沒有使用非 SSL 服務器對此進行全面測試,但由于有檢查到位,所以應該沒問題。不過,請提前測試。
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
提交
取消