Behandeln von Problemen mit Erweiterungszertifikaten auf einem virtuellen Windows-Computer in Azure
Gilt für: ✔️ Windows-VMs
In diesem Artikel wird erläutert, wie Sie Probleme identifizieren und beheben können, die Zertifikate auf einem virtuellen Windows-Computer (VM) umfassen, der eine Erweiterung verwendet. In der Regel beziehen sich diese Probleme auf kryptografische Vorgänge oder das Zertifikat selbst.
Checkliste zur Problembehandlung
Anzeigen der Gastprotokolle
Um Details zu einem Fehler zu erhalten, überprüfen Sie die Gastprotokolle. Die nützlichsten Protokolle auf der Windows-VM zur Problembehandlung von Erweiterungszertifikatfehlern finden Sie in der folgenden Tabelle.
Log | Beschreibung |
---|---|
Die Protokolldatei "C:\WindowsAzure\Logs\WaAppAgent.log " | Das Gast-Agent-Protokoll. Beschreibt die Vorgänge der Erweiterung (z. B. Herunterladen, Installieren, Aktivieren und Deaktivieren) und deren Ergebnisse. |
Protokolldateien im Ordner "C:\WindowsAzure\Logs\Plugins\<ExtensionName> " | Verschiedene Protokolle, die die Vorgänge einer bestimmten Erweiterung widerspiegeln. Jede Erweiterung verfügt über eigene Features, aber die meisten Erweiterungen verfügen über einen Standardsatz von Protokolldateien, einschließlich CommandExecution.log, CommandExecution_Timestamp>.log, CustomScriptHandler.log und IaaSBcdrExtension<Number>.log.< |
Notiz
Diese Tabelle enthält nur die wichtigsten Protokolldateien. Es handelt sich nicht um eine umfassende Liste.
Alternativ können Sie das CollectGuestLogs.exe Tool ausführen, um alle Gastprotokolle in einer .zip Archivdatei zu sammeln. Das tool CollectGuestLogs.exe befindet sich auf der Windows-VM in einem der folgenden Verzeichnisse:
- C:\WindowsAzure\Packages
- C:\WindowsAzure\GuestAgent_<VersionNumber>_<Timestamp>
Symptome
In der folgenden Liste werden die häufigsten Fehler beschrieben, die auftreten können, wenn Sie eine Erweiterung auf einer Windows-VM verwenden:
FailedToDecryptProtectedSettings
Ausnahme: Das Transportzertifikat, das zum Entschlüsseln der geschützten Einstellungen der Erweiterung verwendet wird, fehlt von der VM.Notiz
Eine Variante der
FailedToDecryptProtectedSettings
Ausnahme bewirkt, dass falsche Berechtigungen für den Ordner Crypto\RSA\MachineKeys festgelegt werden. In diesem Szenario wird eine der folgenden Fehlermeldungen angezeigt:System.Security.Cryptography.CryptographicException: Keyset does not exist at System.Security.Cryptography.Pkcs.EnvelopedCms.DecryptContent(RecipientInfoCollection recipientInfos, X509Certificate2Collection extraStore) at Microsoft.Azure.Plugins.Diagnostics.dll.PluginConfigurationSettingsProvider.DecryptPrivateConfig(String encryptedConfig)
Failed to decode, decrypt, and deserialize the protected settings string. Error Message: Keyset does not exist"
Decrypting Protected Settings - Invalid provider type specified
[ERROR] Failed to get TransportCertificate. Error: Microsoft.WindowsAzure.GuestAgent.CertificateManager.CryptographyNative+PInvokeException: Self-signed Certificate Generation failed. Error Code: -2146893808.
Fehlermeldung "Das Zertifikat kann nicht abgerufen werden".
CryptographicException
Ausnahme in den VM-Diagnoseeinstellungen, begleitet von der Meldung "Die Nachricht mit umschlägen Daten enthält nicht den angegebenen Empfänger." Der folgende Text beschreibt ein Beispiel für diese Ausnahme:DiagnosticsPluginLauncher.exe Information: 0 : [6/29/2020 1:32:20 PM] Decrypting private configuration DiagnosticsPluginLauncher.exe Warning: 0 : [6/29/2020 1:32:20 PM] No certficate with given thumbprint found in the certificate store. Thumbprint:34C8CDC747693E0E33A9648703E3990EC4F2C484 DiagnosticsPluginLauncher.exe Information: 0 : [6/29/2020 1:32:20 PM] Retrying after 30 seconds. Retry attempt 1 DiagnosticsPluginLauncher.exe Warning: 0 : [6/29/2020 1:32:50 PM] No certficate with given thumbprint found in the certificate store. Thumbprint:34C8CDC747693E0E33A9648703E3990EC4F2C484 DiagnosticsPluginLauncher.exe Information: 0 : [6/29/2020 1:32:50 PM] Retrying after 30 seconds. Retry attempt 2 DiagnosticsPluginLauncher.exe Warning: 0 : [6/29/2020 1:33:20 PM] No certficate with given thumbprint found in the certificate store. Thumbprint:34C8CDC747693E0E33A9648703E3990EC4F2C484 DiagnosticsPluginLauncher.exe Information: 0 : [6/29/2020 1:33:20 PM] Retrying after 30 seconds. Retry attempt 3 DiagnosticsPluginLauncher.exe Error: 0 : [6/29/2020 1:33:50 PM] System.Security.Cryptography.CryptographicException: The enveloped-data message does not contain the specified recipient. at System.Security.Cryptography.Pkcs.EnvelopedCms.DecryptContent(RecipientInfoCollection recipientInfos, X509Certificate2Collection extraStore) at Microsoft.Azure.Plugins.Diagnostics.dll.PluginConfigurationSettingsProvider.DecryptPrivateConfig(String encryptedConfig)
Ein neues Zertifikat, das an die VM übertragen wird, beeinträchtigt aber andere Vorgänge.
Ursache: Änderungen von Workflow- und Abhängigkeitscode
Das Problem wird in erster Linie durch eine Änderung der Azure-Plattform verursacht, die um Mai 2020 implementiert wurde. Die Änderung bestand in der Verbesserung des Workflows der VM-Erweiterungen und der Beseitigung einiger Abhängigkeiten von anderen Azure-Komponenten. Es erfordert, dass Erweiterungen, benutzerdefinierte Ressourcenanbieter (CRPs) und der Gast-Agent gemeinsam funktionieren. Kleinere Fehler haben sekundäre Probleme verursacht, die sich in den Zertifikatproblemen der Erweiterung widerspiegeln.
Lösung 1: Aktualisieren des Erweiterungszertifikats
Führen Sie die folgenden Schritte aus, um ein Zertifikat zu aktualisieren, das zusammen mit einer Erweiterung erfolgreich verwendet werden kann:
Überprüfen Sie, ob das Zertifikat des Windows Azure CRP-Zertifikatsgenerators im Zertifikat-Snap-In der Microsoft Management Console enthalten ist. Befolgen Sie dazu die Anweisungen in mehreren Zertifikaten auf einer Azure IaaS-VM, die Erweiterungen verwendet, um die Symptome der Windows-VM zu finden.
Löschen Sie dieses Zertifikat. Wählen Sie dazu das Zertifikat des Windows Azure CRP-Zertifikatgenerators und dann das Symbol "Löschen " aus.
Notiz
Wenn das Zertifikat des Windows Azure CRP-Zertifikatsgenerators erforderlich ist, erstellt der virtuelle Computer das Zertifikat erneut, wenn es fehlt.
Lösen Sie einen neuen Zielstatus für den Gast-Agent aus, indem Sie eine der folgenden Optionen anwenden:
Führen Sie das folgende PowerShell-Skript aus, das die Befehle "Get-AzureRmVM" und "Update-AzureRmVM " enthält:
$rg = "<name-of-the-resource-group-containing-the-virtual-machine>" $vmName = "<name-of-the-virtual-machine>" $vm = Get-AzureRmVM -ResourceGroupName $rg -Name $vmName Update-AzureRmVM -ResourceGroupName $rg -VM $vm
Führen Sie einen Vorgang "erneut anwenden" auf Ihrem virtuellen Computer aus, indem Sie den Anweisungen im Abschnitt "Lösung" des virtuellen Computers folgen, der in einem fehlerhaften Statusartikel hängen geblieben ist.
Wiederholen Sie den Erweiterungsvorgang.
Wenn das Problem durch das Zertifikatupdate nicht behoben wurde, beenden sie den virtuellen Computer, oder führen Sie eine Zuordnung durch, und starten Sie dann den virtuellen Computer erneut.
Lösung 2: Beheben der Zugriffssteuerungsliste (Access Control List, ACL) in den Ordnern MachineKeys oder SystemKeys
Korrigieren Sie im Ordner "Crypto\RSA\MachineKeys" die Zugriffssteuerungsliste (Access Control List, ACL), sodass die richtigen Berechtigungen angewendet werden.
Führen Sie in einer Administrativen PowerShell-Konsole die folgenden Befehle aus, um den eindeutigen Schlüsselcontainernamen des Mandantenzertifikats abzurufen. Stellen Sie sicher, dass Sie eine der
$certName
Definitionen auskommentieren, je nachdem, ob Sie eine klassische RedDog Front End -VM (RDFE) verwenden (für die der Zertifikatname lautetWindows Azure Service Management for Extensions
) oder eine Azure Resource Manager-VM (für die der Zertifikatname lautetWindows Azure CRP Certificate Generator
):# Comment out one of the following certificate name definitions. $certName = "Windows Azure Service Management for Extensions" # Classic RDFE VM $certName = "Windows Azure CRP Certificate Generator" # Azure Resource Manager VM $fileName = (Get-ChildItem Cert:\LocalMachine\My | Where-Object {$_.Subject -eq 'DC=$certName'} ).PrivateKey.CspKeyContainerInfo.UniqueKeyContainerName
Erstellen Sie eine Sicherung der ACL, indem Sie den Befehl "icacls " ausführen:
icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /save machinekeys_permissions_before.aclfile /t
Führen Sie die folgenden
icacls
Befehle aus, um die MachineKeys-Berechtigungen zu korrigieren:icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\$fileName /grant SYSTEM:(F) icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\$fileName /grant Administrators:(RX)
Führen Sie
icacls
den Vorgang erneut aus, um die aktualisierten MachineKeys ACLs an eine Textdatei umzuleiten:icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t > machinekeys_permissions_after.txt
Zeigen Sie die machinekeys_permissions_after.txt Datei in einem Text-Editor an, um zu überprüfen, ob die Berechtigungsänderungen erwartungsgemäß angezeigt werden.
Versuchen Sie die Erweiterung erneut, oder starten Sie die Gast-Agent-Dienste neu, indem Sie das tool WaAppAgent.exe oder WindowsAzureGuestAgent.exe ausführen.
Wenn diese Prozedur nicht funktioniert, können Sie versuchen, die icacls
Befehle erneut auszuführen (Schritte 2-4) im Ordner "C:\ProgramData\Microsoft\Crypto\SystemKeys\*" anstelle des Ordners "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\$fileName ".
Weitere Informationen
Kontaktieren Sie uns für Hilfe
Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.