Java 프로그램은 인증서를 포함하는 키 저장소가 어디에 있는지 어떻게 알 수 있습니까? 또는 Java 프로그램에 키 저장소를 찾을 위치를 알려주는 방법은 무엇입니까?
어떤 방법으로 키 저장소를 지정한 후 서버를 클라이언트로 인증하는 데 사용할 인증서를 지정하는 방법은 무엇입니까?
Java 프로그램은 인증서를 포함하는 키 저장소가 어디에 있는지 어떻게 알 수 있습니까? 또는 Java 프로그램에 키 저장소를 찾을 위치를 알려주는 방법은 무엇입니까?
어떤 방법으로 키 저장소를 지정한 후 서버를 클라이언트로 인증하는 데 사용할 인증서를 지정하는 방법은 무엇입니까?
답변:
System.setProperty("javax.net.ssl.trustStore", path_to_your_jks_file);
SSL 특성은 시스템 특성을 통해 JVM 레벨에서 설정됩니다. 프로그램을 실행할 때 설정 (java -D ....)하거나 System.setProperty를 수행하여 코드에서 설정할 수 있음을 의미합니다.
설정해야 할 특정 키는 다음과 같습니다.
javax.net.ssl.keyStore- 애플리케이션 프로세스의 자체 인증서 및 개인 키를 포함하는 Java 키 저장소 파일의 위치 Windows에서 지정된 경로 이름은 백 슬래시 대신 슬래시 (/)를 사용해야합니다.
javax.net.ssl.keyStorePassword - javax.net.ssl.keyStore에 의해 지정된 키 저장소 파일에서 개인 키에 액세스하기위한 비밀번호입니다. 이 비밀번호는 두 번 사용됩니다. 키 저장소 파일의 잠금을 해제하고 (저장소 암호) 키 저장소에 저장된 개인 키를 해독하려면 (키 암호).
javax.net.ssl.trustStore- 이 응용 프로그램 프로세스 (신뢰 저장소)가 신뢰하는 CA 인증서 콜렉션을 포함하는 Java 키 저장소 파일의 위치. Windows에서 지정된 경로 이름
/
은 백 슬래시 대신 슬래시 ()를 사용해야합니다\
.이 등록 정보를 사용하여 신뢰 저장소 위치를 지정하지 않으면 SunJSSE 구현은 다음 위치에서 키 저장소 파일을 순서대로 검색하고 사용합니다.
$JAVA_HOME/lib/security/jssecacerts
$JAVA_HOME/lib/security/cacerts
javax.net.ssl.trustStorePassword-로 지정된 키 저장소 파일 (저장소 비밀번호)을 잠금 해제하는 비밀번호
javax.net.ssl.trustStore
입니다.javax.net.ssl.trustStoreType- (선택 사항) Java 키 저장소 파일 형식의 경우이 특성 값은 jks (또는 JKS)입니다. 기본값은 이미 jks이므로 일반적으로이 특성을 지정하지 마십시오.
javax.net.debug -SSL / TLS 계층에 대한 로깅을 켜려면이 특성을 ssl로 설정하십시오.
우선, 두 종류의 키 저장소가 있습니다.
개인 및 일반
응용 프로그램은 시작 또는 시스템 기본값에 표시된 것을 사용합니다.
JRE 또는 JDK가 실행 중이거나 개인 또는 "전역"폴더를 확인하는 경우 다른 폴더가됩니다.
그들은 너무 암호화
간단히 말해 경로는 다음과 같습니다.
$JAVA_HOME/lib/security/cacerts
당국에 대한 모든 CA를 가지고 있고 매우 중요한 "일반적인 것"을 위해.
-D
아래와 같이 속성을 사용하여 런타임에 경로를 언급 할 수도 있습니다
-Djavax.net.ssl.trustStore=/home/user/SSL/my-cacerts
-Djavax.net.ssl.keyStore=/home/user/SSL/server_keystore.jks
아파치 스파크 응용 프로그램에서 --conf
옵션과 키를 사용하여 인증서 및 키 저장소의 경로를 제공하고 다음 과 extraJavaoptions
같이 스파크 제출
--conf 'spark.driver.extraJavaOptions=
-Djavax.net.ssl.trustStore=/home/user/SSL/my-cacerts
-Djavax.net.ssl.keyStore=/home/user/SSL/server_keystore.jks'