149.18.4. HTTP 클라이언트의 SSL 설정

JSSE 구성 유틸리티 사용

Camel 2.8부터 HTTP4 구성 요소는 Camel JSSE 구성 유틸리티를 통해 SSL/TLS 구성을 지원합니다.  이 유틸리티는 작성하는 데 필요한 구성 요소별 코드의 양을 크게 줄이고 엔드포인트 및 구성 요소 수준에서 구성할 수 있습니다.  다음 예제에서는 HTTP4 구성 요소에서 유틸리티를 사용하는 방법을 보여줍니다.

이 구성 요소에 사용되는 Apache HTTP 클라이언트 버전은 글로벌 "프로토콜" 레지스트리의 SSL/TLS 정보를 해결합니다.  이 구성 요소는 Camel JSSE 구성 유틸리티 사용을 지원하기 위해 HTTP 클라이언트의 프로토콜 소켓 팩토리의 구현 org.apache.camel.http.SSLContextParametersSecureProtocolSocketFactory.  다음 예제에서는 프로토콜 레지스트리를 구성하고 경로에 등록된 프로토콜 정보를 사용하는 방법을 보여줍니다.

KeyStoreParameters ksp = new KeyStoreParameters();
ksp.setResource("/users/home/server/keystore.jks");
ksp.setPassword("keystorePassword");

KeyManagersParameters kmp = new KeyManagersParameters();
kmp.setKeyStore(ksp);
kmp.setKeyPassword("keyPassword");

SSLContextParameters scp = new SSLContextParameters();
scp.setKeyManagers(kmp);

ProtocolSocketFactory factory =
    new SSLContextParametersSecureProtocolSocketFactory(scp);

Protocol.registerProtocol("https",
        new Protocol(
        "https",
        factory,
        443));

from("direct:start")
        .to("https://mail.google.com/mail/").to("mock:results");

Apache HTTP 클라이언트 직접 구성

기본적으로 camel-http 구성 요소는 Apache HTTP 클라이언트 위에 구축되어 사용자 지정 org.apache.camel.component.http.HttpClientConfigurer 를 구현하여 http 클라이언트에서 일부 구성을 수행할 수 있습니다.

그러 키 저장소 및 truststore를 지정하려면 Apache HTTP HttpClientConfigurer 을 사용하여 이 작업을 수행할 수 있습니다. 예를 들면 다음과 같습니다.

Protocol authhttps = new Protocol("https", new AuthSSLProtocolSocketFactory(
  new URL("file:my.keystore"), "mypassword",
  new URL("file:my.truststore"), "mypassword"), 443);

Protocol.registerProtocol("https", authhttps);

그런 다음 HttpClientConfigurer 을 구현 하는 클래스를 만들고 위의 예제당 키 저장소 또는 truststore를 제공 하는 https 프로토콜을 등록 해야 합니다.And then you need to create a class that implements HttpClientConfigurer , and register https protocol providing a keystore or truststore per example above. 그런 다음 camel 경로 빌더 클래스에서 다음과 같이 연결할 수 있습니다.

HttpComponent httpComponent = getContext().getComponent("http", HttpComponent.class);
httpComponent.setHttpClientConfigurer(new MyHttpClientConfigurer());

Spring DSL을 사용하여 이를 수행하는 경우 URI를 사용하여 HttpClientConfigurer 를 지정할 수 있습니다. 예를 들면 다음과 같습니다.

<bean id="myHttpClientConfigurer"
 class="my.https.HttpClientConfigurer">
</bean>

<to uri="https://myhostname.com:443/myURL?httpClientConfigurerRef=myHttpClientConfigurer"/>

위에서 설명한 대로 HttpClientConfigurer를 구현하고 키 저장소 및 truststore를 구성하는 한, 작업이 잘 작동합니다.As long you implement the HttpClientConfigurer and configure your keystore and truststore as described above, it will work fine.