Procedimiento para crear certificados temporales que puedan usarse durante las operaciones de desarrollo

Cuando se desarrolla un servicio o cliente seguro utilizando Windows Communication Foundation (WCF), a menudo es necesario proporcionar un certificado X.509 que se utilizará como una credencial. El certificado forma normalmente parte de una cadena de certificados con una entidad emisora raíz situada en el almacén de las Entidades emisoras de certificados raíz de confianza del equipo. Tener una cadena de certificados le permite establecer un conjunto de certificados donde normalmente la entidad emisora raíz pertenece a su organización o unidad del negocio. Para emularlo en el momento de desarrollo, puede crear dos certificados para satisfacer los requisitos de seguridad. El primero es un certificado con firma automática que se coloca en el almacén de las Entidades emisoras de certificados raíz de confianza y el segundo certificado se crea a partir del primero y se coloca en el almacén personal de la ubicación del equipo local o en el almacén personal de la ubicación del usuario actual. En este tema se describen los pasos para crear estos dos certificados mediante el cmdlet New-SelfSignedCertificate).

Importante

Los certificados generados por el cmdlet New-SelfSignedCertificate solo se proporcionan para pruebas. Al implementar un servicio o cliente, asegúrese de usar un certificado adecuado proporcionado por una entidad de certificación. Esto podría ser de un servidor de certificado Windows Server en su organización o de un tercero.

De forma predeterminada, el cmdlet New-SelfSignedCertificate crea certificados autofirmados y estos certificados no son seguros. Colocar los certificados autofirmados en el almacén Entidades emisoras de certificados raíz de confianza le permite crear un entorno de desarrollo que simula su entorno de distribución con mayor detenimiento.

Para obtener más información sobre la creación y el uso de certificados, consulte Trabajar con certificados. Para obtener más información sobre cómo usar un certificado como credencial, consulte Protección de servicios y clientes. Para obtener un tutorial sobre el uso de la tecnología Microsoft Authenticode, consulte Authenticode Overviews and Tutorials (Información general y tutoriales de Authenticode).

Para crear un certificado de la entidad de certificación raíz firmado automáticamente y exportar la clave privada

El siguiente comando crea un certificado autofirmado con un nombre sujeto de "RootCA" en el almacén Usuario actual\Personal.

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

Es necesario exportar el certificado a un archivo PFX para que se pueda importar a donde sea necesario en un paso posterior. Al exportar un certificado con la clave privada, se necesita una contraseña para protegerlo. Guardamos la contraseña en un objeto SecureString y usamos el cmdlet Export-PfxCertificate para exportar el certificado con la clave privada asociada a un archivo PFX. También guardamos solo el certificado público en un archivo CRT mediante el 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'

Crear un nuevo certificado firmado por un certificado de la entidad emisora raíz

El comando siguiente crea un certificado firmado por el RootCA con un nombre sujeto de "SignedByRootCA" utilizando la clave privada del emisor.

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

Del mismo modo, guardamos el certificado firmado con clave privada en un archivo PFX y solo la clave pública en un archivo 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

Instalar un certificado en el almacén de entidades de certificación raíz de confianza

Una vez creado un certificado firmado automáticamente, puede instalarlo en el almacén Entidades emisoras de certificados raíz de confianza. El equipo confía en todos los certificados firmados con el certificado en este punto. Por esta razón, elimine el certificado del almacén en cuanto ya no lo necesite. Cuando elimine este certificado de entidad emisora raíz, se desautorizan el resto de certificados que firmó con él. Los certificados de entidad emisora raíz simplemente son un mecanismo con el que se pueden incluir un grupo de certificados, cuando sea necesario. Por ejemplo, en aplicaciones punto a punto, normalmente no es necesario una entidad emisora raíz porque usted simplemente confía en la identidad de un individuo mediante el certificado proporcionado por él.

Instalar un certificado firmado automáticamente en las entidades emisoras de certificados raíz de confianza

  1. Abra el complemento del certificado. Para más información, consulte Visualización de certificados con el complemento MMC.

  2. Abra la carpeta para almacenar el certificado, el Equipo local o el Usuario actual.

  3. Abra la carpeta Entidades emisoras de certificados raíz de confianza .

  4. Haga clic con el botón secundario en la carpeta Certificados y haga clic en Todas las tareas, a continuación, haga clic en Importar.

  5. Siga las instrucciones del asistente en pantalla para importar RootCA.pfx en el almacén.

Uso de certificados con WCF

Una vez que se han preparado los certificados temporales, puede usarlos para desarrollar soluciones WCF que especifiquen los certificados como un tipo de credencial de cliente. Por ejemplo, en la siguiente configuración XML se especifica la seguridad de mensaje y un certificado como tipo de credencial de cliente.

Para especificar un certificado como tipo de credencial de cliente

  1. En el archivo de configuración de un servicio, use el código XML siguiente para establecer el modo de seguridad en mensaje y el tipo de credencial de cliente en certificado.

    <bindings>
      <wsHttpBinding>
        <binding name="CertificateForClient">
          <security>
            <message clientCredentialType="Certificate" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    
  2. En el archivo de configuración de un cliente, use el código XML siguiente para especificar que el certificado está en el almacén del usuario y que se puede encontrar buscando el valor "CohoWinery" en el campo SubjectName.

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

Para obtener más información sobre el uso de certificados en WCF, consulte Working with Certificates.

seguridad en .NET Framework

Asegúrese de eliminar cualquier los certificados temporales de entidad emisora raíz de las carpetas Entidades emisoras de certificados raíz de confianza y Personal haciendo clic con el botón secundario en el certificado y, a continuación, haciendo clic en Eliminar.

Consulte también