>  기사  >  Java  >  SSLServerSocket을 사용할 때 \"SSLHandshakeException: no cipher suites in common\"이 표시되는 이유는 무엇입니까?

SSLServerSocket을 사용할 때 \"SSLHandshakeException: no cipher suites in common\"이 표시되는 이유는 무엇입니까?

DDD
DDD원래의
2024-11-03 17:14:30294검색

Why am I receiving an

Java SSLHandshakeException "공통 암호 제품군 없음"

질문:

SSL 연결을 설정할 수 없습니다. SSLServerSocket. 가능한 모든 암호화 제품군 및 프로토콜을 활성화했음에도 불구하고 "공통 암호화 제품군 없음"이라는 SSLHandshakeException이 발생합니다.

답변:

문제는 SSLContext. null KeyManager 배열을 제공하면 RSA 또는 DSA 인증서가 없는 빈 KeyManager가 생성됩니다. 이로 인해 이러한 인증서에 의존하는 기본 암호화 제품군을 사용할 수 없게 되어 궁극적으로 오류가 발생합니다. 이 문제를 해결하려면:

  1. 인증서가 포함된 키 저장소를 로드하세요.
KeyStore ks = KeyStore.getInstance("JKS");
InputStream ksIs = new FileInputStream("...");
ks.load(ksIs, "password".toCharArray());
  1. 키 저장소로 KeyManagerFactory를 초기화하세요.
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(ks, "keypassword".toCharArray());
  1. KeyManager를 사용하도록 SSLContext 초기화를 업데이트하세요.
SSLContext sc = SSLContext.getInstance("TLSv1.2");
sc.init(kmf.getKeyManagers(), null, new SecureRandom());

위 내용은 SSLServerSocket을 사용할 때 \"SSLHandshakeException: no cipher suites in common\"이 표시되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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