Dela via


Felsöka problem med tilläggscertifikat på en virtuell Windows-dator i Azure

Gäller för: ✔️ Virtuella Windows-datorer

I den här artikeln beskrivs hur du identifierar och åtgärdar problem som rör certifikat på en virtuell Windows-dator (VM) som använder ett tillägg. Dessa problem är vanligtvis relaterade till kryptografiska åtgärder eller själva certifikatet.

Checklista för felsökning

Visa gästloggarna

Om du vill få information om ett fel kontrollerar du gästloggarna. De mest användbara loggarna på den virtuella Windows-datorn för felsökning av tilläggscertifikatfel visas i följande tabell.

Loggas Beskrivning
Loggfilen C:\WindowsAzure\Logs\WaAppAgent.log Gästagentloggen. Beskriver tilläggets åtgärder (till exempel att ladda ned, installera, aktivera och inaktivera) och deras resultat.
Loggfiler i mappen C:\WindowsAzure\Logs\Plugins\<ExtensionName> Olika loggar som återspeglar åtgärderna för ett visst tillägg. Varje tillägg har sina egna funktioner, men de flesta tillägg har en standarduppsättning loggfiler, inklusive CommandExecution.log, CommandExecution_Timestamp>.log, CustomScriptHandler.log och IaaSBcdrExtension<Number>.log.<

Kommentar

Den här tabellen innehåller bara de mest anmärkningsvärda loggfilerna. Det är inte en omfattande lista.

Du kan också köra verktyget CollectGuestLogs.exe för att samla in alla gästloggar i en .zip arkivfil. Verktyget CollectGuestLogs.exe finns på den virtuella Windows-datorn i någon av följande kataloger:

  • C:\WindowsAzure\Packages
  • C:\WindowsAzure\GuestAgent_<VersionNumber>_<Timestamp>

Symptom

I följande lista beskrivs de vanligaste felen som kan uppstå när du använder ett tillägg på en virtuell Windows-dator:

  • FailedToDecryptProtectedSettings undantag: Det transportcertifikat som används för att dekryptera de skyddade inställningarna för tillägget saknas från den virtuella datorn.

    Kommentar

    En variant av FailedToDecryptProtectedSettings undantaget gör att felaktiga behörigheter anges i mappen Crypto\RSA\MachineKeys . I det här scenariot visas ett av följande felmeddelanden:

    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.
    
  • Felmeddelandet "Det gick inte att hämta certifikatet".

  • CryptographicException undantag i diagnostikinställningarna för den virtuella datorn, tillsammans med meddelandet "Meddelandet enveloped-data innehåller inte den angivna mottagaren". Följande text beskriver ett exempel på det här undantaget:

    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)
    
  • Ett nytt certifikat som skickas till den virtuella datorn, men som stör andra åtgärder.

Orsak: Ändringar av arbetsflödes- och beroendekod

Problemet beror främst på en ändring i Azure-plattformen som implementerades runt maj 2020. Ändringen var att förbättra arbetsflödet för VM-tilläggen och eliminera vissa beroenden för andra Azure-komponenter. Det kräver att tillägg, anpassade resursproviders (CRP: er) och gästagenten fungerar kollektivt. Mindre buggar har orsakat sekundära problem som återspeglas i tilläggscertifikatproblemen.

Lösning 1: Uppdatera tilläggscertifikatet

Följ dessa steg för att uppdatera till ett certifikat som kan användas tillsammans med ett tillägg:

  1. Kontrollera om Certifikatgeneratorcertifikatet för Windows Azure CRP ingår i snapin-modulen Certifikat i Microsoft Management Console. Det gör du genom att följa anvisningarna i Flera certifikat på en virtuell Azure IaaS-dator som använder tillägg för att hitta de virtuella Windows-datorsymptomen .

  2. Ta bort certifikatet. Det gör du genom att välja Certifikatgeneratorcertifikatet för Windows Azure CRP och sedan ikonen Ta bort.

    Kommentar

    När Certifikatgeneratorcertifikatet för Windows Azure CRP behövs skapar den virtuella datorn certifikatet igen om det saknas.

  3. Utlös ett nytt måltillstånd för gästagenten genom att använda något av följande alternativ:

    • Kör följande PowerShell-kommandon:

      $rg = "<name-of-the-resource-group-containing-the-virtual-machine>"
      $vmName = "<name-of-the-virtual-machine>"
      $vm = Get-AzVM -ResourceGroupName $rg -Name $vmName  
      Update-AzVM -ResourceGroupName $rg -VM $vm
      
    • Utför en "reapply"-åtgärd på den virtuella datorn genom att följa anvisningarna i avsnittet "Lösning" på den virtuella datorn som fastnat i ett feltillstånd .

  4. Försök utföra tilläggsåtgärden igen.

Om certifikatuppdateringen inte åtgärdade problemet stoppar eller frigör du den virtuella datorn och startar sedan den virtuella datorn igen.

Lösning 2: Åtgärda åtkomstkontrollistan (ACL) i mapparna MachineKeys eller SystemKeys

I mappen Crypto\RSA\MachineKeys korrigerar du åtkomstkontrollistan (ACL) så att rätt behörigheter tillämpas.

  1. I en administrativ PowerShell-konsol kör du följande kommandon för att hämta det unika nyckelcontainernamnet för klientcertifikatet. Se till att du kommenterar ut en av $certName definitionerna, beroende på om du använder en klassisk virtuell RedDog Front End-dator (RDFE) (för vilken certifikatnamnet är Windows Azure Service Management for Extensions) eller en virtuell Azure Resource Manager-dator (för vilken certifikatnamnet är Windows 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
    
  2. Gör en säkerhetskopia av ACL genom att köra icacls-kommandot :

    icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /save machinekeys_permissions_before.aclfile /t
    
  3. Kör följande icacls kommandon för att korrigera MachineKeys-behörigheterna :

    icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\$fileName /grant SYSTEM:(F)
    icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\$fileName /grant Administrators:(RX)
    
  4. Kör icacls igen för att omdirigera uppdaterade MachineKeys-ACL :er till en textfil:

    icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t > machinekeys_permissions_after.txt
    
  5. Visa filen machinekeys_permissions_after.txt i en textredigerare för att kontrollera att behörighetsändringarna visas som förväntat.

  6. Försök med tillägget igen eller försök att starta om gästagenttjänsterna genom att köra verktyget WaAppAgent.exe eller WindowsAzureGuestAgent.exe .

Om den här proceduren inte fungerar kan du försöka köra icacls kommandona igen (steg 2–4) på mapparna C:\ProgramData\Microsoft\Crypto\SystemKeys\* i stället för mappen C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\$fileName .

Mer information

Kontakta oss för att få hjälp

Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.