我有一個Java服務器和它正在從一個客戶端通過SSL連接搗爛,但根據記錄,它看起來像客戶端不信任我們的服務器證書:如何在JVM上的SSL跟蹤中顯示客戶端的IP地址?
javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:2023)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1125)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)
我們不知道哪客戶端正在造成這種情況,並且有太多可以檢查的地方,其中一些甚至是在我們無法訪問的遠程環境中。啓用javax.net.debug =所有JVM參數不會給我任何客戶端建立連接的線索。
是否有人知道我可以使用的附加JVM參數(Oracle JDK),它將提供關於建立SSL連接的客戶端的IP地址/主機名的更多信息?
如果沒有,我會如何去找出客戶是誰的想法?我正在考慮收集TCP/IP數據包,並嘗試查找在serverHello消息之後立即終止的不完整SSL握手。
不是真的。錯誤發生在TLS握手過程中,所以你永遠不會到達HTTP的地方,即請求一個URL並調用一個servlet。 – Lothar