Здравствуйте. Есть проблема. С помощью класса Client (который поставляется в samples/JTLS_samples) пытаюсь проверить работоспособность TLS соединения с демо-сайтом КриптоПро:
https://www.cryptopro.ru:9443/cryptopro/products/csp/test/tls-cli.asp
Указываю системные параметры:
System.setProperty("javax.net.ssl.trustStore", "E:\\my.truststore");
truststore запаролен, но пароль я не указываю. По хорошему JCP должен ругаться, но нет, он спокойно соединяется и скачивает страничку, на которой написано:
Защищенное соединение установлено
Сертификат пользователя предоставлен
Для отображения данных сертификата пользователя используется функция
Request.ClientCertificate( Key[SubField] )
Далее табличка с параметрами сертификата.
Но! Я ведь не предоставлял никакого сертификата, более того, truststore запаролен и проверка, есть ли в нем сертификат сайта КриптоПро не проверялась.
Так же у меня на машине установлен CSP 3.0 Если заходить по адресу
https://www.cryptopro.ru:9443/cryptopro/products/csp/test/tls-cli.asp из IE - все нормально, выскакивает окошко выбора сертификата (в списке есть только сертификаты, выданные УЦ КриптоПро, так и должно быть? Выданные другими УЦ не должны быть в этом списке?). Если сертификат не выбрать - возвращается страничка на которой написано:
Защищенное соединение установлено
Сертификат пользователя не предоставлен
Объясните пожалуйста. Как правильно создавать сокет и как указывать системные параметры, чтобы он на них правильно реагировал. Т.е., чтобы ругался, если сертификата сервера нет в truststore и чтобы передавал на сервер свой сертификат, если он есть в keystore.
Заранее спасибо.