Azure Cloud HSM 인증서 스토리지

Azure Cloud HSM은 PKCS#11을 통해 인증서 스토리지를 지원하므로 애플리케이션에서 키와 함께 X.509 인증서를 관리할 수 있습니다. 이 자습서에서는 Azure Blob Storage 및 관리 ID 구성을 포함하여 인증서 스토리지 필수 구성 요소를 설정하기 위한 단계별 지침을 제공합니다. PKCS#11 API를 사용하여 인증서를 관리하는 방법에 대한 자세한 내용은 인증서 스토리지에 대한 PKCS#11 API를 참조하세요.

Prerequisites

Azure Cloud HSM을 사용하여 인증서 스토리지를 지원하려면 다음 필수 구성 요소가 필요합니다. HSM 배포가 완료되지 않은 경우 SDK 설치 및 구성에 대한 Azure Cloud HSM 온보딩 가이드를 참조하세요.

시스템 요구 사항

  • Azure 클라우드 HSM 리소스가 배포, 초기화 및 구성됩니다.
  • Azure Cloud HSM 클라이언트 SDK
  • 애플리케이션 서버에서 파티션 소유자 인증서 "PO.crt"의 복사본입니다.
  • HSM의 hsm1.chsm-<resource-name>-<unique-string>.privatelink.cloudhsm.azure.net에 해당하는 알려진 주소입니다.
  • Crypto 사용자 자격 증명에 대한 지식

인증서 스토리지 필수 구성 요소

  • Azure Blob Storage 계정
  • 스토리지에 액세스하는 관리 ID

중요합니다

모든 버전의 Windows Server 사용하는 고객은 최신 버전의 Visual C++ 재배포 가능 패키지를 설치해야 합니다.

Azure Blob Storage 계정 설정

인증서 스토리지에 PKCS#11 API를 사용하려면 먼저 Azure Blob Storage 계정을 만들어야 합니다. 이 스토리지 계정에는 JWS 형식으로 저장되고 검색되는 PKCS#11 인증서 개체가 있습니다.

  1. PKCS#11 인증서 스토리지에 대한 Azure Blob Storage 계정을 설정하려면 Azure 포털로 이동하여 새 Storage 계정을 만듭니다.

  2. 스토리지 계정을 만든 후 Azure 포털에서 스토리지 계정으로 이동하여 데이터 스토리지에서 컨테이너를 선택합니다. Blob을 저장할 새 컨테이너를 만듭니다.

    Azure Blob Storage에서 컨테이너를 생성하는 스크린샷.

  3. 컨테이너를 만든 후 컨테이너 속성으로 이동하여 컨테이너 엔드포인트 URL을 찾 습니다. 이 URL은 나중에 필요합니다.

    Azure Blob Storage에서 컨테이너 속성을 찾는 스크린샷.

  4. 컨테이너 속성에서 나열된 컨테이너 URL을 찾습니다. 이 URL은 azcloudhsm_application.cfg 파일의 뒷부분에서 PKCS#11 애플리케이션이 인증서 개체의 스토리지 위치를 찾을 수 있도록 하는 데 필요합니다.

    Azure Blob Storage 속성에서 컨테이너 URL의 스크린샷.

스토리지에 액세스하도록 사용자 할당 관리 ID 설정

인증서 스토리지의 다음 필수 구성 요소는 사용자 할당 관리 ID를 만드는 것입니다. 이 ID는 Azure Blob Storage 계정에 액세스하는 데 필요한 역할을 부여하며 지정된 관리자 VM에서 인증하는 데 사용됩니다.

비고

다음 예제에서는 사용자 할당 관리 ID를 만들고 사용합니다. VM에서 시스템 할당 관리 ID를 만들고 사용할 수도 있습니다.

  1. PKCS#11 인증서 스토리지에 대한 사용자 할당 관리 ID를 만들려면 Azure 포털로 이동하여 새 ID를 만듭니다.

  2. 관리 ID를 성공적으로 만든 후 VM에서 스토리지 계정에 대한 인증을 사용하도록 설정하려면 azcloudhsm_application.cfg 파일의 뒷부분에서 필요한 클라이언트 ID를 기록해 둡니다.

    Azure 포털에서 관리 ID 클라이언트 ID의 스크린샷입니다.

  3. 관리 ID에 이전에 만든 Blob Storage 계정을 읽고 쓸 수 있는 권한을 부여할 적절한 Azure 역할을 할당합니다. 관리 ID에 Storage Blob 데이터 기여자 역할을 할당하고, 범위를스토리지 로 설정하고, 특정 스토리지 계정 리소스를 선택합니다.

    Azure 포털에서 Storage Blob 데이터 기여자 역할을 할당하는 스크린샷.

    Storage Blob 데이터 기여자 역할에 대한 범위를 설정하는 스크린샷

  4. PKCS#11 인증서 스토리지 애플리케이션을 실행하는 VM에 사용자 할당 관리 ID 를 할당합니다. Azure 포털에서 VM 리소스로 이동하고, 보안 섹션을 선택하고, ID를 선택하고, 사용자 할당 ID를 추가합니다.

    Azure 포털에서 VM에 사용자 할당 관리 ID를 추가하는 스크린샷입니다.

    Azure 포털에서 VM 아이덴티티 설정 스크린샷.

Azure Cloud HSM 클라이언트 도구 구성

스토리지 서명 키 만들기

