3.2. 신뢰할 수 있는 CA 인증서 지정
3.2.1. 신뢰할 수 있는 CA 인증서를 배포해야 하는 경우
3.2.1.1. 개요
애플리케이션이 SSL/TLS 핸드셰이크 중에 X.509 인증서를 수신하는 경우 애플리케이션은 발급자 CA가 신뢰할 수 있는 CA 인증서 세트 중 하나인지 확인하여 수신된 인증서를 신뢰하지 않는지 여부를 결정합니다. 수신된 X.509 인증서가 애플리케이션의 신뢰할 수 있는 CA 인증서 중 하나에 의해 유효한 서명인 경우 인증서가 신뢰할 수 있는 것으로 간주됩니다. 그렇지 않으면 거부됩니다.
3.2.1.2. 신뢰할 수 있는 CA 인증서를 지정해야 하는 애플리케이션은 무엇입니까?
HTTPS 핸드셰이크의 일부로 X.509 인증서를 수신할 가능성이 있는 모든 애플리케이션은 신뢰할 수 있는 CA 인증서 목록을 지정해야 합니다. 예를 들어 다음과 같은 유형의 애플리케이션이 포함됩니다.
- 모든 HTTPS 클라이언트입니다.
- 상호 인증을 지원하는 모든 HTTPS 서버 .
3.2.2. HTTPS를 위한 신뢰할 수 있는 CA 인증서 지정
3.2.2.1. CA 인증서 형식
CA 인증서는 Java 키 저장소 형식으로 제공되어야 합니다.
3.2.2.2. Apache CXF 구성 파일의 CA 인증서 배포
HTTPS 전송을 위해 신뢰할 수 있는 루트 CA를 하나 이상 배포하려면 다음 단계를 수행합니다.
-
배포하려는 신뢰할 수 있는 CA 인증서 컬렉션을 어셈블합니다. 신뢰할 수 있는 CA 인증서는 공용 CA 또는 개인 CA에서 가져올 수 있습니다. 자체 CA 인증서를 생성하는 방법에 대한 자세한 내용은 2.5절. “자체 인증서 생성”을 참조하십시오. 신뢰할 수 있는 CA 인증서는 Java
키 저장소
유틸리티와 호환되는 모든 형식(예: PEM 형식)일 수 있습니다. 필요한 것은 모두 인증서 자체입니다. 개인 키와 암호가 필요하지 않습니다. PEM 형식의 CA 인증서
cacert.pem
이 제공된 경우 다음 명령을 입력하여 JKS 트러스트 저장소(또는 새 신뢰 저장소를 생성)에 인증서를 추가할 수 있습니다.keytool -import -file cacert.pem -alias CAAlias -keystore truststore.jks -storepass StorePass
여기서 CAAlias 는
keytool
유틸리티를 사용하여 이 특정 CA 인증서에 액세스할 수 있는 편리한 태그입니다.truststore.jks
파일은 CA 인증서가 포함된 키 저장소 파일입니다. 이 파일이 없으면keytool
유틸리티에서 키를 생성합니다. StorePass 암호는 키 저장소 파일truststore.jks
에 대한 액세스를 제공합니다.-
필요에 따라 2단계를 반복하여 모든 CA 인증서를 truststore 파일
truststore.jks
에 추가합니다. 관련 XML 구성 파일을 편집하여 truststore 파일의 위치를 지정합니다. 관련 HTTPS 포트 구성에
sec:trustManagers
요소를 포함해야 합니다.예를 들어 다음과 같이 클라이언트 포트를 구성할 수 있습니다.
<!-- Client port configuration --> <http:conduit id="{Namespace}PortName.http-conduit"> <http:tlsClientParameters> ... <sec:trustManagers> <sec:keyStore type="JKS" password="StorePass" file="certs/truststore.jks"/> </sec:trustManagers> ... </http:tlsClientParameters> </http:conduit>
여기서 truststore에서 JKS 키 저장소 구현을 사용하고 StorePass 가
truststore.jks
키 저장소에 액세스하는 데 필요한 암호입니다.다음과 같이 서버 포트를 구성합니다.
<!-- Server port configuration --> <http:destination id="{Namespace}PortName.http-destination"> <http:tlsServerParameters secureSocketProtocol="TLSv1"> ... <sec:trustManagers> <sec:keyStore type="JKS" password="StorePass" file="certs/truststore.jks"/> </sec:trustManagers> ... </http:tlsServerParameters> </http:destination>
중요주의신뢰 저장소를 포함하는 디렉터리(예: X509Deploy
/truststores/
)는 보안 디렉터리여야 합니다(즉, 관리자만 쓰기 가능).