Procédure : créer des certificats temporaires à utiliser pendant le développement

Lors du développement d’un service ou d’un client sécurisé à l’aide de Windows Communication Foundation (WCF), il est souvent nécessaire de fournir un certificat X.509 à utiliser comme informations d’identification. Le certificat fait en général partie d'une chaîne de certificats dont l'autorité racine est présente dans le magasin d'Autorités de certification racines de confiance de l'ordinateur. Une chaîne de certificats vous permet de définir la portée d'un jeu de certificats où en général l'autorité racine provient de votre organisation ou votre division. Pour émuler ce scénario au moment du développement, vous pouvez créer deux certificats pour satisfaire les conditions de sécurité. Le premier est un certificat auto-signé placé dans le magasin d'Autorités de certification racines de confiance. Le deuxième certificat est créé à partir du premier et placé dans le magasin personnel de l'emplacement de l'ordinateur local ou dans le magasin personnel de l'emplacement de l'utilisateur actif. Cette rubrique décrit les étapes de création de ces deux certificats à l’aide de la cmdlet PowerShell New-SelfSignedCertificate).

Important

Les certificats générés par la cmdlet New-SelfSignedCertificate sont fournis uniquement à des fins de test. Lorsque vous déployez un service ou un client, veillez à utiliser un certificat approprié fourni par une autorité de certification. Celui-ci peut provenir d’un serveur de certificat Windows Server dans votre organisation ou d’un tiers.

Par défaut, la cmdlet New-SelfSignedCertificate crée des certificats auto-signés et ces certificats sont non sécurisés. Le placement du certificat auto-signé dans le magasin d’Autorités de certification racines de confiance vous permet de créer un environnement de développement qui reproduit plus fidèlement votre environnement de déploiement.

Pour plus d’informations sur la création et l’utilisation de certificats, consultez Working with Certificates. Pour plus d’informations sur l’utilisation d’un certificat en tant qu’informations d’identification, consultez Sécurisation des services et des clients. Pour obtenir un didacticiel à propos de l’utilisation de la technologie Authenticode de Microsoft, consultez Authenticode Overviews and Tutorials(Vues d’ensemble et didacticiels relatifs à Authenticode).

Pour créer un certificat d'autorité racine auto-signé et exporter la clé privée

La commande suivante crée un certificat auto-signé avec un nom d’objet « RootCA » dans le magasin personnel de l’utilisateur actuel.

$rootCert = New-SelfSignedCertificate -CertStoreLocation Cert:\CurrentUser\My -DnsName "RootCA" -TextExtension @("2.5.29.19={text}CA=true") -KeyUsage CertSign,CrlSign,DigitalSignature

Nous devons exporter le certificat vers un fichier PFX afin qu’il puisse être importé à l’endroit où il est nécessaire dans une étape ultérieure. Lors de l’exportation d’un certificat avec la clé privée, un mot de passe est nécessaire pour le protéger. Nous enregistrons le mot de passe dans un SecureString et utilisons la cmdlet Export-PfxCertificate pour exporter le certificat avec la clé privée associée vers un fichier PFX. Nous enregistrons également uniquement le certificat public dans un fichier CRT à l’aide de la cmdlet Export-Certificate.

[System.Security.SecureString]$rootCertPassword = ConvertTo-SecureString -String "password" -Force -AsPlainText
[String]$rootCertPath = Join-Path -Path 'cert:\CurrentUser\My\' -ChildPath "$($rootCert.Thumbprint)"
Export-PfxCertificate -Cert $rootCertPath -FilePath 'RootCA.pfx' -Password $rootCertPassword
Export-Certificate -Cert $rootCertPath -FilePath 'RootCA.crt'

Pour créer un nouveau certificat signé par un certificat d'autorité racine

Par exemple, la commande suivante crée un certificat signé par le RootCA avec « SignedByRootCA » comme nom de sujet avec la clé privée de l’émetteur.

$testCert = New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName "SignedByRootCA" -KeyExportPolicy Exportable -KeyLength 2048 -KeyUsage DigitalSignature,KeyEncipherment -Signer $rootCert

De même, nous enregistrons le certificat signé avec la clé privée dans un fichier PFX et seulement la clé publique dans un fichier CRT.

[String]$testCertPath = Join-Path -Path 'cert:\LocalMachine\My\' -ChildPath "$($testCert.Thumbprint)"
Export-PfxCertificate -Cert $testCertPath -FilePath testcert.pfx -Password $rootCertPassword
Export-Certificate -Cert $testCertPath -FilePath testcert.crt

Installation d'un certificat dans le magasin d'Autorités de certification racines de confiance

Une fois qu'un certificat auto-signé est créé, vous pouvez l'installer dans le magasin d'Autorités de certification racines de confiance. Tous les certificats signés à ce stade avec le certificat sont approuvés par l'ordinateur. Pour cette raison, supprimez le certificat du magasin dès que vous n'en avez plus besoin. Lorsque vous supprimez ce certificat d'autorité racine, tous les autres certificats ayant signé à l'aide de ce dernier ne sont plus autorisés. Les certificats d'autorité racines sont un simple mécanisme qui permet de définir la portée d'un groupe de certificats selon les besoins. Par exemple, dans les applications d'égal à égal, l'autorité racine n'est pas nécessaire le plus souvent dans la mesure où l'identité d'un individu est garantie par le certificat qu'il fournit.

Pour installer un certificat auto-signé dans les Autorités de certification racines de confiance

  1. Ouvrez le composant logiciel enfichable Certificat. Pour plus d’informations, consultez la page Affichage de certificats à l’aide du composant logiciel enfichable MMC.

  2. Ouvrez le dossier pour stocker le certificat, soit Ordinateur local , soit Utilisateur actuel.

  3. Ouvrez le dossier Autorités de certification racines de confiance .

  4. Cliquez avec le bouton droit sur le dossier Certificats et cliquez sur Toutes les tâches, puis cliquez sur Importer.

  5. Suivez les instructions de l’Assistant à l’écran pour importer RootCA.pfx dans le magasin.

Utilisation de certificats avec WCF

Une fois que vous avez configuré les certificats temporaires, vous pouvez les utiliser pour développer des solutions WCF qui spécifient des certificats comme un type d'informations d'identification du client. Par exemple, la configuration XML suivante spécifie la sécurité du message et un certificat comme type d'informations d'identification du client.

Pour spécifier un certificat comme type d'informations d'identification du client

  1. Dans le fichier de configuration d'un service, utilisez le XML suivant pour affecter au mode de sécurité la valeur Message, et au type d'informations d'identification du client la valeur Certificat.

    <bindings>
      <wsHttpBinding>
        <binding name="CertificateForClient">
          <security>
            <message clientCredentialType="Certificate" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    
  2. Dans le fichier de configuration d’un client, utilisez le XML suivant pour spécifier que le certificat est recherché dans le magasin de l’utilisateur, et qu’il peut être recherché dans le champ SubjectName en tapant la valeur « CohoWinery ».

    <behaviors>
      <endpointBehaviors>
        <behavior name="CertForClient">
          <clientCredentials>
            <clientCertificate findValue="CohoWinery" x509FindType="FindBySubjectName" />
          </clientCredentials>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    

Pour plus d’informations sur l’utilisation des certificats dans WCF, consultez Working with Certificates.

sécurité du .NET Framework

Veillez à supprimer tous les certificats d'autorité racines temporaires des dossiers Autorités de certification racines de confiance et Personnel en cliquant avec le bouton droit sur le certificat, en cliquant sur ensuite Supprimer.

Voir aussi