2017-10-30 7 views
1

私は、クエリカールを使用して要求を取得することができます:RESTを作成するには証明書を使用してリクエストを取得しますか?

curl -k --key some.key --cert some.crt --url "https://app.com:7078/subscribers/checkExists/1" 

そのクエリの後、私は200 OKレスポンスを得ます。私はどのようにJavaで同じことを達成できますか? Spring RestTemplateを使用していますか?

私はインターネットでマニュアルによる認証チェックを無効にしてみました:

CloseableHttpClient httpClient = HttpClients.custom() 
      .setSSLHostnameVerifier(new NoopHostnameVerifier()) 
      .build(); 
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(); 
requestFactory.setHttpClient(httpClient); 

ResponseEntity<String> response = null; 
String urlOverHttps = "https://app.com:7078/subscribers/checkExists/1"; 
response = new RestTemplate(requestFactory).exchange(urlOverHttps, HttpMethod.GET, null, String.class); 

はまた、私は@Configurationを経由して、それを試してみました:

@Bean 
public boolean disableSSLValidation() throws Exception { 
    final SSLContext sslContext = SSLContext.getInstance("TLS"); 
    sslContext.init(null, new TrustManager[]{new X509TrustManager() { 
     @Override 
     public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { 
     } 

     @Override 
     public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { 
     } 

     @Override 
     public X509Certificate[] getAcceptedIssuers() { 
      return new X509Certificate[0]; 
     } 
    }}, null); 

    HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory()); 
    HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() { 
     public boolean verify(String hostname, SSLSession session) { 
      return true; 
     } 
    }); 
    return true; 
} 

そして、そのコード応答くれ400 Bad Requestエラー。私も%JAVA_HOME%\lib\securityに私のsome.crtファイルを追加し、コマンドでそれをインポート

UPD

- だから、keytool -import -alias ca -file some.crt -keystore cacerts -storepass changeit

、どのように私はSpring RestTemplateを使用してGETリクエストで私のsome.crtファイルを提供することができますか?

答えて

関連する問題