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 証明書オブジェクトが保持されます。
PKCS#11 証明書ストレージのAzure Blob Storage アカウントを設定するには、Azure ポータルに移動し、新しいストレージ アカウントを作成します。
ストレージ アカウントが作成されたら、Azure ポータルでストレージ アカウントに移動し、[データ ストレージ] の下にある [コンテナー] を選択します。 BLOB を格納する新しいコンテナーを作成します。
コンテナーを作成した後、コンテナープロパティに移動して、コンテナーエンドポイントのURLを見つけます。 この URL は後で必要になります。
Azure Blob Storage のコンテナーのプロパティを見つける画面のスクリーンショット。 [コンテナーのプロパティ] で、コンテナーの URL が一覧表示されます。 この URL は、PKCS#11 アプリケーションが証明書オブジェクトのストレージの場所を特定できるようにするために、azcloudhsm_application.cfg ファイルの後半で必要になります。
Azure Blob Storage プロパティ内のコンテナー URL のスクリーンショット
ストレージにアクセスするためのユーザー割り当てマネージド ID を設定する
証明書ストレージの次の前提条件は、 ユーザー割り当てマネージド ID を作成することです。 この ID には、Azure Blob Storage アカウントにアクセスするために必要なロールが付与され、指定された管理者 VM からの認証に使用されます。
注
次の例では、ユーザー割り当てマネージド ID を作成して使用します。 VM でシステム割り当てマネージド ID を作成して使用することもできます。
PKCS#11 証明書ストレージの User Assigned Managed Identity を作成するには、Azure ポータルに移動し、新しい ID を作成します。
マネージド ID が正常に作成されたら、 クライアント ID を書き留めておきます。これは、後で vm からストレージ アカウントへの認証を有効にするために、azcloudhsm_application.cfg ファイルで必要になります。
適切なAzure ロールを割り当てて、以前に作成したBlob Storage アカウントの読み取りと書き込みのアクセス許可をマネージド ID に付与します。 ストレージ BLOB データ共同作成者ロールをマネージド ID に割り当て、スコープをストレージに設定し、特定のストレージ アカウント リソースを選択します。
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
次のステップ
- PKCS#11 API for Certificate Storage: PKCS#11 API を使用して、Azure Cloud HSM で X.509 証明書を管理する方法について説明します。
- Azure Cloud HSM の概要
Azure Cloud HSM