웹사이트 검색

Java Keytool Essentials: Java 키 저장소 작업


소개

Java Keytool은 Java Keystore를 조작하는 데 사용되는 키 및 인증서 관리 도구이며 Java에 포함되어 있습니다. Java 키 저장소는 권한 부여 인증서 또는 공개 키 인증서의 컨테이너이며 암호화, 인증 및 HTTPS를 통한 제공을 위해 Java 기반 애플리케이션에서 자주 사용됩니다. 해당 항목은 키 저장소 암호로 보호됩니다. 키 저장소 항목은 별칭으로 식별되며 신뢰 체인을 형성하는 키와 인증서로 구성됩니다.

이 치트 시트 스타일 가이드는 Java Keystore로 작업할 때 일반적으로 유용한 keytool 명령에 대한 빠른 참조를 제공합니다. 여기에는 Java 응용 프로그램과 함께 사용할 수 있도록 Java 키 저장소를 만들고 수정하는 작업이 포함됩니다.

이 가이드를 사용하는 방법:

  • 인증서 서명 요청(CSR)에 익숙하지 않은 경우 OpenSSL 치트 시트의 CSR 섹션을 읽어보세요.
  • 이 가이드는 간단한 치트 시트 형식으로 자체 포함된 명령줄 스니펫입니다.
  • 완료하려는 작업과 관련된 섹션으로 이동합니다(힌트: 왼쪽 하단의 콘텐츠 메뉴 또는 브라우저의 찾기 기능 사용).
  • 대부분의 명령은 명확성을 위해 여러 줄로 확장된 한 줄짜리 명령입니다(\\ 기호 사용).

키 저장소 항목 생성 및 가져오기

이 섹션에서는 키 쌍 및 인증서 생성 및 인증서 가져오기와 관련된 Java Keytool 명령에 대해 설명합니다.

신규/기존 키 저장소에서 키 생성

HTTP(TLS를 통한 HTTP)를 사용하여 Java 애플리케이션을 보호하려면 이 방법을 사용하십시오. 이렇게 하면 CSR을 생성하고 인증 기관에서 SSL 인증서를 얻는 데 사용할 수 있는 새 또는 기존 Java 키 저장소에 새 키 쌍이 생성됩니다.

이 명령은 지정된 키 저장소 파일(keystore.jks)에서 지정된 별칭(domain) 아래에 2048비트 RSA 키 쌍을 생성합니다.

keytool -genkeypair \
        -alias domain \
        -keyalg RSA \
        -keystore keystore.jks

지정된 키 저장소가 아직 존재하지 않는 경우 요청된 정보가 제공된 후에 생성됩니다. 그러면 키 저장소 암호(신규 또는 기존)를 입력하라는 메시지가 표시되고 고유 이름 프롬프트(개인 키용)와 원하는 개인 키 암호를 입력하라는 메시지가 표시됩니다.

기존 개인 키에 대한 CSR 생성

CA 서명 SSL 인증서 발급을 요청하기 위해 CA에 보낼 수 있는 CSR을 생성하려는 경우 이 방법을 사용합니다. 키 저장소와 별칭이 이미 존재해야 합니다. 이전 명령을 사용하여 이를 확인할 수 있습니다.

이 명령은 (keystore.jks)에서 별칭(domain)으로 식별되는 개인 키로 서명된 CSR(domain.csr)을 생성합니다. 키 저장소:

keytool -certreq \
        -alias domain \
        -file domain.csr \
        -keystore keystore.jks

키 저장소의 비밀번호를 입력하면 CSR이 생성됩니다.

서명/루트/중간 인증서 가져오기

서명된 인증서를 가져오려면 이 방법을 사용하십시오. CA에서 서명한 인증서를 키 저장소에 저장합니다. 지정된 별칭에 존재하는 개인 키와 일치해야 합니다. 동일한 명령을 사용하여 CA가 신뢰 체인을 완료하는 데 필요할 수 있는 루트 또는 중간 인증서를 가져올 수도 있습니다. domain 대신 root와 같은 고유한 별칭과 가져오려는 인증서를 지정하기만 하면 됩니다.

이 명령은 인증서(domain.crt)를 지정된 별칭(domain) 아래의 키 저장소(keystore.jks)로 가져옵니다. 서명된 인증서를 가져오는 경우 지정된 별칭의 개인 키와 일치해야 합니다.

keytool -importcert \
        -trustcacerts -file domain.crt \
        -alias domain \
        -keystore keystore.jks

키 저장소 암호를 입력한 다음 가져오기 작업을 확인하라는 메시지가 표시됩니다.

참고: 명령을 사용하여 CA의 인증서를 Java 신뢰 저장소로 가져올 수도 있습니다. 이 신뢰 저장소는 일반적으로 $JAVA_HOME이라고 가정하고 $JAVA_HOME/jre/lib/security/cacerts에 있습니다. JRE 또는 JDK가 설치된 위치입니다.

