>Java >java지도 시간 >null KeyManager 배열과 함께 `SSLContext.init`을 사용할 때 \'사용할 수 없는 암호 모음 무시\' 및 \'공통 암호 모음 없음\' 오류가 발생하는 이유는 무엇입니까?

null KeyManager 배열과 함께 `SSLContext.init`을 사용할 때 \'사용할 수 없는 암호 모음 무시\' 및 \'공통 암호 모음 없음\' 오류가 발생하는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-01 08:52:021068검색

Why am I getting

null KeyManager 배열을 사용하여 SSLContext를 초기화하고 있습니다.

키 관리자는 (서버 측에서) 서버 인증서를 처리하는 역할을 하며, 이것이 바로 아마도 javax.net.ssl.keyStore를 사용할 때 설정을 목표로 하고 있을 것입니다.

그러나 JSSE 참조 가이드에 설명된 대로 첫 번째 매개변수에 null을 사용하면 생각하는 대로 작동하지 않습니다. :

KeyManager[] 매개변수가 null이면 이 컨텍스트에 대해 빈 KeyManager가
정의됩니다. TrustManager[] 매개변수가 null인 경우
설치된 보안 공급자는
TrustManagerFactory의 우선순위가 가장 높은 구현을 검색하여
적절한 TrustManager를 얻습니다. 마찬가지로
SecureRandom 매개변수는 null일 수 있으며, 이 경우 기본
구현이 사용됩니다.

빈 KeyManager에는 RSA 또는 DSA 인증서가 포함되어 있지 않습니다. 따라서 해당 인증서를 사용하는 모든 기본 암호화 제품군은 비활성화됩니다. 이것이 바로 "사용할 수 없는 암호 모음 무시" 메시지가 모두 표시되는 이유이며, 결과적으로 "공통 암호 모음 없음" 메시지가 표시되는 것입니다.

키 저장소를 키 저장소로 사용하려면 이를 로드하고 이를 사용하여 KeyManagerFactory를 초기화해야 합니다.

KeyStore ks = KeyStore.getInstance("JKS");
InputStream ksIs = new FileInputStream("...");
try {

ks.load(ksIs, "password".toCharArray());

} 마침내 {

if (ksIs != null) {
    ksIs.close();
}

}

KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory

    .getDefaultAlgorithm());

kmf.init(ks , "keypassword".toCharArray());

SSLContext.init()의 첫 번째 매개변수로 kmf.getKeyManagers()를 사용합니다.

다른 두 매개변수의 경우 클라이언트 인증서 인증을 요청하지 않는 경우 취약점의 잠재적 원인이 되는 신뢰 관리자를 복사/붙여넣기하는 대신 신뢰 관리자를 기본값(null)으로 유지해야 하며 기본 null SecureRandom을 사용할 수도 있습니다.

위 내용은 null KeyManager 배열과 함께 `SSLContext.init`을 사용할 때 '사용할 수 없는 암호 모음 무시' 및 '공통 암호 모음 없음' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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