JAVA 서버와 클라이언트는 SSL을 사용하여 네트워크를 통해 통신합니다. 서버와 클라이언트는 인증서를 사용하여 서로를 인증합니다. 서버와 클라이언트가 사용하는 키 저장소 유형은 JKS입니다. 서버와 클라이언트는 키 저장소 및 신뢰 저장소 파일을로드합니다. 키 저장소 및 신뢰 저장소 파일 이름은 server.keystore, server.truststore, client.keystore 및 client.truststore입니다. 테스트 용도로 자체 서명 된 인증서를 사용하고 있습니다.
질문 :
Q1. 6 단계에서 서버 및 클라이언트 자체 인증서를 해당 신뢰 저장소에 추가해야하는 이유를 알고 싶습니다.
Q2. 같은 것을 달성하기 위해 숫자 단계를 줄일 수 있습니까? 그렇다면 어떻게?
서버에 대한 RSA 키, 자체 서명 된 인증서, 키 저장소 및 신뢰 저장소를 작성하는 단계
-
개인 RSA 키 생성
openssl genrsa -out diagserverCA.key 2048
-
x509 인증서 생성
openssl req -x509 -new -nodes -key diagserverCA.key \ -sha256 -days 1024 -out diagserverCA.pem
-
개인 키 및 공개 인증서에서 PKCS12 키 저장소를 작성하십시오.
openssl pkcs12 -export -name server-cert \ -in diagserverCA.pem -inkey diagserverCA.key \ -out serverkeystore.p12
-
PKCS12 키 저장소를 JKS 키 저장소로 변환
keytool -importkeystore -destkeystore server.keystore \ -srckeystore serverkeystore.p12 -srcstoretype pkcs12 -alias server-cert
-
클라이언트의 인증서를 서버의 신뢰 저장소로 가져옵니다.
keytool -import -alias client-cert \ -file diagclientCA.pem -keystore server.truststore
-
서버의 인증서를 서버의 신뢰 저장소로 가져옵니다.
keytool -import -alias server-cert \ -file diagserverCA.pem -keystore server.truststore
클라이언트에 대한 RSA 개인 키, 자체 서명 된 인증서, 키 저장소 및 신뢰 저장소를 작성하는 단계
-
개인 키 생성
openssl genrsa -out diagclientCA.key 2048
-
x509 인증서 생성
openssl req -x509 -new -nodes -key diagclientCA.key \ -sha256 -days 1024 -out diagclientCA.pem
-
개인 키 및 공개 인증서에서 PKCS12 키 저장소를 작성하십시오.
openssl pkcs12 -export -name client-cert \ -in diagclientCA.pem -inkey diagclientCA.key \ -out clientkeystore.p12
-
PKCS12 키 저장소를 JKS 키 저장소로 변환
keytool -importkeystore -destkeystore client.keystore \ -srckeystore clientkeystore.p12 -srcstoretype pkcs12 \ -alias client-cert
-
서버의 인증서를 클라이언트의 신뢰 저장소로 가져옵니다.
keytool -import -alias server-cert -file diagserverCA.pem \ -keystore client.truststore
-
클라이언트의 인증서를 클라이언트의 신뢰 저장소로 가져옵니다.
keytool -import -alias client-cert -file diagclientCA.pem \ -keystore client.truststore
답변
일반 https는 1 개의 명령 만 필요합니다.
keytool -genkeypair
클라이언트가 맹목적으로 어떤 인증서도 신뢰하지 않으면 서버 공용 인증서를 클라이언트에 복사해야합니다.
왜 openssl을 사용하고 있습니까?