Отправить сертификат .crt в запросе https - PullRequest
0 голосов
/ 18 декабря 2018

Я новичок в концепции сертификатов. Может ли кто-нибудь помочь, как отправить сертификат в запросе https.Моя команда CURL ниже:

curl -d "grant_type=password&client_id=SmartRest&client_secret=594a27f3-4432-4d37-9196-2ba49de52758&username=user123&password=welcome123" https://xxxxxxx.xxx.in:8543/auth/realms/restapi/protocol/openid-connect/token --cacert ./ca_bundle.crt

То же самое, что мне нужно отправить в моем коде Java, у меня есть только один файл .crt, у меня нет пароля или чего-либо еще.

1 Ответ

0 голосов
/ 18 декабря 2018

Я доверял сертификату по приведенной ниже команде keytool.

keytool -import -trustcacerts -file "ca_bundle.crt" -alias "alias" -keystore  "C:\Program Files\Java\jdk1.8.0_131\jre\lib\security\cacerts"

Ниже код работает нормально, не нужно пропускать проверку ssl.

public static void main(String[] args) throws Exception {

   HttpsURLConnection con = (HttpsURLConnection) new URL("https://xxxx.xxx.xx:8543/auth/realms/restapi/protocol/openid-connect/token").openConnection();
   con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
   String urlParameters = "grant_type=password&client_id=SmartRest&client_secret=594a27f3-4432-4d37-9196-2ba49de52758&username=user123&password=welcome123";

   con.setDoOutput(true);
   DataOutputStream wr = new DataOutputStream(con.getOutputStream());
   wr.writeBytes(urlParameters);
   wr.flush();
   wr.close();

   BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
   String inputLine;
   StringBuffer response = new StringBuffer();

   while ((inputLine = in.readLine()) != null) {
      response.append(inputLine);
   }
   in.close();

   //print result
   System.out.println(response.toString());

}

Я получил результат.

...