Привет.
Скачал с
https://www.cryptopro.ru...oducts/csp/jcp/downloads Загрузить КриптоПро JCP и JTLS версии 2.0.38481, распаковал скачанный файл, запустил setup.exe из-под Администратора (правой кнопкой мыши). Выделил все галочки для установки.
Он что-то там своё понаставил в «мою» JRE/JDK (jdk1.8.0_60).
Далее, пытаюсь запустить простейший код:
Код:
package javaapplication2;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.security.Security;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.net.ssl.HttpsURLConnection;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import sun.security.ssl.SSLSocketFactoryImpl;
/**
*
* @author wwwdev
*/
public class JavaApplication2 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
try {
System.setProperty("javax.net.ssl.supportGVO", "true");
System.setProperty("javax.net.ssl.trustStoreType", "CertStore");
System.setProperty("javax.net.ssl.trustStore", "cacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "qwerty");
final SSLSocketFactoryImpl sslFact = new SSLSocketFactoryImpl();
HttpsURLConnection.setDefaultSSLSocketFactory(sslFact);
URL url = new URL("https://icrs.demo.nbki.ru/");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.connect();
InputStream is = connection.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
String line;
String response = "";
while ((line = rd.readLine()) != null) {
response += line + "\r\n";
}
rd.close();
is.close();
System.out.println(response);
connection.disconnect();
} catch (Exception ex) {
Logger.getLogger(JavaApplication2.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Код взят с
https://www.cryptopro.ru....aspx?g=posts&t=4259 , из thread, в котором описывается схожая проблема.
Выдаёт ошибку:
сен 01, 2015 8:14:19 PM javaapplication2.JavaApplication2 main
SEVERE: null
java.security.KeyStoreException: Default store provider (keyStore) is SUN but default config provider (cpSSL) is JCSP. Check settings on the tab 'Algorithms' of JCP Pane.
at ru.CryptoPro.ssl.r.<init>(Unknown Source)
at ru.CryptoPro.ssl.KeyManagerFactoryImpl.engineInit(Unknown Source)
at javax.net.ssl.KeyManagerFactory.init(KeyManagerFactory.java:256)
at sun.security.ssl.SSLContextImpl$DefaultSSLContext.getDefaultKeyManager(SSLContextImpl.java:874)
at sun.security.ssl.SSLContextImpl$DefaultSSLContext.<init>(SSLContextImpl.java:732)
at sun.security.ssl.SSLContextImpl$DefaultSSLContext.getDefaultImpl(SSLContextImpl.java:755)
at sun.security.ssl.SSLSocketFactoryImpl.<init>(SSLSocketFactoryImpl.java:54)
at javaapplication2.JavaApplication2.main(JavaApplication2.java:35)
Проверил – в закладке 'Algorithms' JCP Pane стояло Java Crypto… Provider … . Переставил на Java CSP – не помогло, выдаёт тот же Exception.
Ошибка толком не гуглится, видать слишком специфичная. Единственное, что нашёл схожее -
https://www.cryptopro.ru...aspx?g=posts&m=60425 . В том forum thread человек решил вопрос методом "Переименовал все jks-контейнеры какие были в JRE и в user.home, ", но Я не могу найти, есть ли вообще jks контейнеры или нет по указанным путям.
Подскажите, пожалуйста, как исправить?