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 Cloud HSM リソースがデプロイ、初期化、および構成されます。
  • Azure Cloud HSM クライアント SDK
  • アプリケーション サーバー上のパーティション所有者証明書 "PO.crt" のコピー。
  • HSM hsm1.chsm-<resource-name>-<unique-string>.privatelink.cloudhsm.azure.net の既知のアドレス。
  • Crypto ユーザーの資格情報に関する知識

証明書ストレージの前提条件

  • Azure Blob Storage アカウント
  • ストレージにアクセスするためのマネージド ID

Von Bedeutung

任意のバージョンのWindows Serverを使用しているお客様は、最新バージョンの Visual C++ 再頒布可能パッケージをインストールする必要があります。

Azure Blob Storage アカウントを設定する

証明書ストレージに PKCS#11 API を使用する前に、Azure Blob Storage アカウントを作成する必要があります。 このストレージ アカウントには、JWS 形式で保存および取得される PKCS#11 証明書オブジェクトが保持されます。

  1. PKCS#11 証明書ストレージのAzure Blob Storage アカウントを設定するには、Azure ポータルに移動し、新しいストレージ アカウントを作成します。

  2. ストレージ アカウントが作成されたら、Azure ポータルでストレージ アカウントに移動し、[データ ストレージ] の下にある [コンテナー] を選択します。 BLOB を格納する新しいコンテナーを作成します。

    Azure Blob Storage でコンテナーを作成する際のスクリーンショット。

  3. コンテナーを作成した後、コンテナープロパティに移動して、コンテナーエンドポイントのURLを見つけます。 この URL は後で必要になります。

    Azure Blob Storage のコンテナーのプロパティを見つける画面のスクリーンショット。

  4. [コンテナーのプロパティ] で、コンテナーの URL が一覧表示されます。 この URL は、PKCS#11 アプリケーションが証明書オブジェクトのストレージの場所を特定できるようにするために、azcloudhsm_application.cfg ファイルの後半で必要になります。

    Azure Blob Storage プロパティ内のコンテナー URL のスクリーンショット

ストレージにアクセスするためのユーザー割り当てマネージド ID を設定する

証明書ストレージの次の前提条件は、 ユーザー割り当てマネージド ID を作成することです。 この ID には、Azure Blob Storage アカウントにアクセスするために必要なロールが付与され、指定された管理者 VM からの認証に使用されます。

次の例では、ユーザー割り当てマネージド ID を作成して使用します。 VM でシステム割り当てマネージド ID を作成して使用することもできます。

  1. PKCS#11 証明書ストレージの User Assigned Managed Identity を作成するには、Azure ポータルに移動し、新しい ID を作成します。

  2. マネージド ID が正常に作成されたら、 クライアント ID を書き留めておきます。これは、後で vm からストレージ アカウントへの認証を有効にするために、azcloudhsm_application.cfg ファイルで必要になります。

    Azure ポータルにおけるマネージド ID クライアント ID のスクリーンショット

  3. 適切なAzure ロールを割り当てて、以前に作成したBlob Storage アカウントの読み取りと書き込みのアクセス許可をマネージド ID に付与します。 ストレージ BLOB データ共同作成者ロールをマネージド ID に割り当て、スコープストレージに設定し、特定のストレージ アカウント リソースを選択します。

    ストレージ BLOB データ共同作成者ロールを Azure ポータルで割り当てるためのスクリーンショット

    ストレージ BLOB データ共同作成者ロールのスコープの設定のスクリーンショット。

  4. PKCS#11 証明書ストレージ アプリケーションを実行する VM に ユーザー割り当てマネージド ID を割り当 てます。 Azure ポータルで VM リソースに移動し、[セキュリティ] セクションを選択し、[ID] を選択して、ユーザー割り当て ID を追加します。

    Azure ポータルで VM にユーザー割り当てマネージド ID を追加するスクリーンショット

    Azure ポータルでの VM の ID 設定のスクリーンショット

Azure Cloud HSM クライアント ツールを構成する

ストレージ署名キーを作成する

次の azcloudhsm_util コマンドを使用して、PKCS#11 証明書ストレージの RSA 署名キー ペアを 1 つの手順で作成します。 既定では、公開指数が 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%

Von Bedeutung

各 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: このフィールドは、ユーザー割り当てマネージド ID のクライアント ID を参照します。これは、顧客の Blob Storage アカウントに対する認証に使用されます。 空白のままにすると、認証は既定でシステム割り当てマネージド 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

次のステップ