Я создал запрос CSR с помощью этой команды:
openssl req -out certificatecsr.csr -new -newkey rsa: 2048 -keyout certificatekey.key
После этого CA поделился со мной файлом сертификата (.cer).
Теперь после этого я преобразовал файл .cer в .p12 с помощью ключа.
Создание сертификата .p12 с использованием сертификата, отправленного центром сертификации, и закрытого ключа
C: \ Java \ jdk1.6.0_38 \ jre \ bin> openssl pkcs12 -export -in C: \ Users \ asharma1 \ cert.cer -inkey certificatekey.key -out
certi.p12
Создание хранилища ключей JKS:
keytool -genkey -alias quid -keystore quid.jks
импорт сертификата .p12 в хранилище ключей jks
C: \ Java \ jdk1.6.0_38 \ jre \ bin> keytool -v -importkeystore -srckeystore C: \ OpenSSL-Win64 \ bin \ certi.p12 -srcstoretype PKCS12
-destkeystore quid.jks -deststoretype JKS
но когда я ссылаюсь на этот JKS из своего java-кода, я получаю эту ошибку:
sun.security.validator.ValidatorException: сбой при построении пути PKIX:
sun.security.provider.certpath.SunCertPathBuilderException: невозможно найти действительный путь сертификации для запрошенной цели
Я также добавил файл cer в cacerts. но все еще получаю ту же ошибку.
Что касается кода JAVA, я ссылаюсь на эту ссылку, чтобы ссылаться на мое собственное созданное хранилище ключей:
http://jcalcote.wordpress.com/2010/06/22/managing-a-dynamic-java-trust-store/
public SSLContext getSSLContext(String tspath)
throws Exception {
TrustManager[] trustManagers = new TrustManager[] {
new ReloadableX509TrustManager(tspath)
};
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, trustManagers, null);
return sslContext;
}
SSLContext sslContext=getSSLContext("C:\\Java\\jdk1.6.0_38\\jre\\bin\\quid.jks");
SSLSocketFactory socketFactory = sslContext.getSocketFactory();
URL pickUrl = new URL(pickupLocation);
URLConnection urlConn = pickUrl.openConnection();
HttpsURLConnection httpsURLConn = (HttpsURLConnection)urlConn;
httpsURLConn.setSSLSocketFactory(socketFactory);
String encoding = urlConn.getContentEncoding();
InputStream is = urlConn.getInputStream();
InputStreamReader streamReader = new InputStreamReader(is, encoding != null
? encoding : "UTF-8");
Обратите внимание, я не использую сервер. Я пытаюсь запустить выше написанный код только с помощью основного метода.
Пожалуйста, дайте мне знать, что нужно сделать. Зачем мне нужно конвертировать мой файл .cer в файл .p12?
openssl req -out certificatecsr.csr -new -newkey rsa:2048 -keyout certificatekey.key
создает новый запрос сертификата и новый закрытый ключ на основе документации, здесь а> - person pepo   schedule 15.07.2014