Liberty 애플리케이션 클라이언트 컨테이너에 대해 SSL 통신 사용
Liberty 애플리케이션 클라이언트 컨테이너는 클라이언트 컨테이너가 서버와 통신할 수 있도록 일부 SSL 구성을 요구할 수 있습니다. 애플리케이션 클라이언트 컨테이너를 위한 SSL 구성은 서버가 SSL 인에이블먼트를 위해 요구하는 것과 동일한 SSL 기능 ssl-1.0의 사용을 요구합니다. 애플리케이션을 위한 구성 요소 및 속성은 서버에 대한 것과 동일합니다. 그러나 애플리케이션 클라이언트 컨테이너의 경우 이러한 값은 client.xml 파일에 지정됩니다.
이 태스크 정보
SSL 핸드쉐이크는 연결 특정 보호를 조정하기 위해 클라이언트와 서버 간에 SSL 프로토콜을 통해 교환된 일련의 메시지입니다. Liberty 애플리케이션 클라이언트 컨테이너에 대해 SSL을 사용하려면, 클라이언트가 사용하는 SSL 구성을 구성하는 데 필요한 최소 정보가 SSL 기능 ssl-1.0에 포함되어야 합니다. SSL 구성을 형성하는 데 필요한 최소 정보는 키 저장소와 비밀번호입니다.
securityUtility createSSLCertificate 명령을 사용하여 클라이언트 키 저장소를 작성하고 구성에 대한 정보를 제공할 수 있습니다. 다른 고객 정의 목적을 위해 키 저장소 및 연관된 구성을 작성할 수도 있으므로, 이 도구의 사용은 선택사항입니다.
프로시저
<keyStore id="defaultKeyStore" password="yourPassword" />
이것은 SSL 구성을 작성하는 데 필요한 최소 구성입니다. 이 구성에서 클라이언트는 SSL 초기화 중에 존재하지 않는 경우 키 저장소 및 인증서를 작성합니다. 제공된 비밀번호는 길이가 6자 이상이어야 합니다. JKS는 기본 키 저장소 유형이며 기본 키 저장소는 key.jks이고 이러한 기본값은 <client home>/resources/security 디렉토리에 있습니다.
클라이언트는 이전 구성을 사용할 경우 처음 시작할 때 defaultKeyStore를 작성하지만 클라이언트에 대해 기본 인증서를 작성하도록 하면 성능 저하가 발생합니다. 성능 저하를 피하려면 securityUtilitiy createSSLCertificate 명령을 사용하여 defaultKeyStore 구성에 사용되는 기본 키 저장소를 작성하는 것이 좋습니다.
사용자 정의 SSL 구성이 필요한 경우에는 Liberty: SSL 구성 속성을 참조하십시오.
- 서명자 인증서 승인
- 클라이언트에 서버에 대해 설정된 신뢰 관계가 없는 경우 클라이언트와의 통신은
사용자에게 프롬프트를 표시하고 서버로부터의 인증서를 승인하는지 묻습니다. 사용자가 yes로 응답하면
인증서가 승인되어 클라이언트 키 저장소 구성에 저장되고 명령이 진행됩니다.
사용자가 no를 지정하면 신뢰가 설정되지 않고 호출이 오류로 종료됩니다. 프롬프트 표시의 예는 다음과 같습니다.
*** SSL SIGNER EXCHANGE PROMPT *** The SSL signer from target host is not found in trust store C:/liberty/workspace/build.image/wlp/usr/clients/myTestClient/resources/security/key.jks. Here is the signer information (verify the digest value matches what is displayed at the server): Subject DN: CN=localhost, O=ibm, C=us Issuer DN: CN=localhost, O=ibm, C=us Serial number: 1327582458 Expires: Sun Jan 04 06:54:18 CST 2099 SHA-1 Digest: 00:6F:25:F1:78:5D:EB:00:B1:E2:99:DB:E8:D7:DF:3B:F8:E0:20:9A Add signer to the trust store now? (y/n)
서명자를 신뢰 저장소에 추가하라는 요구에 사용자가 no를 지정하면 다음과 같은 오류 메시지를 수신할 수 있습니다.[ERROR ] CWPKI0022E: SSL HANDSHAKE FAILURE: A signer with SubjectDN CN=localhost, O=ibm, C=us sent from the target host. The signer might need to be added to local trust store C:/liberty/workspace/build.image/wlp/usr/clients/myTestClient/resources/security/key.jks, located in SSL configuration alias defaultSSLConfig. The extended error message from the SSL handshake exception is: PKIX path building failed: java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl could not build a valid CertPath.; internal cause is: java.security.cert.CertPathValidatorException: The certificate issued by SubjectDN CN=localhost, O=ibm, C=us is not trusted; internal cause is: java.security.cert.CertPathValidatorException: Certificate chaining error throw able: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: PKIX path building failed: java.security.cert.CertPathBuilderException : PKIXCertPathBuilderImpl could not build a valid CertPath.; internal cause is: java.security.cert.CertPathValidatorException: The certificate issued by SubjectDN CN=localhost, O=ibm, C=us is not trusted; internal cause is: java.security.cert.CertPathValidatorException: Certificate chaining error
- 서명자 인증서 자동 승인
- 클라이언트가 서명자 인증서 입력 프롬프트가 표시되는 것을 원하지 않으며 인증서 검사 없이
서버 서명자 인증서를 승인하도록 선택하는 경우 사용자는 -autoAcceptSigner 플래그를
클라이언트 컨테이너 명령행에 제공할 수 있습니다.
client run client_name --autoAcceptSigner
- 클라이언트 인증
- 클라이언트 인증이 사용되는 서버와 클라이언트가 통신하는 경우, 서버는 클라이언트를 신뢰해야 하고 클라이언트는 서버를 신뢰해야 합니다. 클라이언트는 키 저장소에 키와 개인 인증서가 있어야 합니다. securityUtility createSSLCertificate 명령을 사용하는 경우 키 저장소에는 개인 인증서가 있습니다. 클라이언트 애플리케이션 컨테이너가 통신 중인 서버는 클라이언트를 신뢰해야 하므로 클라이언트의 서명자를 서버의 신뢰 저장소에 추가해야 합니다. Java 도구 keytool을 사용하여 애플리케이션 클라이언트의 키 저장소에서 서명자를 추출하고 클라이언트의 인증서를 서버의 신뢰 저장소에 추가할 수 있습니다.