신규/기존 키 저장소에서 자체 서명된 인증서 생성

Java 응용 프로그램에 대한 자체 서명된 인증서를 생성하려면 이 명령을 사용하십시오. 이것은 실제로 새 키 쌍을 생성하는 데 사용되는 것과 동일한 명령이지만 유효 기간이 일 단위로 지정됩니다.

이 명령은 지정된 키 저장소 파일(keystore.jks ):

keytool -genkey \
        -alias domain \
        -keyalg RSA \
        -validity 365 \
        -keystore keystore.jks

지정된 키 저장소가 아직 존재하지 않는 경우 요청된 정보가 제공된 후에 생성됩니다. 그러면 키 저장소 암호(신규 또는 기존)를 입력하라는 메시지가 표시되고 고유 이름 프롬프트(개인 키용)와 원하는 개인 키 암호를 입력하라는 메시지가 표시됩니다.

키 저장소 항목 보기

이 섹션에서는 인증서 정보 보기 또는 인증서 내보내기와 같은 Java 키 저장소의 콘텐츠 나열에 대해 설명합니다.

키 저장소 인증서 지문 나열

이 명령은 해당 별칭 아래 키 저장소(keystore.jks)에 있는 모든 인증서의 SHA 지문을 나열합니다.

keytool -list \
        -keystore keystore.jks

키 저장소의 암호를 입력하라는 메시지가 표시됩니다. -alias domain 옵션을 사용하여 출력을 특정 별칭으로 제한할 수도 있습니다. 여기서 "domain\은 별칭 이름입니다.

Verbose 키 저장소 콘텐츠 나열

이 명령은 인증서 체인 길이, 체인에 있는 인증서 지문, 고유 이름, 일련 번호 및 생성/만료 날짜를 포함하여 키 저장소(keystore.jks)에 포함된 항목에 대한 자세한 정보를 해당 항목 아래에 나열합니다. 각각의 별칭:

keytool -list -v \
        -keystore keystore.jks

키 저장소의 암호를 입력하라는 메시지가 표시됩니다. -alias domain 옵션을 사용하여 출력을 특정 별칭으로 제한할 수도 있습니다. 여기서 "domain\은 별칭 이름입니다.

참고: 이 명령을 사용하여 일반적으로 $JAVA_HOME을 가정하여 $JAVA_HOME/jre/lib/security/cacerts에 있는 Java 신뢰 저장소에 있는 인증서를 볼 수도 있습니다. JRE 또는 JDK가 설치된 위치입니다.

Keytool을 사용하여 인증서 정보 보기

이 명령은 지문, 소유자 및 발급자의 고유 이름, 유효 기간을 포함하여 인증서 파일(certificate.crt)에 대한 자세한 정보를 인쇄합니다.

keytool -printcert \
        -file domain.crt

키 저장소 암호를 입력하라는 메시지가 표시됩니다.

수출증명서

이 명령은 키 저장소(keystore.jks):

keytool -exportcert
        -alias domain
        -file domain.der
        -keystore keystore.jks

키 저장소 암호를 입력하라는 메시지가 표시됩니다. DER로 인코딩된 인증서를 PEM 인코딩으로 변환하려면 OpenSSL 치트 시트를 따르십시오.

키 저장소 수정

이 섹션에서는 별칭 삭제 또는 이름 바꾸기와 같은 Java 키 저장소 항목 수정에 대해 설명합니다.

키 저장소 비밀번호 변경

이 명령은 키 저장소(keystore.jks)의 암호를 변경하는 데 사용됩니다.

keytool -storepasswd \
        -keystore keystore.jks

현재 비밀번호를 입력한 다음 새 비밀번호를 입력하라는 메시지가 표시됩니다. -new newpass 옵션을 사용하여 명령에 새 암호를 지정할 수도 있습니다. 여기서 "newpass\는 암호입니다.

별칭 삭제

이 명령은 키 저장소(keystore.jks)에서 별칭(도메인)을 삭제하는 데 사용됩니다.

keytool -delete \
        -alias domain \
        -keystore keystore.jks

키 저장소 암호를 입력하라는 메시지가 표시됩니다.

별칭 이름 바꾸기

이 명령은 키 저장소(keystore.jks)에서 별칭(domain)의 이름을 대상 별칭(newdomain)으로 바꿉니다.

keytool -changealias \
        -alias domain \
        -destalias newdomain \
        -keystore keystore.jks

키 저장소 암호를 입력하라는 메시지가 표시됩니다.

결론

대부분의 사람들이 Java Keytool을 사용하여 Java Keystore를 조작하는 방법을 다루어야 합니다. 여기에서 다루지 않은 다른 많은 용도가 있으므로 의견에 다른 용도를 묻거나 제안하십시오.

이 튜토리얼은 Java 1.7.0 업데이트 65와 함께 제공되는 키 저장소 버전을 기반으로 합니다. Ubuntu에 Java를 설치하는 데 도움이 필요하면 이 가이드를 따르십시오.