다음 azcloudhsm_util 명령을 사용하여 한 단계에서 PKCS#11 인증서 스토리지에 대한 RSA 서명 키 쌍을 만듭니다. 기본적으로 공용 지수가 65537인 2048비트 RSA 키를 생성합니다. 필요에 따라 키 크기를 수정할 수 있습니다. 명령을 실행하기 전에 azcloudhsm_client가 백그라운드에서 서비스로 실행 중인지 확인합니다.

자리 표시자를 다음과 같이 바꿉니다.

  • PKCS11_S 암호화 사용자의 사용자 이름(예: cu1)을 사용하여
  • PKCS11_P 암호화 사용자 암호 사용(예: user1234)
  • SIGNING_KEY_ID 원하는 키 쌍 ID로(이 ID는 나중에 azcloudhsm_application.cfg 파일에서도 사용됩니다)

이 예제의 임의 값으로 설정합니다 SIGNING_KEY_ID .

SIGNING_KEY_ID=$(tr -dc 'a-z' </dev/urandom | head -c 10)

Linux:

sudo ./azcloudhsm_util singlecmd loginHSM -u CU -s $PKCS11_S -p $PKCS11_P genRSAKeyPair -m 2048 -e 65537 -l $SIGNING_KEY_ID -id $SIGNING_KEY_ID

Windows:

.\azcloudhsm_util.exe singlecmd loginHSM -u CU -s %PKCS11_S% -p %PKCS11_P% genRSAKeyPair -m 2048 -e 65537 -l %SIGNING_KEY_ID% -id %SIGNING_KEY_ID%

중요합니다

각 HSM 노드가 성공을 반환하는지 확인합니다.

chsmVMAdmin@AdminVM:/opt/azurecloudhsm/bin$ sudo ./azcloudhsm_util singlecmd loginHSM -u CU -s cu1 -p user1234 genRSAKeyPair -m 2048 -e 65537 -l signkeyid -id signkeyid
Version info, Client Version: <version>, SDK API Version: <version>, SDK Package Version: <version>

Cfm3Initialize() returned app id : 01000000

    session_handle 1000000

    Current FIPS mode is: 00000000

Cfm3LoginHSM returned: 0x00 : HSM Return: SUCCESS

Cluster Status:
Node id 1 status: 0x00000000 : HSM Return: SUCCESS
Node id 2 status: 0x00000000 : HSM Return: SUCCESS
Node id 3 status: 0x00000000 : HSM Return: SUCCESS
Command: genRSAKeyPair -m 2048 -e 65537 -L signkeyid -id signkeyid

Cfm3GenerateKeyPair returned: 0x00 : HSM Return: SUCCESS

Cfm3GenerateKeyPair:    public key handle: 262151    private key handle: 262152

Cluster Status:
Node id 1 status: 0x00000000 : HSM Return: SUCCESS
Node id 2 status: 0x00000000 : HSM Return: SUCCESS
Node id 3 status: 0x00000000 : HSM Return: SUCCESS

구성 파일 업데이트

애플리케이션 구성 업데이트

azcloudhsm_application.cfg 파일에서 다음 매개 변수를 업데이트해야 합니다.

CERTSTORAGE_URL: 이 필드는 고객의 Blob Storage 계정 내에서 컨테이너의 URL을 참조하며 인증서 정보를 저장하는 데 사용됩니다. (예: https://chsmstorage.blob.core.windows.net/certificates)

CERTSTORAGE_SIGNING_KEYID: 이 필드는 키 쌍에 할당된 ID를 참조하며, 읽기 및 쓰기 작업 중에 스토리지에 대한 무결성 검사를 수행하는 데 사용됩니다(서명 및 확인).

UAMI_CLIENT_ID: 이 필드는 고객의 Blob Storage 계정에 인증하는 데 사용되는 사용자 할당 관리 ID의 클라이언트 ID를 나타냅니다. 비워 두면 인증은 기본적으로 시스템 할당 관리 ID를 사용합니다.

비고

이러한 매개 변수는 PKCS#11에서 인증서 작업을 실행하는 경우에만 적용됩니다. 키 작업에는 필요하지 않습니다.

DAEMON_ID=1  
SOCKET_TYPE=UNIXSOCKET  
PORT=1111  
USER_KEK_HANDLE=262150  
DEFAULT_WRAP_WITH_TRUSTED=1  
CERTSTORAGE_URL=https://chsmstorage.blob.core.windows.net/certificates  
CERTSTORAGE_SIGNING_KEYID=hjgrwvvofe  
UAMI_CLIENT_ID=25e659cc-6570-4f3b-9617-adfbc84b2565  

PKCS#11 구성 유효성 검사

PKCS#11 구성의 샘플 기반 유효성 검사는 PKCS#11 통합 가이드를 참조하세요.

chsmVMAdmin@AdminVM:/opt/azurecloudhsm$ sudo ./cust_p11_app -s cu1 -p user1234 -l /opt/azurecloudhsm/lib64/libazcloudhsm_pkcs11.so
[INFO] Azure Cloud HSM – Loading PKCS#11 library.
[INFO] Azure Cloud HSM – C_GetFunctionList
[INFO] Azure Cloud HSM – Preparing PIN with given username and password.
[INFO] Azure Cloud HSM – C_Initialize
[INFO] Azure Cloud HSM – C_GetInfo
[INFO] Azure Cloud HSM – Retrieve access token, C_GetTokenInfo
[INFO] Azure Cloud HSM – Start session with specified token, C_OpenSession
[INFO] Azure Cloud HSM – Login with PIN, C_Login
Add Your PKCS#11 Code Here

다음 단계