Простая команда keytool экспортирует ваше хранилище ключей .p12 в хранилище ключей .jks:

рная сторона дала мне.p12 файл сертификата, который я щелкнул и установил на моем компьютере, а затем я могу получить доступ кHTTPS сайт через браузер. Теперь они хотят, чтобы я сканировал их сайт с выданным сертификатом. Я застрял на самом первом этапе, пытаясь получитьinputStream изhttpsURLConnection, На сайте нет логина. Он только проверяет, есть ли у вас сертификат или нет.

До сих пор я использовал Firefox для экспорта сертификата в.crt формат файла. Затем я использовал команду keytool для ее импорта (.crt файл, а не.p12) в хранилище ключей Java. Тогда в коде:

KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
File ksFile = new File(keystorePath);
in = new FileInputStream(ksFile);
ks.load(in, "changeit".toCharArray());
X509Certificate cert = (X509Certificate) ks.getCertificate(certificateAlias);

SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

HttpsURLConnection con = (HttpsURLConnection) (new URL(urlString)).openConnection();
con.connect();
con.getInputStream();
con.disconnect();

getInputStream() выдаст мне 403 ошибки запрещенного доступа. Я искал другие связанные темы и на самом деле глубоко запутался, чем до их чтения. Буду очень признателен за ответы.

Дополнительные детали:

Я только что создал экземпляр сертификата и не дал программе знать какие-либо ключи (частные, открытые и т. Д.). Поэтому я считаю, что должен предоставить эти ключи серверу, чтобы он знал, что у меня есть сертификат. Я абсолютно не представляю, как это сделать, как с точки зрения логики, так и синтаксиса.Я пробовал команду keytool для импорта файла сертификата .p12 в хранилище ключей, но каким-то образом опция -pkcs12 не распознается инструментом keytool. Любая идея о том, как напрямую использовать этот сертификат .p12, также будет отличной.trustAllCert - это массив элементов TrustMangers, который ничего не проверяет (доверяет всем). Я не знаю, должен ли я продолжать использовать это. На самом деле, теперь у меня есть один сертификат, которому можно доверять. Как правильно написать trustManger в этом случае?У меня нет контроля над серверной стороной. Все, что мне дали, - это URL для доступа к их сайту по протоколу HTTPS и сертификат .p12. На сайте нет логина. Если сертификат установлен, я могу зайти.

Ответы на вопрос(2)

Ваш ответ на вопрос