Het MOF-bestand te beveiligenSecuring the MOF File

Van toepassing op: Windows PowerShell 4.0, Windows PowerShell 5.0Applies To: Windows PowerShell 4.0, Windows PowerShell 5.0

DSC beheert de configuratie van de knooppunten door toe te passen de gegevens die zijn opgeslagen in een MOF-bestand, waarbij de lokale Configuration Manager (LCM) de status van de gewenste end implementeert.DSC manages the configuration of server nodes by applying information stored in a MOF file, where the Local Configuration Manager (LCM) implements the desired end state. Omdat dit bestand de details van de configuratie bevat, is het belangrijk beveiligd blijft.Because this file contains the details of the configuration, it’s important to keep it secure. In dit onderwerp wordt beschreven hoe zorg ervoor dat het doelknooppunt het bestand is versleuteld.This topic describes how to ensure the target node has encrypted the file.

Vanaf versie 5.0 PowerShell is het gehele MOF-bestand is standaard versleuteld wanneer deze wordt toegepast op het knooppunt met behulp van de Start DSCConfiguration cmdlet.Beginning with PowerShell version 5.0, the entire MOF file is encrypted by default when it is applied to the node using the Start-DSCConfiguration cmdlet. De procedure beschreven in dit artikel is alleen vereist als voor het implementeren van een oplossing met behulp van het pull-service-protocol als certificaten worden niet beheerd, om ervoor te zorgen gedownload door het doelknooppunt configuraties kunnen worden ontsleuteld en gelezen door het systeem voordat ze worden toegepast (bijvoorbeeld de pull-service beschikbaar in Windows Server).The process described in this article is required only when implementing a solution using the pull service protocol if certificates are not managed, to ensure configurations downloaded by the target node can be decrypted and read by the system before they are applied (for example, the pull service available in Windows Server). Knooppunten die zijn geregistreerd bij Azure Automation DSC automatisch certificaten geïnstalleerd en worden beheerd door de service met geen administratieve overhead vereist.Nodes registered to Azure Automation DSC will automatically have certificates installed and managed by the service with no administrative overhead required.

Opmerking: in dit onderwerp worden de certificaten die worden gebruikt voor versleuteling.Note: This topic discusses certificates used for encryption. Voor versleuteling, een zelfondertekend certificaat volstaat, omdat de persoonlijke sleutel wordt altijd opgeslagen geheim en versleuteling betekent niet dat een vertrouwensrelatie van het document.For encryption, a self-signed certificate is sufficient, because the private key is always kept secret and encryption does not imply trust of the document. Zelfondertekende certificaten moeten niet worden gebruikt voor verificatiedoeleinden.Self-signed certificates should not be used for authentication purposes. U moet een certificaat van een vertrouwde certificeringsinstantie (CA) gebruiken voor andere verificatiedoeleinden.You should use a certificate from a trusted Certification Authority (CA) for any authentication purposes.

VereistenPrerequisites

Voor het versleutelen met succes van de referenties gebruikt voor het beveiligen van een DSC-configuratie, zorg ervoor dat hebt u het volgende:To successfully encrypt the credentials used to secure a DSC configuration, make sure you have the following:

  • Een manier van uitgeven en distribueren van certificaten.Some means of issuing and distributing certificates. In dit onderwerp en de voorbeelden wordt ervan uitgegaan dat u gebruikmaakt van Active Directory-certificeringsinstantie.This topic and its examples assume you are using Active Directory Certification Authority. Zie voor meer achtergrondinformatie over Active Directory Certificate Services, Active Directory Certificate Services Overview en Active Directory Certificate Services in Windows Server 2008.For more background information on Active Directory Certificate Services, see Active Directory Certificate Services Overview and Active Directory Certificate Services in Windows Server 2008.
  • Beheerderstoegang tot het doelknooppunt of knooppunten.Administrative access to the target node or nodes.
  • Elk doelknooppunt heeft een versleuteling geschikt certificaat het persoonlijke archief opgeslagen.Each target node has an encryption-capable certificate saved its Personal Store. In Windows PowerShell is het pad naar het archief Cert: \LocalMachine\My.In Windows PowerShell, the path to the store is Cert:\LocalMachine\My. Gebruik de sjabloon 'verificatie van werkstation', die u (samen met andere certificaatsjablonen vinden kunt) van de voorbeelden in dit onderwerp op standaardcertificaatsjablonen.The examples in this topic use the “workstation authentication” template, which you can find (along with other certificate templates) at Default Certificate Templates.
  • Als u deze configuratie op een andere computer dan het doelknooppunt uitvoert Exporteer de openbare sleutel van het certificaat, en vervolgens importeren naar de computer u de configuratie van voert.If you will be running this configuration on a computer other than the target node, export the public key of the certificate, and then import it to the computer you will run the configuration from. Zorg ervoor dat u alleen exporteert de openbare sleutel; de persoonlijke sleutel te beveiligen.Make sure that you export only the public key; keep the private key secure.

