클라이언트 SDK 3용 AWS CloudHSM JCE 공급자 설치 및 사용 - AWS CloudHSM

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

클라이언트 SDK 3용 AWS CloudHSM JCE 공급자 설치 및 사용

JCE 공급자를 사용하려면 먼저 클라이언트가 필요합니다. AWS CloudHSM

클라이언트는 클러스터의 HSM과 end-to-end 암호화된 통신을 설정하는 데몬입니다. JCE 공급자는 클라이언트와 로컬로 통신합니다. AWS CloudHSM 클라이언트 패키지를 설치 및 구성하지 않았다면, 지금 의 단계에 따라 설치하세요. 클라이언트 설치(Linux) 클라이언트를 설치 및 구성한 후 다음 명령을 사용하여 시작합니다.

JCE 공급자는 Linux 및 호환 운영 체제에서만 지원됩니다.

Amazon Linux
$ sudo start cloudhsm-client
Amazon Linux 2
$ sudo systemctl cloudhsm-client start
CentOS 7
$ sudo systemctl cloudhsm-client start
CentOS 8
$ sudo systemctl cloudhsm-client start
RHEL 7
$ sudo systemctl cloudhsm-client start
RHEL 8
$ sudo systemctl cloudhsm-client start
Ubuntu 16.04 LTS
$ sudo systemctl cloudhsm-client start
Ubuntu 18.04 LTS
$ sudo systemctl cloudhsm-client start
Ubuntu 20.04 LTS
$ sudo systemctl cloudhsm-client start

JCE 공급자 설치

다음 명령을 사용하여 JCE 공급자를 다운로드하고 설치합니다. 이 공급자는 Linux 및 호환 운영 체제에서만 지원됩니다.

참고

업그레이드에 대한 자세한 내용은 클라이언트 SDK 3 업그레이드 단원을 참조하십시오.

Amazon Linux
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-jce-latest.el6.x86_64.rpm
$ sudo yum install ./cloudhsm-client-jce-latest.el6.x86_64.rpm
Amazon Linux 2
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-jce-latest.el7.x86_64.rpm
$ sudo yum install ./cloudhsm-client-jce-latest.el7.x86_64.rpm
CentOS 7
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-jce-latest.el7.x86_64.rpm
$ sudo yum install ./cloudhsm-client-jce-latest.el7.x86_64.rpm
CentOS 8
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL8/cloudhsm-client-jce-latest.el8.x86_64.rpm
$ sudo yum install ./cloudhsm-client-jce-latest.el8.x86_64.rpm
RHEL 7
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-jce-latest.el7.x86_64.rpm
$ sudo yum install ./cloudhsm-client-jce-latest.el7.x86_64.rpm
RHEL 8
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL8/cloudhsm-client-jce-latest.el8.x86_64.rpm
$ sudo yum install ./cloudhsm-client-jce-latest.el8.x86_64.rpm
Ubuntu 16.04 LTS
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Xenial/cloudhsm-client-jce_latest_amd64.deb
$ sudo apt install ./cloudhsm-client-jce_latest_amd64.deb
Ubuntu 18.04 LTS
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Bionic/cloudhsm-client-jce_latest_u18.04_amd64.deb
$ sudo apt install ./cloudhsm-client-jce_latest_u18.04_amd64.deb

앞의 명령을 실행하면 다음과 같은 JCE 공급자 파일을 찾을 수 있습니다.

  • /opt/cloudhsm/java/cloudhsm-version.jar

  • /opt/cloudhsm/java/cloudhsm-test-version.jar

  • /opt/cloudhsm/java/hamcrest-all-1.3.jar

  • /opt/cloudhsm/java/junit.jar

  • /opt/cloudhsm/java/log4j-api-2.17.1.jar

  • /opt/cloudhsm/java/log4j-core-2.17.1.jar

  • /opt/cloudhsm/lib/libcaviumjca.so

설치 검증

HSM에서 기본 작업을 수행하여 설치를 검증합니다.

