> Java > java지도 시간 > 서버가 다른 CA가 서명한 클라이언트 인증서를 요청할 때 Java SSL 핸드셰이크가 실패하는 이유는 무엇입니까?

서버가 다른 CA가 서명한 클라이언트 인증서를 요청할 때 Java SSL 핸드셰이크가 실패하는 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-29 05:36:13
원래의
561명이 탐색했습니다.

Why Does My Java SSL Handshake Fail When the Server Requests a Client Certificate Signed by a Different CA?

Java SSL 핸드셰이크에서 클라이언트 인증서 누락

SSL 핸드셰이크 중 Java의 동작으로 인해 때때로 클라이언트 인증서가 누락되어 핸드셰이크가 발생할 수 있습니다. 실패. 이 문제는 서버가 특정 CA(이 경우 "RootCA")가 서명한 클라이언트 인증서를 요청하고 Java가 키 저장소에서 하위 CA("SubCA")가 서명한 클라이언트 인증서만 찾을 때 발생합니다.

키 저장소 구성 고려 사항:

  1. 인증서 체인 파손: "SubCA" 인증서를 키 저장소로 가져오면 인증서 체인이 중단되어 KeyManager가 클라이언트 인증서만 인식하게 될 수도 있습니다.
  2. 인증서 연결: "SubCA" 인증서는 키 저장소에 있는 클라이언트 인증서와 해당 개인 키를 포함하는 별칭과 연결되어야 합니다. 이 연결은 keytool -v -list -keystore store.jks를 사용하여 확인할 수 있습니다.

서버 구성 고려 사항:

  1. 인증 기관 불일치: 이상적으로는 서버가 "SubCA"가 서명한 클라이언트 인증서를 요청해야 합니다. 클라이언트에게 제공되는 권한. 그러나 Java가 인증서 체인 확인을 엄격하게 준수하면 이 시나리오에서 핸드셰이크 오류가 발생할 수 있습니다.

해결 방법:

이 문제를 해결하려면 클라이언트 인증서 해당 인증서 체인("SubCA" 인증서 포함)은 단일 파일(예: Bundle.pem)로 결합되어야 합니다. 그런 다음 keytool -importcert -keystore store.jks -alias myalias -file Bundle.pem을 사용하여 클라이언트의 개인 키를 보유하는 Keystore 별칭으로 이 번들 PEM 파일을 가져올 수 있습니다. 이를 통해 Java는 전체 인증서 체인을 인식하고 SSL 핸드셰이크 중에 적절한 인증서를 보냅니다.

위 내용은 서버가 다른 CA가 서명한 클라이언트 인증서를 요청할 때 Java SSL 핸드셰이크가 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