Algemene procesOverall process

  1. Instellen van de certificaten, sleutels en vingerafdrukken, om ervoor te zorgen dat elk doelknooppunt kopieën van het certificaat heeft en de computer configuratie de openbare sleutel en vingerafdruk heeft.Set up the certificates, keys, and thumbprints, making sure that each target node has copies of the certificate and the configuration computer has the public key and thumbprint.
  2. Maak een configuratie-gegevensblok dat het pad en de vingerafdruk van de openbare sleutel bevat.Create a configuration data block that contains the path and thumbprint of the public key.
  3. Een configuratiescript dat de gewenste configuratie voor het doelknooppunt definieert en ontsleuteling op de doelknooppunten ingesteld door de lokale configuratie bestuurt manager voor het ontsleutelen van de configuratiegegevens met behulp van het certificaat en de vingerafdruk maken.Create a configuration script that defines your desired configuration for the target node and sets up decryption on the target nodes by commanding the Local Configuration manager to decrypt the configuration data using the certificate and its thumbprint.
  4. Voer de configuratie, waarmee u de instellingen voor de lokale Configuration Manager en start de DSC-configuratie.Run the configuration, which will set the Local Configuration Manager settings and start the DSC configuration.

Diagram1

CertificaatvereistenCertificate Requirements

Als u wilt nemen versleuteling van referenties, een openbare-sleutelcertificaat moet beschikbaar zijn op de doelknooppunt die vertrouwde door de computer die wordt gebruikt voor het schrijven van de DSC-configuratie.To enact credential encryption, a public key certificate must be available on the Target Node that is trusted by the computer being used to author the DSC configuration. Deze openbare-sleutelcertificaat bevat de specifieke vereisten om te worden gebruikt voor versleuteling van de DSC-referenties:This public key certificate has specific requirements for it to be used for DSC credential encryption:

  1. Sleutelgebruik:Key Usage:
    • Moet bevatten: 'KeyEncipherment' en 'DataEncipherment'.Must contain: 'KeyEncipherment' and 'DataEncipherment'.
    • Moet niet bevatten: 'Digitale handtekening'.Should not contain: 'Digital Signature'.
  2. Uitgebreid sleutelgebruik:Enhanced Key Usage:
    • Moet bevatten: documentbeveiliging (1.3.6.1.4.1.311.80.1).Must contain: Document Encryption (1.3.6.1.4.1.311.80.1).
    • Moet niet bevatten: clientverificatie (1.3.6.1.5.5.7.3.2) en verificatie van de Server (1.3.6.1.5.5.7.3.1).Should not contain: Client Authentication (1.3.6.1.5.5.7.3.2) and Server Authentication (1.3.6.1.5.5.7.3.1).
  3. De persoonlijke sleutel voor het certificaat is beschikbaar op de * Node_ doel.The Private Key for the certificate is available on the *Target Node_.
  4. De Provider voor het certificaat moet 'Microsoft RSA SChannel Cryptographic Provider'.The Provider for the certificate must be "Microsoft RSA SChannel Cryptographic Provider".

