기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
JCE 공급자를 사용하려면 먼저 AWS CloudHSM 클라이언트가 필요합니다.
클라이언트는 클러스터에서 HSM과의 종단 간 암호화 통신을 설정하는 데몬입니다. JCE 공급자는 클라이언트와 로컬로 통신합니다. AWS CloudHSM 클라이언트 패키지를 설치 및 구성하지 않은 경우의 단계에 따라 지금 구성하십시오클라이언트 설치(Linux). 클라이언트를 설치 및 구성한 후 다음 명령을 사용하여 시작합니다.
JCE 공급자는 Linux 및 호환 운영 체제에서만 지원됩니다.
$
sudo start cloudhsm-client
다음 섹션을 사용하여 보안 인증 정보를 설치, 검증하고 공급자에 제공합니다.
1단계: JCE 공급자 설치
다음 명령을 사용하여 JCE 공급자를 다운로드하고 설치합니다. 이 공급자는 Linux 및 호환 운영 체제에서만 지원됩니다.
참고
업그레이드에 대한 자세한 내용은 클라이언트 SDK 3 업그레이드 단원을 참조하십시오.
$
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
앞의 명령을 실행하면 다음과 같은 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
2단계: 설치 검증
HSM에서 기본 작업을 수행하여 설치를 검증합니다.
JCE 공급자 설치를 확인하려면
-
(선택 사항) 환경에 Java가 아직 설치되어 있지 않은 경우 다음 명령을 사용하여 설치합니다.
$
sudo yum install java-1.8.0-openjdk
-
다음 명령을 사용하여 필요한 환경 변수를 설정합니다.
<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>
-
다음 명령을 사용하여 기본 기능 테스트를 실행합니다. 성공하면 명령이 다음과 비슷하게 출력됩니다.
$
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)
3단계: 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 소프트웨어 라이브러리가 다음 순서로 자격 증명을 검색합니다.
-
HsmCredentials.properties
-
시스템 속성
-
환경 변수
오류 처리
암시적 로그인 방법보다 명시적 로그인 방법에서 오류 처리가 더 쉽습니다. LoginManager
클래스를 사용하면 애플리케이션이 오류를 처리하는 방법을 더 세부적으로 제어할 수 있습니다. 암시적 로그인 방법을 사용하면 자격 증명이 잘못되거나 HSM의 세션 인증에 문제가 있을 때 오류 처리에서 이해하기 어려워집니다.