А у вас JRE одна установлена?
Возможно, все-таки какая-то ошибка в связке jetty и jre.
jtls (cpSSL.jar) для работы с ГОСТ TLS вы установили?
Попробовал воспроизвести вашу ситуацию: Windows 7 (32-б.), Eclipse Indigo + jetty 7.1, тестовый сервлет, который выполняет похожий (взят из поста) код:
// Доверенный сертификат.
KeyStore trustStore = KeyStore.getInstance("HDImageStore", "JCP");
trustStore.load(new FileInputStream("...\\app\\store\\CATrustStore"),
"Pass1234".toCharArray());
// Менеджер хранилища
TrustManagerFactory tmf = TrustManagerFactory.getInstance("GostX509");
tmf.init(trustStore);
TrustManager tms[] = tmf.getTrustManagers();
// Ключи JCP - у меня есть там подходящий ключ для двухсторонней аутентификации.
KeyStore keyStore = KeyStore.getInstance("HDImageStore", "JCP");
keyStore.load(null, null);
KeyManagerFactory kmf = KeyManagerFactory.getInstance("GostX509");
kmf.init(keyStore, "security".toCharArray());
KeyManager km[] = kmf.getKeyManagers();
// SSL Контекст
SSLContext sc = SSLContext.getInstance("GostTLS");
sc.init(km, tms, SecureRandom.getInstance("CPRandom", "JCP"));
SSLSocketFactory sslFactory = sc.getSocketFactory();
// Подключаемся к
https://cpca.cryptopro.ru/tls/tls-cli.asp, где нужна двухсторонняя аутентификация по ГОСТ TLS 1.0
Socket socket = sslFactory.createSocket("cpca.cryptopro.ru", 443);
final InputStream in = socket.getInputStream();
final OutputStream out = socket.getOutputStream();
// Запрос.
final String req = "GET /tls/tls-cli.asp HTTP/1.0\r\n\r\n";
....
// Вывод на экран
....
Получил ожидаемую страницу с параметрами сертификата клиента.
Пробовал и другой вариант - более короткий:
// Задаем клиентский сертификат и ключ.
System.setProperty("javax.net.ssl.keyStoreType", "HDImageStore");
System.setProperty("javax.net.ssl.keyStore", "my_alias");
System.setProperty("javax.net.ssl.keyStorePassword", "security");
URL url = new URL("https://cpca.cryptopro.ru/tls/tls-cli.asp");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.connect();
// Читаем страницу.
String result = print_content(connection);
connection.disconnect();
Выводится та же страница.
Отредактировано пользователем 4 апреля 2012 г. 4:05:43(UTC)
| Причина: Не указана