Azure Cloud HSM-Zertifikatspeicher

Azure Cloud HSM unterstützt den Zertifikatspeicher über PKCS#11, sodass Anwendungen X.509-Zertifikate zusammen mit Schlüsseln verwalten können. Dieses Lernprogramm enthält schrittweise Anleitungen zum Einrichten von Zertifikatspeichervoraussetzungen, einschließlich Azure Blob Storage und verwalteter Identitätskonfiguration. Ausführliche Informationen zur Verwendung von PKCS#11-APIs zum Verwalten von Zertifikaten finden Sie unter PKCS#11-API für den Zertifikatspeicher.

Voraussetzungen

Die folgenden Voraussetzungen sind erforderlich, um den Zertifikatspeicher mit Azure Cloud HSM zu unterstützen. Lesen Sie den Azure Cloud HSM-Onboardinghandbuch für die SDK-Installation und -Konfiguration, wenn die HSM-Bereitstellung nicht abgeschlossen ist.

Systemanforderungen

  • Azure Cloud HSM-Ressource wird bereitgestellt, initialisiert und konfiguriert.
  • Azure Cloud HSM Client SDK
  • Kopie des Partitionsbesitzerzertifikats "PO.crt" auf dem Anwendungsserver.
  • Bekannte Adresse Ihres HSM hsm1.chsm-<resource-name>-<unique-string>.privatelink.cloudhsm.azure.net.
  • Wissen über Krypto-Benutzeranmeldeinformationen

Voraussetzungen für die Zertifikatspeicherung

  • Azure Blob Storage Konto
  • Verwaltete Identität für den Zugriff auf Speicher

Von Bedeutung

Kunden, die eine beliebige Version von Windows Server verwenden, sollten die neueste Version von Visual C++ Redistributable installieren.

Einrichten eines Azure Blob Storage Kontos

Bevor Sie die PKCS#11-API für die Zertifikatspeicherung verwenden können, müssen Sie ein Azure Blob Storage Konto erstellen. Dieses Speicherkonto enthält die PKCS#11-Zertifikatobjekte, die im JWS-Format gespeichert und abgerufen werden.

  1. Um ein Azure Blob Storage Konto für PKCS#11-Zertifikatspeicher einzurichten, wechseln Sie zum Azure Portal, und erstellen Sie ein neues Speicherkonto.

  2. Nachdem das Speicherkonto erstellt wurde, wechseln Sie im Azure-Portal zu ihr, und wählen Sie "Container" unter "Datenspeicher" aus. Erstellen Sie einen neuen Container zum Speichern der Blobs.

    Screenshot zum Erstellen eines Containers in Azure Blob Storage.

  3. Suchen Sie nach dem Erstellen des Containers die Containerendpunkt-URL, indem Sie zu Containereigenschaften navigieren. Diese URL wird später benötigt.

    Screenshot zum Auffinden von Containereigenschaften in Azure Blob Storage.

  4. In containereigenschaften finden Sie die container-URL aufgelistet. Diese URL ist später in der Datei azcloudhsm_application.cfg erforderlich, damit PKCS#11-Anwendungen den Speicherort für Zertifikatobjekte suchen können.

    Screenshot der Container-URL in Azure Blob Storage properties.

Einrichten einer vom Benutzer zugewiesenen verwalteten Identität für den Zugriff auf den Speicher

Die nächste Voraussetzung für den Zertifikatspeicher besteht darin, eine vom Benutzer zugewiesene verwaltete Identität zu erstellen. Dieser Identität wird die benötigte Rolle für den Zugriff auf das Azure Blob Storage-Konto gewährt und sie wird verwendet, um von Ihrer angegebenen Administrator-VM authentifiziert zu werden.

Hinweis