Aanbevolen: Hoewel u een certificaat met een Sleutelgebruik 'Digitale handtekening' of een van de clientverificatie-EKU die gebruiken kunt, Hiermee schakelt u de versleutelingssleutel moet eenvoudiger misbruik en kwetsbaar voor aanvallen.Recommended Best Practice: Although you can use a certificate with containing a Key Usage of 'Digital Signature' or one of the Authentication EKU's, this will enable the encryption key to be more easily misused and vulnerable to attack. Het is daarom raadzaam om een certificaat gemaakt specifiek voor het beveiligen van DSC-referenties die worden weggelaten deze sleutelgebruik en EKU's te gebruiken.So it is best practice to use a certificate created specifically for the purpose of securing DSC credentials that omits these Key Usage and EKUs.

Alle bestaande certificaten op de doelknooppunt dat voldoet aan deze criteria kunnen worden gebruikt voor veilige DSC-referenties.Any existing certificate on the Target Node that meets these criteria can be used to secure DSC credentials.

Maken van het certificaatCertificate creation

Er zijn twee manieren maken en gebruiken van het vereiste certificaat voor codering (openbaar / persoonlijk sleutelpaar).There are two approaches you can take to create and use the required Encryption Certificate (public-private key pair).

  1. Deze maken op de doelknooppunt en exporteer de openbare sleutel voor de knooppunt ontwerpenCreate it on the Target Node and export just the public key to the Authoring Node
  2. Deze maken op de Authoring knooppunt en exporteren van de volledige-sleutelpaar de doelknooppuntCreate it on the Authoring Node and export the entire key pair to the Target Node

Methode 1 wordt aanbevolen omdat de persoonlijke sleutel voor het ontsleutelen van referenties in het MOF in het doelknooppunt te allen tijde blijft.Method 1 is recommended because the private key used to decrypt credentials in the MOF stays on the Target Node at all times.

Maken van het certificaat in het doelknooppuntCreating the Certificate on the Target Node

De persoonlijke sleutel geheim moet blijven, omdat het wordt gebruikt voor het ontsleutelen van de MOF op de doelknooppunt het gemakkelijkst dat het certificaat met persoonlijke sleutel maken op de doelknooppunt, en kopieer de openbare-sleutelcertificaat op de computer die wordt gebruikt voor het schrijven van de DSC-configuratie naar een MOF-bestand.The private key must be kept secret, because is used to decrypt the MOF on the Target Node The easiest way to do that is to create the private key certificate on the Target Node, and copy the public key certificate to the computer being used to author the DSC configuration into a MOF file. Het volgende voorbeeld:The following example:

  1. maakt een certificaat op de doelknooppuntcreates a certificate on the Target node
  2. de openbare-sleutelcertificaat exporteert op de doelknooppunt.exports the public key certificate on the Target node.
  3. geïmporteerd certificaat met de openbare sleutel in de mijn certificaatarchief op de ontwerpen knooppunt.imports the public key certificate into the my certificate store on the Authoring node.

In het doelknooppunt: maken en het certificaat exporterenOn the Target Node: create and export the certificate

Doelknooppunt: De WindowsServer 2016 en Windows 10Target Node: Windows Server 2016 and Windows 10

# note: These steps need to be performed in an Administrator PowerShell session
$cert = New-SelfSignedCertificate -Type DocumentEncryptionCertLegacyCsp -DnsName 'DscEncryptionCert' -HashAlgorithm SHA256
# export the public key certificate
$cert | Export-Certificate -FilePath "$env:temp\DscPublicKey.cer" -Force

Eenmaal is geëxporteerd, de DscPublicKey.cer zou moeten worden gekopieerd naar de Authoring knooppunt.Once exported, the DscPublicKey.cer would need to be copied to the Authoring Node.

Doelknooppunt: Windows Server 2012 R2/Windows 8.1 en oudere versiesTarget Node: Windows Server 2012 R2/Windows 8.1 and earlier

Omdat de cmdlet New-SelfSignedCertificate op Windows-besturingssystemen vóór Windows 10 en Windows Server 2016 bieden geen ondersteuning voor de Type parameter, een alternatieve methode voor het maken van dit certificaat is vereist voor deze besturingssystemen.Because the New-SelfSignedCertificate cmdlet on Windows Operating Systems prior to Windows 10 and Windows Server 2016 do not support the Type parameter, an alternate method of creating this certificate is required on these operating systems. In dit geval kunt u makecert.exe of certutil.exe om het certificaat te maken.In this case you can use makecert.exe or certutil.exe to create the certificate.

