Java-WebSocket - получить сертификат клиента с сервера для аутентификации - PullRequest
0 голосов
/ 25 сентября 2019

Я установил соединение websocket с использованием Java-WebSocket с работающим двусторонним соединением TLS.Однако, чтобы сделать возможной аутентификацию клиента, я бы хотел получить информацию, прикрепленную к сертификату клиента.Он будет содержать некоторую информацию о подключении клиента, поэтому было бы полезно иметь.

Я просмотрел все данные в режиме отладки для соединения и содержащиеся в нем данные, но не могу найти какую-либо ссылку насертификат.Похоже, что большинство вопросов в Интернете касаются стандартной веб-сокета javax, но тот, который я использую, сделан TooTallNate (https://github.com/TooTallNate/Java-WebSocket)

. Я бы хотел получить сертификат от установленного сеанса.возможно

1 Ответ

0 голосов
/ 26 сентября 2019

По-видимому, в новой версии появилась возможность получить SSLEngine из сеанса.Это должно присутствовать, начиная с версии 1.4.1, которая в настоящее время является SNAPSHOT.

Для всех, кто сталкивается с этим вопросом, это решение работает с используемой сборкой 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();
    }
}
...