3장. HTTPS 구성
초록
이 장에서는 HTTPS 엔드포인트를 구성하는 방법을 설명합니다.
3.1. 인증 대체 옵션
3.1.1. 대상 전용 인증
3.1.1.1. 개요
애플리케이션이 대상 전용 인증에 대해 구성되면 대상이 클라이언트에 자체적으로 인증되지만 그림 3.1. “대상 인증만 해당” 에 표시된 대로 클라이언트는 대상 오브젝트에 인증되지 않습니다.
그림 3.1. 대상 인증만 해당
3.1.1.2. 보안 핸드셰이크
애플리케이션을 실행하기 전에 클라이언트 및 서버를 다음과 같이 설정해야 합니다.
- 인증서 체인은 서버와 연결되어 있습니다. 인증서 체인은 Java 키 저장소(예: 3.3절. “애플리케이션 자체 인증서 지정”) 형식으로 제공됩니다.
- 클라이언트가 신뢰할 수 있는 CA(인증 기관)의 하나 이상의 목록을 사용할 수 있습니다. ( 3.2절. “신뢰할 수 있는 CA 인증서 지정”참조).
보안 핸드셰이크 중에 서버는 인증서 체인을 클라이언트에 보냅니다( 그림 3.1. “대상 인증만 해당”참조). 그런 다음 클라이언트는 신뢰할 수 있는 CA 목록을 검색하여 서버의 인증서 체인에서 CA 인증서 중 하나와 일치하는 CA 인증서를 찾습니다.
3.1.1.3. HTTPS 예
클라이언트 측에는 대상 전용 인증에 필요한 정책 설정이 없습니다. X.509 인증서를 HTTPS 포트와 연결하지 않고 간단히 클라이언트를 구성합니다. 그러나 클라이언트에 신뢰할 수 있는 CA 인증서 목록을 제공해야 합니다( 3.2절. “신뢰할 수 있는 CA 인증서 지정”참조).
서버 측에서 서버의 XML 구성 파일에서 sec:clientAuthentication
요소에 클라이언트 인증이 필요하지 않은지 확인합니다. 이 요소는 생략할 수 있습니다. 이 경우 기본 정책에 클라이언트 인증이 필요하지 않습니다. 그러나 sec:clientAuthentication
요소가 있는 경우 다음과 같이 구성해야 합니다.
<http:destination id="{Namespace}PortName.http-destination"> <http:tlsServerParameters secureSocketProtocol="TLSv1"> ... <sec:clientAuthentication want="false" required="false"/> </http:tlsServerParameters> </http:destination>
want 속성이 false(기본값)로 설정된 경우 TLS 핸드셰이크 중에 서버에서 클라이언트에서 X.509 인증서를 요청하지 않도록 지정합니다. 또한 required 속성은 false(기본값)로 설정되어 클라이언트 인증서가 TLS 핸드셰이크 중에 예외를 트리거하지 않도록 지정합니다.
want
속성은 true
또는 false
로 설정할 수 있습니다. true
로 설정하면 원하는
설정으로 인해 서버가 TLS 핸드셰이크 중에 클라이언트 인증서를 요청하지만 필요한
특성이 false
로 설정된 경우 인증서가 없는 클라이언트에는 예외가 발생하지 않습니다.
또한 X.509 인증서를 서버의 HTTPS 포트와 연결하고 서버에 신뢰할 수 있는 CA 인증서 목록을 제공해야 합니다( 3.3절. “애플리케이션 자체 인증서 지정” 참조). 3.2절. “신뢰할 수 있는 CA 인증서 지정”
암호화 제품군의 선택은 대상 전용 인증이 지원되는지 여부에 영향을 미칠 수 있습니다( 4장. HTTPS Cipher Suites 구성참조).
3.1.2. 상호 인증
3.1.2.1. 개요
애플리케이션이 상호 인증을 위해 구성되면 대상은 클라이언트에 자신을 인증하고 클라이언트는 대상에 자신을 인증합니다. 이 시나리오는 그림 3.2. “상호 인증” 에 설명되어 있습니다. 이 경우 서버와 클라이언트는 각각 보안 핸드셰이크를 위한 X.509 인증서가 필요합니다.
그림 3.2. 상호 인증
3.1.2.2. 보안 핸드셰이크
애플리케이션을 실행하기 전에 클라이언트 및 서버를 다음과 같이 설정해야 합니다.
- 클라이언트와 서버 모두에 연결된 인증서 체인이 있습니다( 3.3절. “애플리케이션 자체 인증서 지정”참조).
- 클라이언트와 서버는 모두 신뢰할 수 있는 CA(인증 기관) 목록으로 구성됩니다( 3.2절. “신뢰할 수 있는 CA 인증서 지정”참조).
TLS 핸드셰이크 중에 서버는 인증서 체인을 클라이언트에 전송하고 클라이언트는 인증서 체인을 서버에 보냅니다. 그림 3.1. “대상 인증만 해당” 을 참조하십시오.
3.1.2.3. HTTPS 예
클라이언트 측에는 상호 인증에 필요한 정책 설정이 없습니다. X.509 인증서를 클라이언트의 HTTPS 포트와 연결하기만 하면 됩니다( 3.3절. “애플리케이션 자체 인증서 지정”참조). 클라이언트에 신뢰할 수 있는 CA 인증서 목록도 제공해야 합니다( 3.2절. “신뢰할 수 있는 CA 인증서 지정”참조).
서버 측에서 서버의 XML 구성 파일에서 클라이언트 인증을 요구 하도록 sec:clientAuthentication
요소가 구성되었는지 확인합니다. 예를 들면 다음과 같습니다.
<http:destination id="{Namespace}PortName.http-destination"> <http:tlsServerParameters secureSocketProtocol="TLSv1"> ... <sec:clientAuthentication want="true" required="true"/> </http:tlsServerParameters> </http:destination>
want
속성이 true
로 설정된 경우 TLS 핸드셰이크 중에 서버에서 클라이언트에서 X.509 인증서를 요청하도록 지정합니다. required
속성도 true
로 설정되어 클라이언트 인증서가 없으면 TLS 핸드셰이크 중에 예외를 트리거하도록 지정합니다.
또한 X.509 인증서를 서버의 HTTPS 포트와 연결하고 서버에 신뢰할 수 있는 CA 인증서 목록을 제공해야 합니다( 3.3절. “애플리케이션 자체 인증서 지정”참조). 3.2절. “신뢰할 수 있는 CA 인증서 지정”
암호화 제품군의 선택은 상호 인증이 지원되는지 여부에 영향을 미칠 수 있습니다( 4장. HTTPS Cipher Suites 구성참조).