Is een alternatieve methode downloaden van het script New-SelfSignedCertificateEx.ps1 van Microsoft Script Center en deze gebruiken voor het maken van het certificaat in plaats daarvan:An alternate method is to download the New-SelfSignedCertificateEx.ps1 script from Microsoft Script Center and use it to create the certificate instead:

# note: These steps need to be performed in an Administrator PowerShell session
# and in the folder that contains New-SelfSignedCertificateEx.ps1
. .\New-SelfSignedCertificateEx.ps1
New-SelfsignedCertificateEx `
    -Subject "CN=${ENV:ComputerName}" `
    -EKU 'Document Encryption' `
    -KeyUsage 'KeyEncipherment, DataEncipherment' `
    -SAN ${ENV:ComputerName} `
    -FriendlyName 'DSC Credential Encryption certificate' `
    -Exportable `
    -StoreLocation 'LocalMachine' `
    -KeyLength 2048 `
    -ProviderName 'Microsoft Enhanced Cryptographic Provider v1.0' `
    -AlgorithmName 'RSA' `
    -SignatureAlgorithm 'SHA256'
# Locate the newly created certificate
$Cert = Get-ChildItem -Path cert:\LocalMachine\My `
    | Where-Object {
        ($_.FriendlyName -eq 'DSC Credential Encryption certificate') `
        -and ($_.Subject -eq "CN=${ENV:ComputerName}")
    } | Select-Object -First 1
# export the public key certificate
$cert | Export-Certificate -FilePath "$env:temp\DscPublicKey.cer" -Force

Eenmaal is geëxporteerd, de DscPublicKey.cer zou moeten worden gekopieerd naar de Authoring knooppunt.Once exported, the DscPublicKey.cer would need to be copied to the Authoring Node.

Op het knooppunt ontwerpen: openbare sleutel van het certificaat importerenOn the Authoring Node: import the cert’s public key

# Import to the my store
Import-Certificate -FilePath "$env:temp\DscPublicKey.cer" -CertStoreLocation Cert:\LocalMachine\My

Maken van het certificaat op het knooppunt ontwerpenCreating the Certificate on the Authoring Node

U kunt ook het versleutelingscertificaat kan worden gemaakt op de Authoring knooppunt, geëxporteerde met de persoonlijke sleutel als een PFX-bestand en klik vervolgens geïmporteerd op de doelknooppunt.Alternately, the encryption certificate can be created on the Authoring Node, exported with the private key as a PFX file and then imported on the Target Node. Dit is de huidige methode voor het implementeren van DSC-referentieversleuteling op Nano Server.This is the current method for implementing DSC credential encryption on Nano Server. Hoewel de PFX is beveiligd met een wachtwoord moet het worden beveiligd tijdens de overdracht.Although the PFX is secured with a password it should be kept secure during transit. Het volgende voorbeeld:The following example:

  1. maakt een certificaat op de ontwerpen knooppunt.creates a certificate on the Authoring node.
  2. het certificaat op met inbegrip van de persoonlijke sleutel exporteert de ontwerpen knooppunt.exports the certificate including the private key on the Authoring node.
  3. Hiermee verwijdert u de persoonlijke sleutel uit de ontwerpen knooppunt, maar blijft de openbare-sleutelcertificaat de mijn opslaan.removes the private key from the Authoring node, but keeps the public key certificate in the my store.
  4. geïmporteerd certificaat van de persoonlijke sleutel in het certificaatarchief My(Personal) op de doelknooppunt.imports the private key certificate into the My(Personal) certificate store on the Target node.
    • Deze moet worden toegevoegd aan het basisarchief zodat deze worden vertrouwd door de doelknooppunt.it must be added to the root store so that it will be trusted by the Target node.

Op het knooppunt ontwerpen: maken en het certificaat exporterenOn the Authoring Node: create and export the certificate

Doelknooppunt: De WindowsServer 2016 en Windows 10Target Node: Windows Server 2016 and Windows 10

# note: These steps need to be performed in an Administrator PowerShell session
$cert = New-SelfSignedCertificate -Type DocumentEncryptionCertLegacyCsp -DnsName 'DscEncryptionCert' -HashAlgorithm SHA256
# export the private key certificate
$mypwd = ConvertTo-SecureString -String "YOUR_PFX_PASSWD" -Force -AsPlainText
$cert | Export-PfxCertificate -FilePath "$env:temp\DscPrivateKey.pfx" -Password $mypwd -Force
# remove the private key certificate from the node but keep the public key certificate
$cert | Export-Certificate -FilePath "$env:temp\DscPublicKey.cer" -Force
$cert | Remove-Item -Force
Import-Certificate -FilePath "$env:temp\DscPublicKey.cer" -CertStoreLocation Cert:\LocalMachine\My

Eenmaal is geëxporteerd, de DscPrivateKey.pfx zou moeten worden gekopieerd naar de doelknooppunt.Once exported, the DscPrivateKey.pfx would need to be copied to the Target Node.

Doelknooppunt: Windows Server 2012 R2/Windows 8.1 en oudere versiesTarget Node: Windows Server 2012 R2/Windows 8.1 and earlier

Omdat de cmdlet New-SelfSignedCertificate op Windows-besturingssystemen vóór Windows 10 en Windows Server 2016 bieden geen ondersteuning voor de Type parameter, een alternatieve methode voor het maken van dit certificaat is vereist voor deze besturingssystemen.Because the New-SelfSignedCertificate cmdlet on Windows Operating Systems prior to Windows 10 and Windows Server 2016 do not support the Type parameter, an alternate method of creating this certificate is required on these operating systems. In dit geval kunt u makecert.exe of certutil.exe om het certificaat te maken.In this case you can use makecert.exe or certutil.exe to create the certificate.

Is een alternatieve methode downloaden van het script New-SelfSignedCertificateEx.ps1 van Microsoft Script Center en deze gebruiken voor het maken van het certificaat in plaats daarvan:An alternate method is to download the New-SelfSignedCertificateEx.ps1 script from Microsoft Script Center and use it to create the certificate instead:

# note: These steps need to be performed in an Administrator PowerShell session
# and in the folder that contains New-SelfSignedCertificateEx.ps1
. .\New-SelfSignedCertificateEx.ps1
New-SelfsignedCertificateEx `
    -Subject "CN=${ENV:ComputerName}" `
    -EKU 'Document Encryption' `
    -KeyUsage 'KeyEncipherment, DataEncipherment' `
    -SAN ${ENV:ComputerName} `
    -FriendlyName 'DSC Credential Encryption certificate' `
    -Exportable `
    -StoreLocation 'LocalMachine' `
    -KeyLength 2048 `
    -ProviderName 'Microsoft Enhanced Cryptographic Provider v1.0' `
    -AlgorithmName 'RSA' `
    -SignatureAlgorithm 'SHA256'
# Locate the newly created certificate
$Cert = Get-ChildItem -Path cert:\LocalMachine\My `
    | Where-Object {
        ($_.FriendlyName -eq 'DSC Credential Encryption certificate') `
        -and ($_.Subject -eq "CN=${ENV:ComputerName}")
    } | Select-Object -First 1
