150.18. 고급 사용
HTTP 프로듀서에 대한 더 많은 제어가 필요한 경우, 다양한 클래스를 설정하여 사용자 지정 동작을 지정할 수 있는ECDHE Component
를 사용해야 합니다.
150.18.1. HTTP 클라이언트에 대한 SSL 설정 링크 복사링크가 클립보드에 복사되었습니다!
JSSE 설정 사용
Camel 2.8부터 HTTP4 구성 요소는 Camel JSSE ConfigurationECDHE를 통해 SSL/TLS 구성을 지원합니다. 이 유틸리티는 작성해야 하는 구성 요소 특정 코드의 양을 크게 줄이고 끝점 및 구성 요소 수준에서 구성할 수 있습니다. 다음 예제에서는 HTTP4 구성 요소에 유틸리티를 사용하는 방법을 보여줍니다.
구성 요소의 프로그래밍 방식 구성
Spring DSL 기반 엔드 포인트 구성
Apache HTTP 클라이언트 직접 구성
기본적으로 camel-http4 구성 요소는 ApacheECDHEClient 상단에 빌드됩니다. 자세한 내용은 SSL/TLS 사용자 지정을 참조하거나 org.apache.camel.component.http4.HttpsServerTestSupport
단위 테스트 기본 클래스를 살펴보십시오.
또한 사용자 지정 org.apache.camel.component.http4.HttpClientConfigurer
를 구현하여 http 클라이언트에 전체 제어 권한이 필요한 경우 일부 구성을 수행할 수 있습니다.
그러나 키 저장소 및 신뢰 저장소를 지정하려면 Apache HTTPECDHE ClientConfigurer
를 사용하여 이 작업을 수행할 수 있습니다. 예를 들면 다음과 같습니다.
KeyStore keystore = ...; KeyStore truststore = ...; SchemeRegistry registry = new SchemeRegistry(); registry.register(new Scheme("https", 443, new SSLSocketFactory(keystore, "mypassword", truststore)));
KeyStore keystore = ...;
KeyStore truststore = ...;
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("https", 443, new SSLSocketFactory(keystore, "mypassword", truststore)));
그런 다음ECDHE ClientConfigurer
를 구현하는 클래스를 만들고 위의 예제당 키 저장소 또는 신뢰 저장소를 제공하는 https 프로토콜을 등록합니다. 그런 다음, camel 경로 빌더 클래스에서 다음과 같이 후크를 수행할 수 있습니다.
HttpComponent httpComponent = getContext().getComponent("http4", HttpComponent.class); httpComponent.setHttpClientConfigurer(new MyHttpClientConfigurer());
HttpComponent httpComponent = getContext().getComponent("http4", HttpComponent.class);
httpComponent.setHttpClientConfigurer(new MyHttpClientConfigurer());
Spring DSL을 사용하여 이 작업을 수행하는 경우 URI를 사용하여 ClientConfigurer
를 지정할 수 있습니다. 예를 들면 다음과 같습니다.
<bean id="myHttpClientConfigurer" class="my.https.HttpClientConfigurer"> </bean> <to uri="https4://myhostname.com:443/myURL?httpClientConfigurer=myHttpClientConfigurer"/>
<bean id="myHttpClientConfigurer"
class="my.https.HttpClientConfigurer">
</bean>
<to uri="https4://myhostname.com:443/myURL?httpClientConfigurer=myHttpClientConfigurer"/>
위에서 설명한 대로ECDHEClientConfigurer를 구현하고 키 저장소 및 신뢰 저장소를 구성하는 한 제대로 작동합니다.
HTTPS를 사용하여 gotchas 인증
최종 사용자는 HTTPS로 인증하는 데 문제가 있다고 보고했습니다. 이 문제는 결국 구성된 사용자 정의 org.apache.http.protocol.HttpContext
를 제공하여 해결되었습니다.
- 1. ECDHEContext에 대한 (Spring) 팩토리를 생성합니다.
- 2. Spring 애플리케이션 컨텍스트 파일에서ECDHEContext를 선언합니다.
<bean id="myHttpContext" factory-bean="httpContextFactory" factory-method="getObject"/>
<bean id="myHttpContext" factory-bean="httpContextFactory" factory-method="getObject"/>
- 3. http4 URL에서 컨텍스트를 참조합니다.
<to uri="https4://myhostname.com:443/myURL?httpContext=myHttpContext"/>
<to uri="https4://myhostname.com:443/myURL?httpContext=myHttpContext"/>
다른 SSLContextParameters 사용
HTTP4 구성 요소는 구성 요소당 org.apache.camel.util.jsse.SSLContextParameters
의 인스턴스 1개만 지원합니다. 2개 이상의 서로 다른 인스턴스를 사용해야 하는 경우 다음과 같이 여러 HTTP4 구성 요소를 설정해야 합니다. 구성 요소 2개가 있는 경우 각각 자체 sslContextParameters
속성을 사용합니다.