Java KeyStore에서 개인 키 / 공개 인증서 쌍 가져 오기
이 질문에 이미 답변이 있습니다.
다음 단계를 사용하여 TLS를 사용하는 Java (내부) 서버에서 사용할 개인 / 공개 키 쌍으로 새 Java 키 저장소를 생성했습니다. 인증서는 자체 서명되어 있습니다.
1) AES256으로 키 생성
openssl genrsa -aes256 -out server.key 1024
2) CA에 대한 인증서 요청 생성
openssl req -x509 -sha256 -new -key server.key -out server.csr
3) 자체 서명 된 만료 시간 10 년 생성
openssl x509 -sha256 -days 3652 -in server.csr -signkey server.key -out selfsigned.crt
4) KeyStoreExplorer 와 같은 프로그램을 사용 하여 새 JKS에서 쌍 (개인 키 및 자체 서명 된 인증서)을 가져옵니다.
이것은 작동하지만 GUI를 사용하지 않고 마지막 단계를 구현하고 싶습니다.
자체 서명 된 인증서 만 가져 오는 방법을 알고 있습니다.
// create the keystore and import the public key. THIS WILL NOT IMPORT THE PRIVATE KEY SO THE KEYSTORE CAN'T BE USED ON THE SERVER TO MAKE THE TLS CONNECTION
/usr/java/jdk1.6.0_45/bin/keytool -import -alias myservercert -file server.crt -keystore mykeystore.jks
그래서 질문은 : 어떻게 Java KeyStore를 만들고 GUI를 사용하지 않고 공개 키와 개인 키가있는 인증서를 모두 가져올 수 있습니까?
개인 키와 공용 인증서를 사용하여 먼저 PKCS12 키 저장소를 만든 다음 JKS로 변환해야합니다.
# Create PKCS12 keystore from private key and public certificate.
openssl pkcs12 -export -name myservercert -in selfsigned.crt -inkey server.key -out keystore.p12
# Convert PKCS12 keystore into a JKS keystore
keytool -importkeystore -destkeystore mykeystore.jks -srckeystore keystore.p12 -srcstoretype pkcs12 -alias myservercert
JKS의 내용을 확인하려면 다음 명령을 사용할 수 있습니다.
keytool -list -v -keystore mykeystore.jks
자체 서명 된 인증서가 아닌 경우 신뢰할 수있는 CA 인증서로 이어지는 인증서 체인을 가져 오는이 단계를 수행 할 수 있습니다.
키 저장소에는 키 저장소 파일이 필요합니다. KeyStore
클래스는 필요합니다 FileInputStream
. 그러나 ( FileInputStream
인스턴스 대신 ) null을 제공 하면 빈 키 스토어가로드 됩니다. 키 저장소를 생성 한 후에는 keytool
.
다음 코드는 빈 암호로 빈 키 저장소를 만듭니다.
KeyStore ks2 = KeyStore.getInstance("jks"); ks2.load(null,"".toCharArray()); FileOutputStream out = new FileOutputStream("C:\\mykeytore.keystore"); ks2.store(out, "".toCharArray());
키 저장소가 있으면 인증서 가져 오기가 매우 쉽습니다. 체크 아웃 이 링크 샘플 코드를.
'programing tip' 카테고리의 다른 글
자바 스크립트에서 [] 연산자를 어떻게 오버로드 하시겠습니까? (0) | 2020.10.26 |
---|---|
openssl에서“unable to write 'random state'”수정 방법 (0) | 2020.10.26 |
WGET 시간이 초과됩니까? (0) | 2020.10.26 |
WPF : 대화 / 프롬프트 만들기 (0) | 2020.10.26 |
FileWriter (Java)를 사용하여 UTF-8로 파일을 작성 하시겠습니까? (0) | 2020.10.26 |