# export the public key certificate
$mypwd = ConvertTo-SecureString -String "YOUR_PFX_PASSWD" -Force -AsPlainText
$cert | Export-PfxCertificate -FilePath "$env:temp\DscPrivateKey.pfx" -Password $mypwd -Force
# remove the private key certificate from the node but keep the public key certificate
$cert | Export-Certificate -FilePath "$env:temp\DscPublicKey.cer" -Force
$cert | Remove-Item -Force
Import-Certificate -FilePath "$env:temp\DscPublicKey.cer" -CertStoreLocation Cert:\LocalMachine\My

In het doelknooppunt: de persoonlijke sleutel van het certificaat als een vertrouwde basiscertificeringsinstantie importerenOn the Target Node: import the cert’s private key as a trusted root

# Import to the root store so that it is trusted
$mypwd = ConvertTo-SecureString -String "YOUR_PFX_PASSWD" -Force -AsPlainText
Import-PfxCertificate -FilePath "$env:temp\DscPrivateKey.pfx" -CertStoreLocation Cert:\LocalMachine\My -Password $mypwd > $null

ConfiguratiegegevensConfiguration data

Het gegevensblok configuratie wordt gedefinieerd welke doelknooppunten te bewerken, of of niet voor het versleutelen van de referenties, de wijze van versleuteling en andere informatie.The configuration data block defines which target nodes to operate on, whether or not to encrypt the credentials, the means of encryption, and other information. Zie voor meer informatie over het gegevensblok configuratie scheiden van configuratie en omgevingsgegevens.For more information on the configuration data block, see Separating Configuration and Environment Data.

