programing tip

Java KeyStore에서 개인 키 / 공개 인증서 쌍 가져 오기

itbloger 2020. 10. 26. 07:45
반응형

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());

키 저장소가 있으면 인증서 가져 오기가 매우 쉽습니다. 체크 아웃 이 링크 샘플 코드를.

참고 URL : https://stackoverflow.com/questions/17695297/importing-the-private-key-public-certificate-pair-in-the-java-keystore

반응형