Keytool은 암호화 키 및 인증서를 관리/저장할 수 있는 명령줄 유틸리티입니다.
시스템에 Java가 설치되어 있는 경우 keytool 명령을 사용하여 CA 인증서를 가져오고, 인증서를 나열하고, 자체 서명된 인증서를 만들고, 암호 및 공개/개인 키를 저장하고, 더 많은 작업을 수행할 수 있습니다.
혼란스러운? 걱정하지 마세요. 읽으면서 쉽게 설명하겠습니다.
나는 Linux를 사용하여 명령을 테스트하고 예제를 통해 이에 대해 조금 더 설명합니다.
Windows 및 macOS에서도 Keytool 명령을 사용할 수 있습니다.
목차
Keytool 명령이란 무엇입니까?
키 및 인증서 관리 유틸리티입니다. 이를 통해 일반적으로 서비스에 대한 액세스를 확인/인증하는 개인/공용 키 쌍을 저장할 수 있습니다.
이 기사의 제목을 보면 주로 시스템 관리자와 개발자가 사용하는 명령임을 짐작할 수 있습니다.
대부분의 경우 그렇습니다. 그러나 사용자는 keytool 명령을 사용하여 인증, 암호화 및 암호 해독 목적으로 암호 및 비밀 키를 저장할 수 있습니다. 따라서 궁금하신 분은 시스템에서 사용해 보시기 바랍니다.
암호화 키 개념을 처음 접하는 경우 keytool 명령을 시도하기 전에 데이터 암호화에 대한 기사를 확인하는 것이 좋습니다.
또한 OpenSSL 명령 예제를 확인하면 그것이 어떻게 다른지, 어떤 것을 사용할 수 있는지에 대한 아이디어를 얻을 수 있습니다.
자체 서명된 인증서 생성
keytool -genkeypair -alias <alias> -keypass <keypass> -validity <validity> -storepass <storepass>
구매한 SSL 인증서와 달리 자체 서명 인증서는 보안 연결을 사용하기 위한 개발/테스트 목적으로만 사용됩니다.
위에서 언급한 keytool 명령 구문을 사용하여 하나를 생성할 수 있습니다. 예를 들어 다음과 같습니다.
keytool -genkeypair -alias koreantech.org -keypass passforkeystore -validity 365 -storepass passforkeystore
별칭에는 아무 이름이나 사용할 수 있습니다. koreantech.org를 자리 표시자 텍스트로 사용합니다. 유효성을 사용자 지정하고 위 명령에서 “passforkeystore”를 대체하는 키 저장소의 암호를 지정할 수 있습니다.
PKCS12 키 저장소에는 하나의 암호만 지원됩니다. 그러나 Java 전용이 아닌 편리한 키 저장소 유형입니다.
키 저장소와 인증서에 대해 서로 다른 두 개의 암호가 필요한 경우 다른 인터페이스를 사용하도록 keytool 명령에 명시적으로 지시할 수 있습니다.
자세한 내용은 공식 문서에서 확인할 수 있습니다.
생성을 진행하면 진위 여부에 대한 추가 세부 정보를 요청합니다. 다음과 같이 표시됩니다.
What is your first and last name? [Unknown]: Ankush What is the name of your organizational unit? [Unknown]: koreantech.org What is the name of your organization? [Unknown]: koreantech.org What is the name of your City or Locality? [Unknown]: Bhubaneswar What is the name of your State or Province? [Unknown]: Odisha What is the two-letter country code for this unit? [Unknown]: 91 Is CN=Ankush, OU=koreantech.org, O=koreantech.org, L=Bhubaneswar, ST=Odisha, C=91 correct? [no]: yes
Java 키 저장소 및 키 쌍 생성
keytool -genkeypair -keyalg RSA -keysize 2048 -keystore keystore.jks -alias geekflarejava -validity 3650
Java 키 저장소 생성 및 인증서 가져오기
유효한 인증서가 있거나 이전에 인증서를 생성했는지 확인하십시오. 완료되면 가져오고 Java Keystore를 생성할 수 있습니다.
keytool -importcert -file test.crt -keystore truststore.jks -alias koreantech.org
제목이 있는 기본 키 저장소에 대한 키 쌍 생성
다음 명령을 사용하여 키 쌍(예: “ca”라는 이름으로)을 빠르게 생성할 수 있습니다.
keytool -alias ca -dname CN=CA -genkeypair
서명된 인증서 체인 만들기
ca 및 ca1의 키 쌍을 만들었다고 가정합니다. 다음 명령을 사용하여 ca가 ca1에 서명하는 서명된 인증서 체인을 만들 수 있습니다.
keytool -alias ca1 -certreq
keytool -alias ca -gencert -ext san=dns:ca1
keytool -alias ca1 -importcert
두 개의 키 쌍 ca1과 ca2를 더 사용하여 체인을 완성할 수 있습니다. 여기서 ca1은 ca2에 서명합니다.
인증서 가져오기
사용 가능한 파일에서 인증서를 가져오려는 경우 수행할 수 있는 작업은 다음과 같습니다.
keystool -import -alias koreantech.org -file geekflareserver.cer
기존 키 저장소에 대한 인증서 서명 요청(CSR) 생성
이미 Keystore를 생성했다면 CSR을 생성할 수 있습니다.
keytool -certreq -keyalg rsa -keystore keystore.jks -alias server -file koreantech.org.csr
Java 키 저장소에 저장된 인증서 나열
키 저장소에는 여러 인증서 항목이 있을 수 있습니다. “keystore.jks” 데이터베이스에서 인증서 목록을 확인한다고 가정하고 다음을 입력해야 합니다.
keytool -v -list -keystore keystore.jks
이에 대한 출력은 다음과 같습니다.
keytool -v -list -keystore keystore.jks Enter keystore password: Keystore type: PKCS12 Keystore provider: SUN Your keystore contains 2 entries Alias name: geekflarecert Creation date: 16-Nov-2022 Entry type: PrivateKeyEntry Certificate chain length: 1 Certificate[1]: Owner: CN=Ankush, OU=Geek, O=koreantech.org, L=Bhubaneswar, ST=od, C=91 Issuer: CN=Ankush, OU=Geek, O=koreantech.org, L=Bhubaneswar, ST=od, C=91 Serial number: a0b9a99 Valid from: Wed Nov 16 09:42:37 IST 2022 until: Sat Nov 13 09:42:37 IST 2032 Certificate fingerprints: SHA1: 23:7C:65:A7:A6:84:18:F8:45:04:92:DF:D4:BB:0F:91:6D:A5:C5:BE SHA256: C0:25:ED:B8:CF:1A:E6:E1:C5:75:A8:10:8F:CD:BE:42:26:96:9C:9A:FA:74:65:07:71:06:9A:2C:F5:80:FE:7F Signature algorithm name: SHA256withRSA Subject Public Key Algorithm: 2048-bit RSA key Version: 3
단일 인증서의 내용 확인
이미 생성된 인증서가 있는 경우 다음을 사용하여 자세한 내용을 확인할 수 있습니다.
keytool -v -printcert -file server.crt
Java 키 저장소에서 인증서 보기
Keystore 데이터베이스의 모든 인증서를 나열할 수 있습니다. 명령은 다음과 같습니다.
keytool -v -list -keystore keystore.jks
별칭 및 키 저장소를 사용하여 키 저장소 보기
키 저장소를 만들 때 설정한 별칭 이름을 사용하여 키 저장소를 확인하려면 다음을 입력합니다.
keytool -v -list -keystore keystore.jks -alias geekflareserver
KeyStore의 인증서 나열
기본 Keystore에 저장된 인증서를 확인하려면 다음 명령을 사용하십시오.
keytool -list -storepass passforkeystore
“passforkeystore”를 설정한 암호로 바꿔야 합니다.
인증서 정보 보기
단일 인증서에 대한 세부 정보를 확인해야 하는 경우 keystone 데이터베이스를 지정하지 않고 해당 별칭을 사용할 수 있습니다.
다음과 같이 표시됩니다.
keytool -list -v -alias koreantech.org -storepass passforkeystore
PEM 형식의 인증서 보기
PEM은 인증서 및 암호화 키의 가장 일반적인 형식 중 하나입니다. PEM으로 인증서를 확인하려면 다음을 입력하십시오.
keytool -v -printcert -file koreantech.org.crt -rfc
Java 키 저장소 비밀번호 변경
Java Keystore에 대한 암호를 이미 생성한 경우 다음 명령을 사용하여 암호를 변경할 수 있습니다.
keytool -delete -alias koreantech.org -keystore keystore.jks
Java 키 저장소에서 인증서 삭제
Java Keystore 및 별칭을 지정하여 삭제할 수 있습니다. 예를 들어:
keytool -delete -alias koreantech.org -keystore keystore.jks
명령 탐색 및 도움 받기
이 명령에는 많은 작업을 수행하기 위한 여러 인수와 확장이 있습니다. 사용 사례에 따라 모두 사용해야 할 수도 있고 필요하지 않을 수도 있습니다.
따라서 명령 옵션에 대해 자세히 알고 싶다면 언제든지 다음을 입력할 수 있습니다.
keytool -help
두 경우 모두 Linux 터미널을 사용하는 경우 다음 명령으로 man(매뉴얼) 페이지를 읽는 것이 좋습니다.
man keytool
man 명령을 사용하면 keytool 명령에 대해 필요한 모든 세부 정보를 얻을 수 있습니다.
따라서 그것에 대해 배울 수 있는 모든 것을 배울 수 있는 초능력을 유지하십시오!
마무리
파일 경로 및 기타 사용자 지정 옵션은 사용하는 플랫폼과 약간 다를 수 있습니다. 표준화된 옵션에 대한 Oracle 문서도 참조할 수 있습니다.
Keytool은 다양한 작업을 위한 훌륭한 도구입니다. 그것을 시험해보고 당신이 그것으로 무엇을 할 수 있는지보십시오!
시스템을 최적으로 유지하고 유지하기 위해 일부 Linux 명령을 탐색할 수도 있습니다.