1. 개요
KeyStore는 이름에서 알 수 있듯이 기본적으로 인증서, 공개 및 개인 키의 저장소입니다. 또한 JDK 배포판은 관리를 돕기 위해 실행 파일인 keytool 과 함께 제공됩니다 .
반면에 인증서에는 많은 확장자가 있을 수 있지만 .cer 파일에는 공개 X.509 키가 포함되어 있으므로 신원 확인에만 사용할 수 있다는 점에 유의해야 합니다.
이 짧은 기사에서는 .cer 파일을 Java KeyStore로 가져오는 방법을 살펴보겠습니다 .
2. 인증서 가져오기
더 이상 고민하지 않고 샘플 KeyStore 내부에 Baeldung 공인 인증서 파일을 가져오겠습니다.
키 도구는 많은 옵션을 가지고 있지만, 하나 우린 관심 분야는 importcert 의 이름과 간단한 같습니다. 일반적으로 KeyStore 내부에는 다른 항목이 있으므로 alias 인수를 사용하여 고유한 이름을 할당해야 합니다.
> keytool -importcert -alias baeldung_public_cert -file baeldung.cer -keystore sample_keystore
> Enter keystore password:
...
> Trust this certificate? [no]: y
> Certificate was added to keystore
명령이 암호와 확인을 요구하지만 storepass 및 noprompt 인수를 추가하여 이를 무시할 수 있습니다 . 이것은 스크립트에서 keytool 을 실행할 때 특히 유용합니다 .
> keytool -importcert -alias baeldung_public_cert -file baeldung.cer -keystore sample_keystore -storepass pass123 -noprompt
> Certificate was added to keystore
또한 KeyStore가 존재하지 않으면 자동으로 생성됩니다. 이 경우 storetype 인수를 통해 형식을 설정할 수 있습니다 . 지정하지 않으면 Java 8 또는 이전 버전을 사용하는 경우 KeyStore 형식이 기본적으로 JKS로 설정 됩니다. Java 9에서 기본값은 PKCS12입니다 .
> keytool -importcert -alias baeldung_public_cert -file baeldung.cer -keystore sample_keystore -storetype PKCS12
> Enter keystore password:
> Re-enter new password:
...
> Trust this certificate? [no]: y
> Certificate was added to keystore
여기에서 PKCS12 키 저장소를 만들었습니다. JKS와 PKCS12의 주요 차이점은 JKS는 Java 전용 형식이고 PKCS12는 키와 인증서를 저장하는 표준화된 방법이라는 것입니다.
필요한 경우 프로그래밍 방식으로 이러한 작업을 수행할 수도 있습니다 .
3. 결론
이 사용방법(예제)에서는 KeyStore 내부에 .cer 파일을 가져오는 방법을 살펴보았습니다. 이를 위해 keytool의 importcert 옵션을 사용했습니다.