단계 2: 프라이빗 키 및 SSL/TLS 인증서 생성 또는 가져오기 - AWS CloudHSM

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

단계 2: 프라이빗 키 및 SSL/TLS 인증서 생성 또는 가져오기

HTTPS를 활성화하려면 Tomcat 웹 서버 애플리케이션에서 프라이빗 키와 해당되는 SSL/TLS 인증서가 필요합니다. 웹 서버 SSL/TLS 오프로드를 함께 사용하려면 클러스터의 HSM에 AWS CloudHSM개인 키를 저장해야 합니다. AWS CloudHSM

참고

아직 프라이빗 키와 해당 인증서가 없다면 HSM에서 프라이빗 키를 생성하세요. 프라이빗 키를 사용하여 SSL/TLS 인증서를 생성하는 데 사용하는 인증서 사인 요청(CSR)을 생성합니다.

HSM의 개인 키에 대한 참조와 관련 인증서를 포함하는 로컬 AWS CloudHSM KeyStore 파일을 생성합니다. 웹 서버는 SSL/TLS 오프로드 중에 이 AWS CloudHSM KeyStore 파일을 사용하여 HSM의 개인 키를 식별합니다.

프라이빗 키 생성

이 섹션에서는 From JDK를 사용하여 키페어를 생성하는 방법을 보여줍니다. KeyTool HSM 내에서 키 쌍을 생성한 후에는 이를 KeyStore 파일로 내보내고 해당 인증서를 생성할 수 있습니다.

사용 사례에 따라 RSA 또는 EC 키 페어를 생성할 수 있습니다. 다음 단계에서는 RSA 키 쌍을 생성하는 방법을 보여 줍니다.

genkeypair KeyTool 명령을 사용하여 RSA 키 쌍을 생성합니다.
  1. 아래의 <VARIABLES>을 특정 데이터로 바꾼 후 다음 명령을 사용하여 HSM의 프라이빗 키를 참조하는 jsse_keystore.keystore라는 이름의 키스토어 파일을 생성합니다.

    $ keytool -genkeypair -alias <UNIQUE ALIAS FOR KEYS> -keyalg <KEY ALGORITHM> -keysize <KEY SIZE> -sigalg <SIGN ALGORITHM> \ -keystore <PATH>/<JSSE KEYSTORE NAME>.keystore -storetype CLOUDHSM \ -dname CERT_DOMAIN_NAME \ -J-classpath '-J'$JAVA_LIB'/*:/opt/cloudhsm/java/*:./*' \ -provider "com.amazonaws.cloudhsm.jce.provider.CloudHsmProvider" \ -providerpath "$CLOUDHSM_JCE_LOCATION" \ -keypass <KEY PASSWORD> -storepass <KEYSTORE PASSWORD>
    • <PATH>: 키스토어 파일을 생성하려는 경로입니다.

    • <UNIQUE ALIAS FOR KEYS>: HSM에서 키를 고유하게 식별하는 데 사용됩니다. 이 별칭은 키의 LABEL 속성으로 설정됩니다.

    • <KEY PASSWORD>: 키에 대한 참조를 로컬 Keystore 파일에 저장하며, 이 암호는 해당 로컬 참조를 보호합니다.

    • <KEYSTORE PASSWORD>: 로컬 키스토어 파일의 암호입니다.

    • <JSSE KEYSTORE NAME>: 키스토어 파일의 이름입니다.

    • <CERT DOMAIN NAME>: X.500 고유 이름.

    • <KEY ALGORITHM>: 키 페어를 생성하는 키 알고리즘(예: RSA 및 EC).

    • <KEY SIZE>: 키 페어를 생성하기 위한 키 크기(예: 2048, 3072, 4096).

    • <SIGN ALGORITHM>: 키 쌍을 생성하기 위한 키 크기(예: RSA를 사용하는 SHA1, RSA를 사용하는 SHA224, RSA를 사용하는 SHA256, RSA를 사용하는 SHA384, RSA를 사용하는 SHA512).

  2. 명령이 성공했는지 확인하려면 다음 명령을 입력하고 RSA 키 쌍이 성공적으로 생성되었는지 확인합니다.

    $ ls <PATH>/<JSSE KEYSTORE NAME>.keystore