Im folgenden Beispiel wird eine vom Benutzer zugewiesene verwaltete Identität erstellt und verwendet. Eine vom System zugewiesene verwaltete Identität kann auch auf dem virtuellen Computer erstellt und verwendet werden.

  1. Um eine User Assigned Managed Identity für PKCS#11-Zertifikatspeicher zu erstellen, navigieren Sie zum Azure Portal, und erstellen Sie eine neue Identität.

  2. Notieren Sie sich nach dem erfolgreichen Erstellen der verwalteten Identität die Client-ID, die später in der Datei azcloudhsm_application.cfg erforderlich ist, um die Authentifizierung für das Speicherkonto von Ihrer VM zu aktivieren.

    Screenshot der Client-ID der verwalteten Identität im Azure Portal.

  3. Weisen Sie die entsprechende Azure-Rolle zu, um der verwalteten Identität die Berechtigung zum Lesen und Schreiben auf das zuvor erstellte Blob Storage-Konto zu erteilen. Weisen Sie der verwalteten Identität die Rolle Storage Blob Data Contributor zu, legen Sie den Bereich auf Speicher fest, und wählen Sie die spezifische Ressource des Speicherkontos aus.

    Screenshot zum Zuweisen der Rolle

    Screenshot des Einstellungsbereichs für die Rolle

  4. Weisen Sie die vom Benutzer zugewiesene verwaltete Identität dem virtuellen Computer zu, auf dem Ihre PKCS#11-Zertifikatspeicheranwendung ausgeführt wird. Wechseln Sie im Azure Portal zu Ihrer VM-Ressource, wählen Sie den Abschnitt "Sicherheit" aus, wählen Sie "Identität" aus, und fügen Sie die vom Benutzer zugewiesene Identität hinzu.

    Screenshot zum Hinzufügen der vom Benutzer zugewiesenen verwalteten Identität zu vm im Azure portal.

    Screenshot der VM-Identitätseinstellungen im Azure portal.

Konfigurieren der Azure Cloud HSM-Clienttools

Erstellen eines Speichersignaturschlüssels

Verwenden Sie den folgenden azcloudhsm_util Befehl, um in einem einzigen Schritt ein RSA-Signaturschlüsselpaar für PKCS#11-Zertifikatspeicher zu erstellen. Standardmäßig wird ein 2048-Bit-RSA-Schlüssel mit einem öffentlichen Exponenten von 65537 generiert. Sie können die Schlüsselgröße nach Bedarf ändern. Stellen Sie vor dem Ausführen des Befehls sicher, dass azcloudhsm_client im Hintergrund als Dienst ausgeführt wird.

Ersetzen Sie die Platzhalter wie folgt:

  • PKCS11_S mit Ihrem Benutzernamen für die Kryptografie (z. B. cu1)
  • PKCS11_P mit Ihrem Kryptografiebenutzerkennwort (z. B user1234. )
  • SIGNING_KEY_ID mit der gewünschten Schlüsselpaar-ID (diese ID wird auch später in Ihrer azcloudhsm_application.cfg Datei verwendet)

Festlegen SIGNING_KEY_ID auf einen Zufallswert für dieses Beispiel:

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

Stellen Sie sicher, dass jeder HSM-Knoten Erfolg zurückgibt.

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

Aktualisieren von Konfigurationsdateien

Aktualisieren der Anwendungskonfiguration

Sie müssen die folgenden Parameter in der Datei azcloudhsm_application.cfg aktualisieren.

CERTSTORAGE_URL: Dieses Feld bezieht sich auf die URL des Containers im Blob Storage-Konto des Kunden und wird zum Speichern von Zertifikatinformationen verwendet. (z.B. https://chsmstorage.blob.core.windows.net/certificates)

CERTSTORAGE_SIGNING_KEYID: Dieses Feld bezieht sich auf die ID, die dem Schlüsselpaar zugewiesen ist, das verwendet wird, um Integritätsprüfungen während lese- und schreibvorgängen in den Speicher durchzuführen (Signieren und Überprüfung).

UAMI_CLIENT_ID: Dieses Feld bezieht sich auf die Client-ID der vom Benutzer zugewiesenen verwalteten Identität, die zum Authentifizieren des Blob Storage Kontos des Kunden verwendet wird. Wenn sie leer gelassen wird, verwendet die Authentifizierung standardmäßig eine vom System zugewiesene verwaltete Identität.

Hinweis

Diese Parameter gelten nur, wenn Zertifikatvorgänge in PKCS#11 ausgeführt werden. Es ist für Schlüsselvorgänge nicht erforderlich.

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  

Überprüfen der PKCS#11-Konfiguration

Eine beispielbasierte Überprüfung Ihrer PKCS#11-Konfiguration finden Sie im PKCS#11-Integrationshandbuch.

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

Nächste Schritte