AWS CloudHSM 클라이언트 SDK 3용 JCE 공급자 설치
JCE 공급자를 사용하려면 먼저 AWS CloudHSM 클라이언트가 필요합니다.
클라이언트는 클러스터에서 HSM과의 종단 간 암호화 통신을 설정하는 데몬입니다. JCE 공급자는 클라이언트와 로컬로 통신합니다. AWS CloudHSM 클라이언트 패키지를 설치 및 구성하지 않은 경우에는 클라이언트 설치(Linux)의 단계를 따라서 설치 및 구성합니다. 클라이언트를 설치 및 구성한 후 다음 명령을 사용하여 시작합니다.
JCE 공급자는 Linux 및 호환 운영 체제에서만 지원됩니다.
다음 섹션을 사용하여 보안 인증 정보를 설치, 검증하고 공급자에 제공합니다.
1단계: JCE 공급자 설치
다음 명령을 사용하여 JCE 공급자를 다운로드하고 설치합니다. 이 공급자는 Linux 및 호환 운영 체제에서만 지원됩니다.
참고
업그레이드에 대한 자세한 내용은 클라이언트 SDK 3 업그레이드 단원을 참조하십시오.
앞의 명령을 실행하면 다음과 같은 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가 아직 설치되어 있지 않은 경우 다음 명령을 사용하여 설치합니다.
-
다음 명령을 사용하여 필요한 환경 변수를 설정합니다.
<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 TestBasicFunctionalityJUnit 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의 세션 인증에 문제가 있을 때 오류 처리에서 이해하기 어려워집니다.