JCE 공급자 설치를 확인하려면
  1. (선택 사항) 환경에 Java가 아직 설치되어 있지 않은 경우 다음 명령을 사용하여 설치합니다.

    Linux (and compatible libraries)
    $ sudo yum install java-1.8.0-openjdk
    Ubuntu
    $ sudo apt-get install openjdk-8-jre
  2. 다음 명령을 사용하여 필요한 환경 변수를 설정합니다. <HSM user name><password>를 CU(Crypto User)의 자격 증명으로 바꿉니다.

    $ export LD_LIBRARY_PATH=/opt/cloudhsm/lib
    $ export HSM_PARTITION=PARTITION_1
    $ export HSM_USER=<HSM user name>
    $ export HSM_PASSWORD=<password>
  3. 다음 명령을 사용하여 기본 기능 테스트를 실행합니다. 성공하면 명령이 다음과 비슷하게 출력됩니다.

    $ java8 -classpath "/opt/cloudhsm/java/*" org.junit.runner.JUnitCore TestBasicFunctionality JUnit version 4.11 .2018-08-20 17:53:48,514 DEBUG [main] TestBasicFunctionality (TestBasicFunctionality.java:33) - Adding provider. 2018-08-20 17:53:48,612 DEBUG [main] TestBasicFunctionality (TestBasicFunctionality.java:42) - Logging in. 2018-08-20 17:53:48,612 INFO [main] cfm2.LoginManager (LoginManager.java:104) - Looking for credentials in HsmCredentials.properties 2018-08-20 17:53:48,612 INFO [main] cfm2.LoginManager (LoginManager.java:122) - Looking for credentials in System.properties 2018-08-20 17:53:48,613 INFO [main] cfm2.LoginManager (LoginManager.java:130) - Looking for credentials in System.env SDK Version: 2.03 2018-08-20 17:53:48,655 DEBUG [main] TestBasicFunctionality (TestBasicFunctionality.java:54) - Generating AES Key with key size 256. 2018-08-20 17:53:48,698 DEBUG [main] TestBasicFunctionality (TestBasicFunctionality.java:63) - Encrypting with AES Key. 2018-08-20 17:53:48,705 DEBUG [main] TestBasicFunctionality (TestBasicFunctionality.java:84) - Deleting AES Key. 2018-08-20 17:53:48,707 DEBUG [main] TestBasicFunctionality (TestBasicFunctionality.java:92) - Logging out. Time: 0.205 OK (1 test)

JCE 공급자에게 자격 증명 제공

애플리케이션에서 인증서를 사용하려면 먼저 HSM이 Java 애플리케이션을 인증해야 합니다. 애플리케이션마다 한 세션을 사용할 수 있습니다. HSM이 명시적 로그인이나 암시적 로그인 방법을 사용하여 세션을 인증합니다.

명시적 로그인 – 이 메소드를 사용하면 애플리케이션에서 직접 CloudHSM 자격 증명을 제공할 수 있습니다. LoginManager.login() 메서드가 사용됩니다. 이때 CU 사용자 이름, 암호 및 HSM 파티션 ID를 전달합니다. 명시적 로그인 방법 사용에 대한 자세한 내용은 Login to an HSM 코드 예제를 참조하십시오.

암시적 로그인 - 이 메서드를 사용하면 새 속성 파일, 시스템 속성 또는 환경 변수로 CloudHSM 자격 증명을 설정할 수 있습니다.

  • 새 속성 파일 - HsmCredentials.properties라는 이름의 새 파일을 생성하고 애플리케이션의 CLASSPATH에 추가합니다. 파일에 다음을 포함해야 합니다.

    HSM_PARTITION = PARTITION_1 HSM_USER = <HSM user name> HSM_PASSWORD = <password>
  • 시스템 속성 – 애플리케이션을 실행할 때 시스템 속성을 통해 자격 증명을 설정합니다. 다음 예제와 같이 이 작업을 두 가지 방법으로 수행할 수 있습니다.

    $ java -DHSM_PARTITION=PARTITION_1 -DHSM_USER=<HSM user name> -DHSM_PASSWORD=<password>
    System.setProperty("HSM_PARTITION","PARTITION_1"); System.setProperty("HSM_USER","<HSM user name>"); System.setProperty("HSM_PASSWORD","<password>");
  • 환경 변수 – 자격 증명을 환경 변수로 설정합니다.

    $ export HSM_PARTITION=PARTITION_1 $ export HSM_USER=<HSM user name> $ export HSM_PASSWORD=<password>

애플리케이션이 자격 증명을 제공하지 않거나 HSM이 세션을 인증하기 전에 작업을 시도하면 자격 증명을 사용할 수 없기도 합니다. 이러한 경우 Java용 CloudHSM 소프트웨어 라이브러리가 다음 순서로 자격 증명을 검색합니다.

  1. HsmCredentials.properties

  2. 시스템 속성

  3. 환경 변수

오류 처리

암시적 로그인 방법보다 명시적 로그인 방법에서 오류 처리가 더 쉽습니다. LoginManager 클래스를 사용하면 애플리케이션이 오류를 처리하는 방법을 더 세부적으로 제어할 수 있습니다. 암시적 로그인 방법을 사용하면 자격 증명이 잘못되거나 HSM의 세션 인증에 문제가 있을 때 오류 처리에서 이해하기 어려워집니다.

JCE 공급자의 키 관리 기본 사항

JCE 공급자의 키 관리에 대한 기본 사항은 키 가져오기, 키 내보내기, 핸들별 키 로드 또는 키 삭제를 포함합니다. 키 관리에 대한 자세한 내용은 Manage keys 코드 예제를 참조하십시오.

또한 코드 샘플에서 JCE 제공자 코드 예시를 더 확인할 수 있습니다.