>Java >java지도 시간 >SSL 핸드셰이크 중에 Java가 클라이언트 인증서를 보내지 못하는 이유는 무엇입니까?

SSL 핸드셰이크 중에 Java가 클라이언트 인증서를 보내지 못하는 이유는 무엇입니까?

DDD
DDD원래의
2024-12-03 07:56:10912검색

Why Does Java Fail to Send Client Certificates During SSL Handshakes?

SSL 핸드셰이크 중 Java의 신비한 클라이언트 인증서 누락

키 저장소 및 신뢰 저장소 설정을 올바르게 구성했음에도 불구하고 많은 개발자는 Java의 SSL 핸드셰이크 실패로 인해 실패합니다. 특이한 행동. 특히 Java는 핸드셰이크 중에 클라이언트 인증서를 서버로 전송하지 못합니다.

문제 공개:

  1. 서버 요청의 잘못된 해석: 서버가 RootCA에서 서명한 클라이언트 인증서를 요청하지만 Java는 일치하는 인증서를 무시하고 키 저장소만 검색합니다. (SubCA에 의해 서명됨)이 신뢰 저장소에 있습니다.
  2. KeyManager의 과도한 열성: Java KeyManager는 인증서 체인을 완료하더라도 다른 모든 인증서는 간과하고 키 저장소에서 선택적으로 클라이언트 인증서를 검색합니다.
  3. 핸드셰이크 실패 발생: Java는 해당 사항이 없다고 잘못 결론 내립니다. 인증서를 사용할 수 있고 핸드셰이크를 포기하여 실망스러운 실패가 발생합니다.

가능한 설명:

  • 중간 CA 인증서를 키 저장소로 부적절하게 가져옴 , 인증서 체인을 방해합니다.
  • 서버 구성이 잘못되어 SubCA에서 서명한 인증서가 필요합니다. 제공된 RootCA 인증서가 아닌

임시 해결 방법:

이 문제를 해결하려면 클라이언트 인증서가 포함된 Bundle.pem 파일을 생성하면 됩니다. 중간 CA 인증서 및 잠재적으로 루트 CA 인증서. 그런 다음 이 번들은 개인 키가 포함된 키 저장소 별칭으로 가져와 SSL 핸드셰이크 중에 Java가 전체 인증서 체인을 인식하도록 합니다.

그러나 이 해결 방법은 여전히 ​​만족스럽지 못한 솔루션이며 Java 개발 팀에서 공식적으로 설명합니다. 또는 향후 버전에서 해결하는 것이 매우 바람직합니다.

위 내용은 SSL 핸드셰이크 중에 Java가 클라이언트 인증서를 보내지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.