자체 사인된 인증서를 생성합니다.

키스토어 파일과 함께 개인 키를 생성한 후에는 이 파일을 사용하여 인증서 서명 요청(CSR) 및 인증서를 생성할 수 있습니다.

프로덕션 환경에서는 일반적으로 CA(인증 기관)을 사용하여 CSR에서 인증서를 생성합니다. 테스트 환경에는 CA가 필요하지 않습니다. CA를 사용하는 경우 CA에 CSR 파일을 보내고 CA가 웹 서버에서 HTTPS용으로 제공하는 서명된 SSL/TLS 인증서를 사용하세요.

CA를 사용하는 대신 를 사용하여 자체 서명된 인증서를 KeyTool 만들 수 있습니다. 자체 사인된 인증서는 브라우저에서 신뢰하지 않으며 프로덕션 환경에서 사용해서는 안 됩니다. 테스트 환경에서는 이러한 인증서를 사용할 수 있습니다.

주의

자체 사인된 인증서는 테스트 환경에서만 사용해야 합니다. 프로덕션 환경의 경우 인증 기관과 같은 추가 보안 방법을 사용하여 인증서를 생성하세요.

주제
    인증서 생성
    1. 이전 단계에서 생성한 키스토어 파일의 사본을 확보하세요.

    2. 다음 명령을 실행하여 를 사용하여 인증서 서명 요청 (CSR) 을 생성합니다. KeyTool

      $ keytool -certreq -keyalg RSA -alias unique_alias_for_key -file certreq.csr \ -keystore <JSSE KEYSTORE NAME>.keystore -storetype CLOUDHSM \ -J-classpath '-J$JAVA_LIB/*:/opt/cloudhsm/java/*:./*' \ -keypass <KEY PASSWORD> -storepass <KEYSTORE PASSWORD>
      참고

      인증서 서명 요청의 출력 파일은 certreq.csr입니다.

    인증서에 서명
    • 아래 <VARIABLES>를 특정 데이터로 대체한 후 다음 명령을 실행하여 HSM의 프라이빗 키로 CSR에 서명합니다. 이렇게 하면 자체 사인된 인증서가 생성됩니다.

      $ keytool -gencert -infile certreq.csr -outfile certificate.crt \ -alias <UNIQUE ALIAS FOR KEYS> -keypass <KEY_PASSWORD> -storepass <KEYSTORE_PASSWORD> -sigalg SIG_ALG \ -storetype CLOUDHSM -J-classpath '-J$JAVA_LIB/*:/opt/cloudhsm/java/*:./*' \ -keystore jsse_keystore.keystore
      참고

      certificate.crt는 별칭의 프라이빗 키를 사용하는 서명된 인증서입니다.

    키스토어에서 인증서 가져오기
    • 아래 <VARIABLES>를 특정 데이터로 바꾼 후 다음 명령을 실행하여 서명된 인증서를 신뢰할 수 있는 인증서로 가져옵니다. 이 단계에서는 별칭으로 식별되는 키스토어 항목에 인증서를 저장합니다.

      $ keytool -import -alias <UNIQUE ALIAS FOR KEYS> -keystore jsse_keystore.keystore \ -file certificate.crt -storetype CLOUDHSM \ -v -J-classpath '-J$JAVA_LIB/*:/opt/cloudhsm/java/*:./*' \ -keypass <KEY PASSWORD> -storepass <KEYSTORE_PASSWORD>
    인증서를 PEM으로 변환합니다.
    • 다음 명령을 실행하여 서명된 인증서 파일(.crt)을 PEM으로 변환합니다. PEM 파일은 http 클라이언트에서 요청을 보내는 데 사용됩니다.

      $ openssl x509 -inform der -in certificate.crt -out certificate.pem

    이 단계를 완료한 후 3단계: 웹 서버 구성으로 이동합니다.