mTLS(상호 전송 계층 보안)는 클라이언트와 서버 간에 상호 인증을 제공하는 표준 TLS 프로토콜의 확장입니다. Azure Container Apps는 mTLS 지원 애플리케이션 실행을 지원하여 애플리케이션의 보안을 강화합니다.
Azure Container Apps에서 들어오는 모든 요청은 대상 컨테이너 앱으로 라우팅되기 전에 Envoy를 통과합니다. mTLS를 사용하는 경우 클라이언트는 Envoy와 인증서를 교환합니다. 이러한 각 인증서는 X-Forwarded-Client-Cert 헤더에 배치된 다음 애플리케이션으로 전송됩니다.
Azure Container Apps에서 mTLS 애플리케이션을 빌드하려면 다음을 수행해야 합니다.
- 피어의 클라이언트 인증서를 요구하도록 Azure Container Apps를 구성합니다.
- 요청에서 인증서를 추출
X.509
합니다.
이 문서에서는 클라이언트에서 인증서를 추출하여 피어 mTLS 핸드셰이크 인증서를 X.509
처리하는 방법을 설명합니다.
클라이언트 인증서 필요
다음 단계를 사용하여 클라이언트 인증서를 요구하도록 컨테이너 앱을 구성합니다.
- Azure Portal에서 컨테이너 앱을 엽니다.
- 설정에서 수신을 선택합니다.
- 사용 옵션을 선택합니다.
- 수신 형식의 경우 HTTP를 선택합니다.
- 클라이언트 인증서 모드에서 필요를 선택합니다.
- 변경 내용을 적용하려면 저장을 선택합니다.
Azure Container Apps에서 클라이언트 인증서 인증을 구성하는 방법에 대한 자세한 내용은 Azure Container Apps에서 클라이언트 인증서 인증 구성을 참조 하세요.
X.509 인증서 추출
헤더에서 인증서를 X-Forwarded-Client-Cert
추출 X.509
하려면 애플리케이션 코드의 헤더 값을 구문 분석합니다. 이 헤더는 mTLS를 사용할 때 클라이언트 인증서 정보를 포함합니다. 인증서는 해시, 인증서 및 체인을 포함하는 세미콜론으로 구분된 목록 형식으로 제공됩니다.
애플리케이션에서 인증서를 추출하고 구문 분석하기 위해 수행하려는 절차는 다음과 같습니다.
-
X-Forwarded-Client-Cert
들어오는 요청에서 헤더를 검색합니다. - 헤더 값을 구문 분석하여 인증서 세부 정보를 추출합니다.
- 추가 유효성 검사 또는 사용을 위해 구문 분석된 인증서를 표준 인증서 특성에 넣습니다.
구문 분석한 후에는 인증서의 유효성을 검사하고 애플리케이션의 요구에 따라 인증서를 사용할 수 있습니다.
예시
Java 애플리케이션에서는 Reactive X.509 인증 필터를 사용하여 인증서의 사용자 정보를 보안 컨텍스트에 매핑할 수 있습니다. Azure Container Apps에서 mTLS를 사용하는 Java 애플리케이션의 전체 예제는 Azure Container Apps의 mTLS 서버 애플리케이션을 참조 하세요.