De elementen die kunnen worden geconfigureerd voor elk knooppunt die gerelateerd zijn aan de versleuteling van referenties zijn:The elements that can be configured for each node that are related to credential encryption are:

  • NodeName -de naam van het doelknooppunt die voor de referentieversleuteling wordt geconfigureerd.NodeName - the name of the target node that the credential encryption is being configured for.
  • PsDscAllowPlainTextPassword - of niet-versleutelde referenties mag worden doorgegeven aan dit knooppunt.PsDscAllowPlainTextPassword - whether unencrypted credentials will be allowed to be passed to this node. Dit is niet aanbevolen.This is not recommended.
  • Vingerafdruk -de vingerafdruk van het certificaat dat wordt gebruikt voor het ontsleutelen van de referenties in de DSC-configuratie op de doelknooppunt.Thumbprint - the thumbprint of the certificate that will be used to decrypt the credentials in the DSC Configuration on the Target Node. Dit certificaat moet zich in het certificaatarchief van de lokale computer op het doelknooppunt.This certificate must exist in the Local Machine certificate store on the Target Node.
  • CertificateFile - het certificaatbestand (met alleen de openbare sleutel) die moet worden gebruikt voor het versleutelen van de referenties voor de doelknooppunt.CertificateFile - the certificate file (containing the public key only) that should be used to encrypt the credentials for the Target Node. Dit moet ofwel een DER encoded binary X.509 of Base-64 gecodeerde x.509-indeling-certificaatbestand.This must be either a DER encoded binary X.509 or Base-64 encoded X.509 format certificate file.

Dit voorbeeld toont een configuratie-gegevensblok die een doelknooppunt om te fungeren voor benoemde targetNode, het pad naar het openbare-sleutelcertificaat-bestand aangeeft (met de naam targetNode.cer) en de vingerafdruk voor de openbare sleutel.This example shows a configuration data block that specifies a target node to act on named targetNode, the path to the public key certificate file (named targetNode.cer), and the thumbprint for the public key.

$ConfigData= @{
    AllNodes = @(
            @{
                # The name of the node we are describing
                NodeName = "targetNode"

                # The path to the .cer file containing the
                # public key of the Encryption Certificate
                # used to encrypt credentials for this node
                CertificateFile = "C:\publicKeys\targetNode.cer"


                # The thumbprint of the Encryption Certificate
                # used to decrypt the credentials on target node
                Thumbprint = "AC23EA3A9E291A75757A556D0B71CBBF8C4F6FD8"
            };
        );
    }

Het script voor configuratieConfiguration script

In het configuratiescript zelf, gebruikt u de PsCredential parameter om ervoor te zorgen dat de referenties voor de kortst mogelijke tijd worden opgeslagen.In the configuration script itself, use the PsCredential parameter to ensure that credentials are stored for the shortest possible time. Wanneer u het opgegeven voorbeeld uitvoert, wordt DSC vraagt u om referenties en deze vervolgens versleutelen het MOF-bestand met behulp van de CertificateFile die is gekoppeld aan het doelknooppunt in het gegevensblok configuratie.When you run the supplied example, DSC will prompt you for credentials and then encrypt the MOF file using the CertificateFile that is associated with the target node in the configuration data block. Dit codevoorbeeld wordt een bestand gekopieerd van een share die wordt beveiligd voor een gebruiker.This code example copies a file from a share that is secured to a user.

