Rozwiązywanie problemów z certyfikatem rozszerzenia na maszynie wirtualnej z systemem Windows na platformie Azure
Dotyczy: ✔️ maszyny wirtualne z systemem Windows
W tym artykule omówiono sposób identyfikowania i rozwiązywania problemów obejmujących certyfikaty na maszynie wirtualnej z systemem Windows korzystającej z rozszerzenia. Zazwyczaj te problemy są związane z operacjami kryptograficznymi lub samym certyfikatem.
Lista kontrolna rozwiązywania problemów
Wyświetlanie dzienników gościa
Aby uzyskać szczegółowe informacje o błędzie, sprawdź dzienniki gościa. W poniższej tabeli przedstawiono najbardziej przydatne dzienniki na maszynie wirtualnej z systemem Windows na potrzeby rozwiązywania problemów z błędami certyfikatu rozszerzenia.
Dziennik | opis |
---|---|
Plik dziennika C:\WindowsAzure\Logs\WaAppAgent.log | Dziennik agenta gościa. Opisuje operacje rozszerzenia (takie jak pobieranie, instalowanie, włączanie i wyłączanie) oraz ich wyniki. |
Pliki dziennika w folderze C:\WindowsAzure\Logs\Plugins\<ExtensionName> | Różne dzienniki odzwierciedlające operacje określonego rozszerzenia. Każde rozszerzenie ma własne funkcje, ale większość rozszerzeń ma standardowy zestaw plików dziennika, w tym CommandExecution.log, CommandExecution_Timestamp>.log, CustomScriptHandler.log i IaaSBcdrExtension< Number>.log.< |
Uwaga 16.
Ta tabela zawiera tylko najbardziej godne uwagi pliki dziennika. Nie jest to pełna lista.
Alternatywnie możesz uruchomić narzędzie CollectGuestLogs.exe , aby zebrać wszystkie dzienniki gościa w pliku archiwum .zip . Narzędzie CollectGuestLogs.exe znajduje się na maszynie wirtualnej z systemem Windows w jednym z następujących katalogów:
- C:\WindowsAzure\Packages
- C:\WindowsAzure\GuestAgent_<VersionNumber>_<Timestamp>
Symptomy
Poniższa lista zawiera najbardziej typowe błędy, które mogą wystąpić podczas korzystania z rozszerzenia na maszynie wirtualnej z systemem Windows:
FailedToDecryptProtectedSettings
wyjątek: brak certyfikatu transportu używanego do odszyfrowywania chronionych ustawień rozszerzenia z maszyny wirtualnej.Uwaga 16.
Wariant wyjątku
FailedToDecryptProtectedSettings
powoduje ustawienie nieprawidłowych uprawnień w folderze Crypto\RSA\MachineKeys . W tym scenariuszu zostanie wyświetlony jeden z następujących komunikatów o błędach: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.
Komunikat o błędzie "Nie można pobrać certyfikatu".
CryptographicException
wyjątek w ustawieniach diagnostyki maszyny wirtualnej, wraz z komunikatem "Wiadomość o kopertach danych nie zawiera określonego adresata". W poniższym tekście opisano przykład tego wyjątku: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)
Nowy certyfikat, który jest wypychany do maszyny wirtualnej, ale zakłóca inne operacje.
Przyczyna: Zmiany kodu przepływu pracy i zależności
Problem jest spowodowany głównie zmianą platformy Azure, która została wdrożona około maja 2020 r. Zmiana polegała na ulepszeniu przepływu pracy rozszerzeń maszyn wirtualnych i wyeliminowaniu niektórych zależności od innych składników platformy Azure. Wymaga to, aby rozszerzenia, niestandardowe dostawcy zasobów (CSP) i agent gościa działały zbiorczo. Drobne błędy spowodowały problemy pomocnicze, które zostały odzwierciedlone w problemach z certyfikatem rozszerzenia.
Rozwiązanie 1. Aktualizowanie certyfikatu rozszerzenia
Wykonaj następujące kroki, aby zaktualizować certyfikat, który może być pomyślnie używany wraz z rozszerzeniem:
Sprawdź, czy certyfikat generatora certyfikatów CRP platformy Windows Azure jest uwzględniony w przystawce Certyfikaty konsoli zarządzania firmy Microsoft. W tym celu postępuj zgodnie z instrukcjami w temacie Wiele certyfikatów na maszynie wirtualnej IaaS platformy Azure, która używa rozszerzeń do znajdowania objawów maszyny wirtualnej z systemem Windows.
Usuń ten certyfikat. W tym celu wybierz certyfikat generatora certyfikatów CRP platformy Windows Azure, a następnie wybierz ikonę Usuń.
Uwaga 16.
Jeśli brakuje certyfikatu generatora certyfikatów CRP platformy Windows Azure, maszyna wirtualna ponownie utworzy certyfikat.
Wyzwól nowy stan celu agenta gościa, stosując jedną z następujących opcji:
Uruchom następujące polecenia programu PowerShell:
$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
Wykonaj operację "ponownie zastosuj" na maszynie wirtualnej, postępując zgodnie z instrukcjami w sekcji "Rozwiązanie" maszyny wirtualnej zablokowanej w stanie niepowodzenia.
Ponów próbę wykonania operacji rozszerzenia.
Jeśli aktualizacja certyfikatu nie rozwiązała problemu, zatrzymaj lub cofnij przydział maszyny wirtualnej, a następnie uruchom ponownie maszynę wirtualną.
Rozwiązanie 2. Naprawianie listy kontroli dostępu (ACL) w folderach MachineKeys lub SystemKeys
W folderze Crypto\RSA\MachineKeys napraw listę kontroli dostępu (ACL), aby były stosowane odpowiednie uprawnienia.
W administracyjnej konsoli programu PowerShell uruchom następujące polecenia, aby uzyskać unikatową nazwę kontenera klucza certyfikatu dzierżawy. Upewnij się, że oznaczysz jako komentarz jedną z
$certName
definicji, w zależności od tego, czy używasz klasycznej maszyny wirtualnej frontonu reddog (RDFE) (dla której nazwa certyfikatu toWindows Azure Service Management for Extensions
) lub maszyny wirtualnej usługi Azure Resource Manager (dla której nazwa certyfikatu toWindows 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
Utwórz kopię zapasową listy ACL, uruchamiając polecenie icacls :
icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /save machinekeys_permissions_before.aclfile /t
Uruchom następujące
icacls
polecenia, aby poprawić uprawnienia MachineKeys :icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\$fileName /grant SYSTEM:(F) icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\$fileName /grant Administrators:(RX)
Uruchom ponownie polecenie
icacls
, aby przekierować zaktualizowane listy ACL usługi MachineKeys do pliku tekstowego:icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t > machinekeys_permissions_after.txt
Wyświetl plik machinekeys_permissions_after.txt w edytorze tekstów, aby sprawdzić, czy zmiany uprawnień są wyświetlane zgodnie z oczekiwaniami.
Spróbuj ponownie uruchomić rozszerzenie lub spróbuj ponownie uruchomić usługi agenta gościa, uruchamiając narzędzie WaAppAgent.exe lub WindowsAzureGuestAgent.exe .
Jeśli ta procedura nie zadziała, możesz spróbować ponownie uruchomić icacls
polecenia (kroki 2–4) w folderze C:\ProgramData\Microsoft\Crypto\SystemKeys\* zamiast folderów C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\$fileName .
Więcej informacji
Skontaktuj się z nami, aby uzyskać pomoc
Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.