Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
Application Load Balancer에서 mTLS를 사용할 때 클라이언트 연결 문제를 식별하고 해결하려면 어떻게 해야 하나요?
Application Load Balancer에서 상호 Transport Layer Security(mTLS)를 사용할 때 발생하는 클라이언트 연결 문제를 해결하고 싶습니다.
간략한 설명
클라이언트 연결 문제를 조사하려면 ](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-connection-logs.html)Application Load Balancer의 연결 로그[를 활성화해야 합니다. 연결 로그를 사용하여 요청 패턴을 분석하고 문제를 해결합니다.
연결 로그가 제공하는 정보에 대한 자세한 내용은 Application Load Balancer 모니터링을 참조하십시오.
해결 방법
Application Load Balancer의 연결 로그 항목은 클라이언트가 Application Load Balancer에 연결을 시도했을 때 발생한 오류를 식별합니다.
**참고:**오류를 처리하는 방법에 대한 자세한 내용은 연결 로그 파일 처리를 참조하십시오.
연결 로그를 필터링하여 특정 오류 보기
클라이언트의 IP 주소별로 연결 로그를 필터링하여 특정 오류를 찾을 수 있습니다. 예를 들어, 다음 명령을 실행하여 특정 클라이언트 IP 주소(예: a.a.a.a)에 대해 실패한 요청을 찾습니다.
zcat *.log.gz | awk '($2 == "a.a.a.a" && $11 ~ "Failed")' | awk '{print $1, $5, $6, $8, $9, $10, $11, $12}' 2024-04-05T18:31:29.268987Z TLSv1.3 ECDHE-RSA-AES256-SHA "CN=client-expired.alb-mtls-example.com,OU=IT,O=Company LLC,L=City,ST=State,C=US" NotBefore=2024-01-02T19:17:20Z;NotAfter=2024-04-02T19:17:20Z 02 "Failed:ClientCertExpired" 2024-04-05T19:29:35.128387Z TLSv1.3 ECDHE-RSA-AES256-SHA "CN=client-expired.alb-mtls-example.com,OU=IT,O=Company LLC,L=City,ST=State,C=US" NotBefore=2024-01-02T19:17:20Z;NotAfter=2024-04-02T19:17:20Z 02 "Failed:ClientCertExpired" 2024-04-05T20:16:44.387952Z TLSv1.3 ECDHE-RSA-AES256-SHA "CN=client-expired.alb-mtls-example.com,OU=IT,O=Company LLC,L=City,ST=State,C=US" NotBefore=2024-01-02T19:17:20Z;NotAfter=2024-04-02T19:17:20Z 02 "Failed:ClientCertExpired"
참고: **<a.a.a.a>**를 오류가 있는지 조사 중인 클라이언트 IP 주소로 바꿉니다.
tls_verify_status 필드에 있는 값을 식별합니다. 오류 이유 코드를 참조하여 오류를 식별합니다. 그런 다음, 다음 섹션을 사용하여 특정 오류를 해결합니다.
오류: "ClientCertMaxChainDepthExceeded"
이 오류는 클라이언트 인증서 수가 최대 체인 깊이를 초과했기 때문에 발생합니다.
이 오류를 해결하려면, 다음 단계를 수행합니다.
-
Application Load Balancer에 제공된 클라이언트 인증서의 인증서 수를 확인합니다.
-
인증서 체인 깊이를 검사하려면 다음 옵션 중 하나를 사용합니다.
Windows: 인증서를 선택하고 인증서 경로를 선택합니다. 그런 다음 인증서 개수를 셉니다.
-또는-
Microsoft PowerShell에서 다음 명령을 실행하고 인증서 개수를 셉니다.certutil -dump <file.crt
**Linux 또는 Unix: **인증서를 계산하려면 다음 명령을 실행합니다.
$ openssl crl2pkcs7 -nocrl -certfile <file.crt> | openssl pkcs7 -print_certs -noout | grep "subject" | wc -l
-
클라이언트 인증서 체인에 있는 인증서 수를 줄입니다. 지원되는 최대 인증서 체인 깊이에 대한 자세한 내용은 Application Load Balancer의 할당량을 참조하십시오.
오류: "ClientCertMaxSizeExceeded"
이 오류는 최대 클라이언트 인증서 크기를 초과했기 때문에 발생합니다.
이 오류를 해결하려면, 다음 단계를 수행합니다.
- 클라이언트 인증서 크기 확인:
Windows 파일을 선택합니다. 그런 다음 속성을 선택하고 파일 크기를 확인합니다.
Linux Run du -h <file>.
Macintosh Finder에서 항목을 선택한 다음 Command-I를 누릅니다. - Application Load Balancer에 표시되는 클라이언트 인증서 파일의 크기를 줄입니다. 지원되는 최대 인증서 크기에 대한 자세한 내용은 Application Load Balancer의 할당량을 참조하십시오.
오류: "ClientCertCrlHit"
이 오류는 mTLS 리스너에서 사용하는 인증서 취소 목록(CRL) 내에 클라이언트 인증서가 있을 때 발생합니다.
- leaf_client_cert_subject 필드를 표시하는 연결 로그 항목을 검토합니다.
- Amazon Simple Storage Service(Amazon S3) 버킷에서 CRL 파일을 다운로드합니다. CRL 파일은 Amazon Elastic Compute Cloud(Amazon EC2) 신뢰 저장소에서 참조합니다.
- 로그 항목에서 식별된 클라이언트 인증서의 CRL을 검토합니다.
- EC2 신뢰 저장소에서 사용하는 CA 번들에 대해 클라이언트 인증서를 갱신합니다. 취소되지 않은 새 인증서를 사용하여 연결을 재시도합니다.
오류: "ClientCertUntrusted"
이 오류는 클라이언트 인증서를 신뢰할 수 없기 때문에 발생합니다.
이 오류를 해결하려면, 다음 단계를 수행합니다.
-
leaf_client_cert_subject 필드의 인증서 이름이 구성된 EC2 신뢰 저장소에 있는 인증 기관(CA)에서 발급했는지 확인합니다.
**참고:**클라이언트 인증서 발급자가 EC2 신뢰 저장소에서 사용하는 CA 인증서 번들 내에 없는 경우 mTLS는 작동하지 않습니다. -
클라이언트 인증서에 대해 다음 명령을 실행합니다.
$ openssl crl2pkcs7 -nocrl -certfile <file.cert> | openssl pkcs7 -print_certs -noout | grep -e 'issuer' -e 'subject' | sed -e 's/subject._CN = /Subject: /; s/issuer._CN = /Issuer: /'"
-
번들 내에 있는 주체를 검색하려면 EC2 신뢰 저장소에서 사용하는 CA 인증서 번들에 대해 다음 명령을 실행합니다.
$ openssl crl2pkcs7 -nocrl -certfile <file.pem> | openssl pkcs7 -print_certs -noout | grep -e 'subject' | sed -e 's/subject.*CN = /Subject: /'
오류: "ClientCertNotYetValid"
이 오류는 클라이언트 인증서가 아직 유효하지 않기 때문에 발생합니다.
이 오류를 해결하려면, 다음 단계를 수행합니다.
-
인증서 유효 기간을 확인합니다. 연결 로그의 leaf_client_cert_validity 필드에서 이 값을 찾을 수 있습니다.
-
인증서 파일에 대해 다음 명령을 실행합니다.
$ openssl x509 -in $i --text | grep -A 2 "Validity"
-
연결 로그의 타임스탬프 필드를 기준으로 2단계에서 제공한 Not Before 날짜를 확인합니다.
참고: 클라이언트 인증서는 Not Before 날짜 이후에만 사용해야 합니다. -
이 오류를 해결하려면 EC2 신뢰 저장소에서 참조하는 CA 인증서 번들을 사용하여 클라이언트 인증서를 다시 발급하십시오.
오류: "ClientCertExpired"
이 오류는 클라이언트 인증서가 만료될 때 발생합니다.
이 오류를 해결하려면, 다음 단계를 수행합니다.
-
인증서 유효 기간을 확인합니다. 연결 로그의 leaf_client_cert_validity 필드에서 이 값을 찾을 수 있습니다.
-
인증서 파일에 대해 다음 명령을 실행합니다.
$ openssl x509 -in $i --text | grep -A 2 "Validity"
-
연결 로그의 타임스탬프 필드를 기준으로 2단계에서 제공한 Not After 날짜를 확인합니다.
참고: 클라이언트 인증서는 Not After 날짜 이전에만 사용해야 합니다. -
이 오류를 해결하려면 EC2 신뢰 저장소에서 참조하는 CA 인증서 번들을 사용하여 클라이언트 인증서를 다시 발급하십시오.
오류: "ClientCertTypeUnsupported"
이 오류는 클라이언트 인증서 유형이 지원되지 않기 때문에 발생합니다.
이 오류를 해결하려면, 다음 단계를 수행합니다.
-
인증서 버전을 확인합니다. 연결 로그의 leaf_client_cert_subject 필드에서 이 값을 찾을 수 있습니다. 버전을 찾으려면 클라이언트 인증서에 대해 다음 명령을 실행합니다.
$ openssl x509 -in $i --text | grep -A 3 "Version:
-
인증서 버전이 X.509v3인지 확인하십시오. 이것이 지원되는 버전입니다.
오류: "ClientCertInvalid"
이 오류는 클라이언트 인증서가 유효하지 않기 때문에 발생합니다.
이 오류를 해결하려면, 다음 단계를 수행합니다.
- mTLS 및 Application Load Balancer에서 사용할 수 있도록 클라이언트 인증서가 요구 사항을 충족하는지 확인합니다.
- 인증서를 다시 발급합니다.
오류: "ClientCertRejected"
이 오류는 사용자 지정 서버 확인에서 클라이언트 인증서가 거부되었기 때문에 발생합니다.
이 오류를 해결하려면, 다음 단계를 수행합니다.
- Application Load Balancer의 리스너가 패스스루 또는 확인 모드에서 mTLS를 사용하는지 확인합니다.
패스스루 모드에서 로드 밸런서는 HTTP 헤더를 사용하여 확인을 위해 클라이언트 인증서와 체인을 대상으로 전송합니다. 대상에서 클라이언트 인증서를 거부할 때 이 오류가 발생합니다. - 대상의 애플리케이션 로그를 검토하여 오류의 원인을 확인하십시오.
- 가장 좋은 방법은 mTLS 리스너에서 패스스루 모드 대신 확인 모드를 사용하는 것입니다.
오류: "ClientCertCrlProcessingError"
이 오류는 인증서 취소 목록(CRL)에 처리 오류가 발생했을 때 발생합니다.
이 오류를 해결하려면, 다음 단계를 수행합니다.
오류가 계속 발생하면 AWS Support에 문의하여 추가 검토를 받으십시오. AWS Support 엔지니어에게 다음 정보를 제공하십시오.
-
다음 curl 명령의 출력:
$ curl -vvv -X <HTTP action> --cert <client_cert.crt> --key <client_key.pem> https://alb.fqdn.com -A credstest
-
클라이언트 인증서(키 파일 제공 안 함)
-
문제가 발생한 기간의 연결 로그
오류: "UnmappedConnectionError"
이 오류는 런타임 연결이 매핑되지 않을 때 발생합니다.
AWS Support에 문의하여 추가 지원을 받으십시오. AWS Support 엔지니어에게 다음 정보를 제공하십시오.
-
다음 curl 명령의 출력:
$ curl -vvv -X <HTTP action> --cert <client_cert.crt> --key <client_key.pem> https://alb.fqdn.com -A credstest
-
클라이언트 인증서(키 파일 제공 안 함)
-
문제가 발생한 기간의 연결 로그
관련 정보
Amazon Athena를 사용하여 Application Load Balancer 연결 로그를 쿼리하려면 어떻게 해야 합니까?
Application Load Balancer용 mTLS 소개
Application Load Balancer의 mTLS 리스너용 CA 번들과 관련된 문제를 조사하려면 어떻게 해야 합니까?

관련 콘텐츠
- 질문됨 10달 전lg...
- 질문됨 일 년 전lg...
- 질문됨 6달 전lg...