configuration CredentialEncryptionExample
{
    param(
        [Parameter(Mandatory=$true)]
        [ValidateNotNullorEmpty()]
        [PsCredential] $credential
        )


    Node $AllNodes.NodeName
    {
        File exampleFile
        {
            SourcePath = "\\Server\share\path\file.ext"
            DestinationPath = "C:\destinationPath"
            Credential = $credential
        }
    }
}

Ontsleuteling instellenSetting up decryption

Voordat u Start-DscConfiguration kunt werken, hebt u zien of de lokale Configuration Manager op elk doelknooppunt welk certificaat moet worden gebruikt voor het decoderen van de referenties met behulp van de resource CertificateID om te controleren of de vingerafdruk van het certificaat.Before Start-DscConfiguration can work, you have to tell the Local Configuration Manager on each target node which certificate to use to decrypt the credentials, using the CertificateID resource to verify the certificate’s thumbprint. Deze voorbeeldfunctie vindt u de juiste lokale certificaatarchief (mogelijk moet aanpassen zodat deze wordt gevonden en het exacte certificaat dat u wilt gebruiken):This example function will find the appropriate local certificate (you might have to customize it so it will find the exact certificate you want to use):

# Get the certificate that works for encryption
function Get-LocalEncryptionCertificateThumbprint
{
    (dir Cert:\LocalMachine\my) | %{
        # Verify the certificate is for Encryption and valid
        if ($_.PrivateKey.KeyExchangeAlgorithm -and $_.Verify())
        {
            return $_.Thumbprint
        }
    }
}

Met het certificaat dat wordt geïdentificeerd door de vingerafdruk, kan het configuratiescript worden bijgewerkt als de waarde wilt gebruiken:With the certificate identified by its thumbprint, the configuration script can be updated to use the value:

configuration CredentialEncryptionExample
{
    param(
        [Parameter(Mandatory=$true)]
        [ValidateNotNullorEmpty()]
        [PsCredential] $credential
        )


    Node $AllNodes.NodeName
    {
        File exampleFile
        {
            SourcePath = "\\Server\share\path\file.ext"
            DestinationPath = "C:\destinationPath"
            Credential = $credential
        }

        LocalConfigurationManager
        {
             CertificateId = $node.Thumbprint
        }
    }
}

De configuratie wordt uitgevoerdRunning the configuration

Op dit moment kunt u de configuratie, die de gegevens uit twee bestanden uitvoeren:At this point, you can run the configuration, which will output two files:

  • A *. meta.mof-bestand dat de lokale Configuration Manager voor het ontsleutelen van de referenties met het certificaat dat is opgeslagen op het lokale computerarchief en geïdentificeerd door de vingerafdruk configureert.A *.meta.mof file that configures the Local Configuration Manager to decrypt the credentials using the certificate that is stored on the local machine store and identified by its thumbprint. Set-DscLocalConfigurationManager van toepassing is de *. meta.mof-bestand.Set-DscLocalConfigurationManager applies the *.meta.mof file.
  • Een MOF-bestand dat daadwerkelijk de configuratie geldt.A MOF file that actually applies the configuration. Start DscConfiguration geldt de configuratie.Start-DscConfiguration applies the configuration.

Deze opdrachten worden die stappen uitvoeren:These commands will accomplish those steps:

Write-Host "Generate DSC Configuration..."
CredentialEncryptionExample -ConfigurationData $ConfigData -OutputPath .\CredentialEncryptionExample

Write-Host "Setting up LCM to decrypt credentials..."
Set-DscLocalConfigurationManager .\CredentialEncryptionExample -Verbose

Write-Host "Starting Configuration..."
Start-DscConfiguration .\CredentialEncryptionExample -wait -Verbose

In dit voorbeeld zou de DSC-configuratie pushen naar het doelknooppunt.This example would push the DSC configuration to the target node. De DSC-configuratie kan ook worden toegepast met behulp van een DSC-Pull-Server als deze beschikbaar is.The DSC configuration can also be applied using a DSC Pull Server if one is available.

