151.18. 고급 사용


HTTP 생산자를 더 많이 제어해야 하는 경우 다양한 클래스를 설정하여 사용자 지정 동작을 제공할 수 있습니다.

151.18.1. HTTP Client를 위한 SSL 설정

JSSE 구성 유틸리티 사용

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

구성 요소의 프로그래밍 방식 구성

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);

HttpComponent httpComponent = getContext().getComponent("https4", HttpComponent.class);
httpComponent.setSslContextParameters(scp);
Copy to Clipboard Toggle word wrap

끝점의 Spring DSL 기반 구성

...
  <camel:sslContextParameters
      id="sslContextParameters">
    <camel:keyManagers
        keyPassword="keyPassword">
      <camel:keyStore
          resource="/users/home/server/keystore.jks"
          password="keystorePassword"/>
    </camel:keyManagers>
  </camel:sslContextParameters>...
...
  <to uri="https4://127.0.0.1/mail/?sslContextParameters=#sslContextParameters"/>...
Copy to Clipboard Toggle word wrap

직접 Apache HTTP 클라이언트 구성

기본적으로 camel-http4 구성 요소는 Apache CryostatClient 위에 빌드됩니다. 자세한 내용은 SSL/TLS 사용자 지정을 참조하거나 org.apache.camel.component.http4.HttpsServerTestSupport 단위 테스트 기본 클래스를 살펴보십시오.
사용자 지정 org.apache.camel.component.http4.HttpClientConfigurer 를 구현하여 전체 제어가 필요한 경우 http 클라이언트에서 일부 구성을 수행할 수도 있습니다.

그러나 키 저장소 및 신뢰 저장소를 지정하려는 경우 Apache HTTP#159 ClientConfigurer 를 사용하여 이 작업을 수행할 수 있습니다. 예를 들면 다음과 같습니다.

KeyStore keystore = ...;
KeyStore truststore = ...;

SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("https", 443, new SSLSocketFactory(keystore, "mypassword", truststore)));
Copy to Clipboard Toggle word wrap

그런 다음 Cryostat ClientConfigurer 를 구현하는 클래스를 만들고 위의 예제당 키 저장소 또는 신뢰 저장소를 제공하는 https 프로토콜을 등록해야합니다. 그런 다음 camel 경로 빌더 클래스에서 다음과 같이 연결할 수 있습니다.

HttpComponent httpComponent = getContext().getComponent("http4", HttpComponent.class);
httpComponent.setHttpClientConfigurer(new MyHttpClientConfigurer());
Copy to Clipboard Toggle word wrap

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

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

<to uri="https4://myhostname.com:443/myURL?httpClientConfigurer=myHttpClientConfigurer"/>
Copy to Clipboard Toggle word wrap

위에서 설명한 대로 EnglishClientConfigurer를 구현하고 키 저장소 및 신뢰 저장소를 구성하면 제대로 작동합니다.

HTTPS를 사용하여 gotchas 인증

최종 사용자는 HTTPS로 인증하는 데 문제가 있다고 보고했습니다. 이 문제는 사용자 지정 구성된 org.apache.http.protocol.HttpContext 를 제공하여 결국 해결되었습니다.

  • 1. CryostatContexts에 대한 (Spring) 팩토리를 생성합니다.
public class HttpContextFactory {

  private String httpHost = "localhost";
  private String httpPort = 9001;

  private BasicHttpContext httpContext = new BasicHttpContext();
  private BasicAuthCache authCache = new BasicAuthCache();
  private BasicScheme basicAuth = new BasicScheme();

  public HttpContext getObject() {
    authCache.put(new HttpHost(httpHost, httpPort), basicAuth);

    httpContext.setAttribute(ClientContext.AUTH_CACHE, authCache);

    return httpContext;
  }

  // getter and setter
}
Copy to Clipboard Toggle word wrap
  • 2. Spring 애플리케이션 컨텍스트 파일에서 CryostatContext를 선언합니다.
<bean id="myHttpContext" factory-bean="httpContextFactory" factory-method="getObject"/>
Copy to Clipboard Toggle word wrap
  • 3. http4 URL에서 컨텍스트를 참조합니다.
<to uri="https4://myhostname.com:443/myURL?httpContext=myHttpContext"/>
Copy to Clipboard Toggle word wrap

다른 SSLContextParameter 사용

HTTP4 구성 요소는 구성 요소당 org.apache.camel.util.jsse.SSLContextParameters 인스턴스 하나만 지원합니다. 2개 이상의 다른 인스턴스를 사용해야 하는 경우 아래에 표시된 대로 여러 HTTP4 구성 요소를 설정해야 합니다. 두 개의 구성 요소가 있는 경우 각각 sslContextParameters 속성의 자체 인스턴스를 사용합니다.

<bean id="http4-foo" class="org.apache.camel.component.http4.HttpComponent">
   <property name="sslContextParameters" ref="sslContextParams1"/>
   <property name="x509HostnameVerifier" ref="hostnameVerifier"/>
</bean>

<bean id="http4-bar" class="org.apache.camel.component.http4.HttpComponent">
   <property name="sslContextParameters" ref="sslContextParams2"/>
   <property name="x509HostnameVerifier" ref="hostnameVerifier"/>
</bean>
Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat