Это кросс-пост от Mozilla Crypto Dev ML. Надеюсь, что кто-то на SO имеет некоторый опыт использования org.mozilla.jss
. Ссылка: JSS - MDN
Я пытаюсь сделать два отдельных HTTPS-запроса к удаленному хосту, используя два клиентских сокета и два разных клиентских сертификата соответственно (клиентский сертификат A и B). Моя тестовая программа является модифицированной версией SSLTest.java
С моего хоста я могу сделать два соединения на двух разных сокетах с удаленным хостом. Я могу получить 200 OK обратно с удаленного веб-сервера для обоих отдельных подключений.
Моя проблема в том, что клиентский сертификат «A» используется для обоих соединений «A» и «B».
Я использовал этот конструктор:
public SSLSocket(java.lang.String host,int port,
java.net.InetAddress localAddr,
int localPort,
SSLCertificateApprovalCallback certApprovalCallback,
SSLClientCertificateSelectionCallback clientCertSelectionCallback)
Я также реализовал интерфейс SSLClientCertificateSelectionCallback
( source ), чтобы использовать вышеуказанный конструктор и передать правильный сертификат клиента. Кроме того, я поместил строку в мою реализованную функцию SSLClientCertificateSelectionCallback
select()
, чтобы регистрировать, когда обратный вызов выполнен.
При запуске моего приложения и проверке журнала метод select () вызывается только один раз при создании первого SSLSocket (выбор Client Cert 'A') и никогда в будущих экземплярах SSLSocket, когда указан псевдоним Client Cert B , На самом деле, я должен перезапустить свое приложение, чтобы select()
снова запустился.
Есть ли способ запустить собственный код обратного вызова для запуска select()
при запросе сертификата удаленным сервером?
Спасибо
PR