Zie instellen van een DSC-pull-client voor meer informatie over het toepassen van DSC-configuraties met behulp van een DSC-Pull-Server.See Setting up a DSC pull client for more information on applying DSC configurations using a DSC Pull Server.

Voorbeeld van de referentie-versleuteling-ModuleCredential Encryption Module Example

Hier volgt een voorbeeld van een volledige waarin alle deze stappen, plus een helper-cmdlet die worden geëxporteerd en kopieert de openbare sleutels:Here is a full example that incorporates all of these steps, plus a helper cmdlet that exports and copies the public keys:

# A simple example of using credentials
configuration CredentialEncryptionExample
{
    param(
        [Parameter(Mandatory=$true)]
        [ValidateNotNullorEmpty()]
        [PsCredential] $credential
        )


    Node $AllNodes.NodeName
    {
        File exampleFile
        {
            SourcePath = "\\server\share\file.txt"
            DestinationPath = "C:\Users\user"
            Credential = $credential
        }

        LocalConfigurationManager
        {
            CertificateId = $node.Thumbprint
        }
    }
}

# A Helper to invoke the configuration, with the correct public key
# To encrypt the configuration credentials
function Start-CredentialEncryptionExample
{
    [CmdletBinding()]
    param ($computerName)


    [string] $thumbprint = Get-EncryptionCertificate -computerName $computerName -Verbose
    Write-Verbose "using cert: $thumbprint"

    $certificatePath = join-path -Path "$env:SystemDrive\$script:publicKeyFolder" -childPath "$computername.EncryptionCertificate.cer"

    $ConfigData=    @{
        AllNodes = @(
                        @{
                            # The name of the node we are describing
                            NodeName = "$computerName"

                            # The path to the .cer file containing the
                            # public key of the Encryption Certificate
                            CertificateFile = "$certificatePath"

                            # The thumbprint of the Encryption Certificate
                            # used to decrypt the credentials
                            Thumbprint = $thumbprint
                        };
                    );
    }

    Write-Verbose "Generate DSC Configuration..."
    CredentialEncryptionExample -ConfigurationData $ConfigData -OutputPath .\CredentialEncryptionExample `
        -credential (Get-Credential -UserName "$env:USERDOMAIN\$env:USERNAME" -Message "Enter credentials for configuration")

    Write-Verbose "Setting up LCM to decrypt credentials..."
    Set-DscLocalConfigurationManager .\CredentialEncryptionExample -Verbose

    Write-Verbose "Starting Configuration..."
    Start-DscConfiguration .\CredentialEncryptionExample -wait -Verbose

}


#region HelperFunctions

# The folder name for the exported public keys
$script:publicKeyFolder = "publicKeys"

# Get the certificate that works for encryptions
function Get-EncryptionCertificate
{
    [CmdletBinding()]
    param ($computerName)
    $returnValue= Invoke-Command -ComputerName $computerName -ScriptBlock {
            $certificates = dir Cert:\LocalMachine\my

            $certificates | %{
                    # Verify the certificate is for Encryption and valid
                    if ($_.PrivateKey.KeyExchangeAlgorithm -and $_.Verify())
                    {
                        # Create the folder to hold the exported public key
                        $folder= Join-Path -Path $env:SystemDrive\ -ChildPath $using:publicKeyFolder
                        if (! (Test-Path $folder))
                        {
                            md $folder | Out-Null
                        }

                        # Export the public key to a well known location
                        $certPath = Export-Certificate -Cert $_ -FilePath (Join-Path -path $folder -childPath "EncryptionCertificate.cer")

                        # Return the thumbprint, and exported certificate path
                        return @($_.Thumbprint,$certPath);
                    }
                  }
        }
    Write-Verbose "Identified and exported cert..."
    # Copy the exported certificate locally
    $destinationPath = join-path -Path "$env:SystemDrive\$script:publicKeyFolder" -childPath "$computername.EncryptionCertificate.cer"
    Copy-Item -Path (join-path -path \\$computername -childPath $returnValue[1].FullName.Replace(":","$"))  $destinationPath | Out-Null

    # Return the thumbprint
    return $returnValue[0]
}

Start-CredentialEncryptionExample