Серверная сторона предоставила мне файл сертификата .p12
, который я нажал и установил на своей машине, а затем я могу получить доступ к сайту HTTPS
через браузер. Теперь они хотят, чтобы я сканировал их сайт с предоставленным сертификатом. Я застрял на самом первом этапе, пытаясь получить inputStream
из httpsURLConnection
. На сайте нет логина. Он проверяет, есть ли у вас сертификат или нет.
Что я сделал до сих пор, так это использовать Firefox для экспорта сертификата в формате .crt
. Затем я использовал команду keytool для ее импорта (файл .crt
, а не .p12
) в java keystore. Затем в коде:
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. На сайте нет логина. Если сертификат установлен, я могу войти.