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

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

Patricia Arquette
풀어 주다: 2024-12-02 07:34:10
원래의
616명이 탐색했습니다.

Why Doesn't My Java Client Send Its Certificate During SSL Handshake?

SSL 핸드셰이크 중에 Java 클라이언트가 인증서를 전송할 수 없는 이유는 무엇입니까?

Java를 사용하여 보안 웹 서비스에 연결하려는 시도 , 사용자는 핸드셰이크 실패를 자주 경험합니다. 키 저장소와 신뢰 저장소를 올바르게 구성했음에도 불구하고 근본적인 문제는 Java가 핸드셰이크 중에 클라이언트 인증서 전송을 꺼리는 데서 발생하는 경우가 많습니다.

문제 이해:

  1. 서버 신뢰할 수 있는 RootCA가 서명한 클라이언트 인증서를 기대합니다.
  2. Java는 키 저장소 내에서 검색하여 RootCA가 자체적으로 신뢰하는 SubCA가 서명한 클라이언트 인증서입니다.
  3. Java는 검색에서 신뢰 저장소를 제외하고 키 저장소 이상을 보지 않습니다.
  4. 결과적으로 Java는 키 저장소를 신뢰하지 않는다고 주장합니다. 적합한 인증서가 없어 핸드셰이크에 실패했습니다.

제안됨 해결책:

1. 손상된 인증서 체인 주소:

인증서 체인이 손상되지 않고 SubCA 인증서가 키 저장소로 올바르게 가져왔는지 확인하세요. 이는 keytool -v -list -keystore store.jks를 사용하여 수행할 수 있습니다. 별칭 항목당 하나의 인증서만 표시되는 경우 체인이 손상되었을 가능성이 높습니다.

키 저장소로 인증서 체인 가져오기:

문제를 해결하려면 클라이언트 인증서를 가져오고 전체 인증서 체인을 개인 키가 포함된 키 저장소 별칭으로 함께 묶습니다.

2. 서버측 구성 문제:

SubCA 서명 인증서에 대한 서버의 요청은 합리적이지만 요청에 대한 Java의 엄격한 준수는 불필요하게 제한적일 수 있습니다. 이와 관련하여 Chrome 및 OpenSSL과 같은 브라우저가 더 유연한 것으로 나타났습니다.

해결 방법:

문제를 우회하려면 다음과 같은 대체 접근 방식을 사용할 수 있습니다.

  1. keytool -exportcert -rfc -file clientcert.pem -keystore를 사용하여 키 저장소에서 클라이언트 인증서를 내보냅니다. store.jks -alias myalias. 이렇게 하면 PEM 파일이 생성됩니다.
  2. 클라이언트 인증서와 중간 CA 인증서(선택적으로 루트 CA 인증서)를 단일 Bundle.pem 파일로 결합합니다.
  3. 인증서 번들을 키 저장소로 다시 가져옵니다. keytool -importcert -keystore store.jks -alias myalias -file Bundle.pem을 사용하여 개인 키가 포함된 별칭.

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

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