Generación y exportación de certificados para conexiones VPN de usuario con PowerShell

Las configuraciones de VPN de usuario (punto a sitio) se pueden configurar para requerir que los certificados se autentiquen. En este artículo se muestra cómo crear un certificado raíz autofirmado y generar certificados cliente con PowerShell en Windows 10 o una versión posterior, o en Windows Server 2016 o una versión posterior.

Los cmdlets de PowerShell que se usan para generar certificados forman parte del sistema operativo y no funcionan en otras versiones de Windows. El sistema operativo host solo se usa para generar los certificados. Una vez generados, puede cargarlos o instalarlos en cualquier sistema operativo cliente compatible.

Si no tiene un equipo que cumpla el requisito del sistema operativo, puede usar MakeCert para generar los certificados. Los certificados que genera mediante cualquiera de estos métodos pueden instalarse en cualquier sistema operativo cliente compatible.

Creación de un certificado raíz autofirmado

Use el cmdlet New-SelfSignedCertificate para crear un certificado raíz autofirmado. Para obtener información adicional sobre los parámetros, consulte New-SelfSignedCertificate.

  1. En un equipo con Windows 10 o posterior, o con Windows Server 2016, abra una consola de Windows PowerShell con privilegios elevados.

  2. Creación de un certificado raíz autofirmado. En el ejemplo siguiente se crea un certificado raíz autofirmado con el nombre "P2SRootCert" que se instala automáticamente en "Certificates-Current User\Personal\Certificates". Puede ver el certificado si abre certmgr.msc, o bien Administrar certificados de usuario.

    Realice las modificaciones necesarias antes de usar este ejemplo. El parámetro “NotAfter” es opcional. De forma predeterminada, sin este parámetro, el certificado expira en 1 año.

    $params = @{
        Type = 'Custom'
        Subject = 'CN=P2SRootCert'
        KeySpec = 'Signature'
        KeyExportPolicy = 'Exportable'
        KeyUsage = 'CertSign'
        KeyUsageProperty = 'Sign'
        KeyLength = 2048
        HashAlgorithm = 'sha256'
        NotAfter = (Get-Date).AddMonths(24)
        CertStoreLocation = 'Cert:\CurrentUser\My'
    }
    $cert = New-SelfSignedCertificate @params
    
  3. Deje abierta la consola de PowerShell y continúe con los pasos siguientes para generar un certificado de cliente.

Generación de un certificado de cliente

Cada equipo cliente que se conecta a una red virtual con una conexión de punto a sitio debe tener instalado un certificado de cliente. Puede generarlo desde un certificado raíz autofirmado y, luego, exportar e instalar el certificado de cliente. Si no está instalado el certificado de cliente, se produce un error de autenticación.

Los pasos siguientes lo llevan por el proceso de generación de un certificado de cliente a partir de un certificado autofirmado. Puede generar varios certificados de cliente desde el mismo certificado raíz. Al generar certificados de cliente mediante los pasos siguientes, el certificado de cliente se instala automáticamente en el equipo que se usó para generar el certificado. Si desea instalar un certificado de cliente en otro equipo cliente, exporte el certificado.

Los ejemplos usan el cmdlet New-SelfSignedCertificate para generar un certificado de cliente.

Ejemplo 1: sesión de consola de PowerShell aún abierta

Use este ejemplo si no ha cerrado la consola de PowerShell después de crear el certificado raíz autofirmado. Este ejemplo continúa desde la sección anterior y usa la variable "$cert" declarada. Si cerró la consola de PowerShell después de crear el certificado raíz autofirmado o va a crear más certificados de cliente en una nueva sesión de consola de PowerShell, siga los pasos del Ejemplo 2.

Modifique y ejecute el ejemplo para generar un certificado de cliente. Si ejecuta el ejemplo siguiente sin modificación alguna, el resultado es un certificado de cliente con el nombre "P2SChildCert". Si quiere agregar algo más al nombre del certificado secundario, modifique el valor CN. No cambie el valor de TextExtension cuando ejecute este ejemplo. El certificado de cliente que genera se instala automáticamente en la ruta del equipo "Certificates - Current User\Personal\Certificates".


   $params = @{
       Type = 'Custom'
       Subject = 'CN=P2SChildCert'
       DnsName = 'P2SChildCert'
       KeySpec = 'Signature'
       KeyExportPolicy = 'Exportable'
       KeyLength = 2048
       HashAlgorithm = 'sha256'
       NotAfter = (Get-Date).AddMonths(18)
       CertStoreLocation = 'Cert:\CurrentUser\My'
       Signer = $cert
       TextExtension = @(
        '2.5.29.37={text}1.3.6.1.5.5.7.3.2')
   }
   New-SelfSignedCertificate @params

Ejemplo 2: nueva sesión de consola de PowerShell

Si va a crear más certificados de cliente, o si no usa la misma sesión de PowerShell que ha utilizado para crear el certificado raíz autofirmado, siga estos pasos:

  1. Identifique el certificado raíz autofirmado que se instaló en el equipo. Este cmdlet devuelve una lista de certificados que están instalados en el equipo.

    Get-ChildItem -Path "Cert:\CurrentUser\My"
    
  2. Busque el nombre del firmante de la lista devuelta y, luego, copie la huella digital que se encuentra junto a él en un archivo de texto. En el ejemplo siguiente, hay dos certificados. El nombre CN es el nombre del certificado raíz autofirmado a partir del que va a generar un certificado secundario. En este caso, "P2SRootCert".

    Thumbprint                                Subject
    ----------                                -------
    AED812AD883826FF76B4D1D5A77B3C08EFA79F3F  CN=P2SChildCert4
    7181AA8C1B4D34EEDB2F3D3BEC5839F3FE52D655  CN=P2SRootCert
    
  3. Declare una variable para el certificado raíz con la huella digital del paso anterior. Reemplace la huella digital con la del certificado raíz a partir del que va a generar un certificado secundario.

    $cert = Get-ChildItem -Path "Cert:\CurrentUser\My\<THUMBPRINT>"
    

    Por ejemplo, al usar la huella digital de P2SRootCert del paso anterior, la variable tendrá el aspecto similar al siguiente:

    $cert = Get-ChildItem -Path "Cert:\CurrentUser\My\7181AA8C1B4D34EEDB2F3D3BEC5839F3FE52D655"
    
  4. Modifique y ejecute el ejemplo para generar un certificado de cliente. Si ejecuta el ejemplo siguiente sin modificación alguna, el resultado es un certificado de cliente con el nombre "P2SChildCert". Si quiere agregar algo más al nombre del certificado secundario, modifique el valor CN. No cambie el valor de TextExtension cuando ejecute este ejemplo. El certificado de cliente que genera se instala automáticamente en la ruta del equipo "Certificates - Current User\Personal\Certificates".

    $params = @{
        Type = 'Custom'
        Subject = 'CN=P2SChildCert'
        DnsName = 'P2SChildCert1'
        KeySpec = 'Signature'
        KeyExportPolicy = 'Exportable'
        KeyLength = 2048
        HashAlgorithm = 'sha256'
        NotAfter = (Get-Date).AddMonths(18)
        CertStoreLocation = 'Cert:\CurrentUser\My'
        Signer = $cert
        TextExtension = @(
         '2.5.29.37={text}1.3.6.1.5.5.7.3.2')
    }
    New-SelfSignedCertificate @params
    

Exportación de la clave pública del certificado raíz (.cer)

Después de crear un certificado raíz autofirmado, exporte el archivo .cer del certificado de raíz (no la clave privada). Posteriormente cargará los datos de certificado necesarios incluidos en el archivo en Azure. Los pasos siguientes ayudan con la exportación del archivo .cer para el certificado raíz autofirmado y la recuperación de los datos de certificado necesarios.

  1. Para obtener el archivo .cer de certificado, abra Administrar certificados de usuario.

    Busque el certificado raíz autofirmado; normalmente se encuentra en "Certificados - Usuario actual\Personal\Certificados" y haga clic en el botón derecho. Haga clic en Todas las tareas ->Exportar. Se abre el Asistente para exportar certificados.

    Si no encuentra el certificado en Usuario actual\Personal\Certificados, puede que haya abierto de forma accidental "Certificados – Equipo Local", en lugar de "Certificados - Usuario actual".

    Captura de pantalla en la que se muestra la ventana Certificados con Todas las tareas y Exportar seleccionados.

  2. En el asistente, haga clic en Siguiente.

  3. Seleccione No exportar la clave privada y, después, haga clic en Siguiente.

    Captura de pantalla en la que se muestra No exportar la clave privada.

  4. En la página Formato de archivo de exportación, seleccione X.509 codificado base 64 (.CER) y, luego, haga clic en Siguiente.

    Captura de pantalla en la que se muestra Exportar codificado en base-64.

  5. En Archivo que se va a exportar, haga clic en Examinar para ir a la ubicación a la que desea exportar el certificado. En Nombre de archivo, asígnele un nombre al archivo de certificado. A continuación, haga clic en Siguiente.

  6. Haga clic en Finalizar para exportar el certificado.

  7. Verá la confirmación "La exportación se realizó correctamente".

  8. Vaya a la ubicación donde exportó el certificado y ábralo mediante un editor de texto, como el Bloc de notas. Si exportó el certificado en el formato X.509 codificado en base 64 (.CER) necesario, verá un texto similar al ejemplo siguiente. La sección resaltada en azul contiene la información que se copia y se carga en Azure.

    Captura de pantalla en la que se muestra el archivo CER abierto en el Bloc de notas con los datos del certificado resaltados.

    Si el archivo no se parece al del ejemplo, suele ser porque no lo exportó con formato X.509 codificado en base 64 (.CER). Además, si desea utilizar un editor de texto diferente al Bloc de notas, debe comprender que algunos editores pueden introducir formatos no deseados en segundo plano. Esto puede crear problemas al cargar el texto de este certificado en Azure.

Exportación del certificado raíz autofirmado y clave privada para almacenarlo (opcional)

Puede que desee exportar el certificado autofirmado y almacenarlo de manera segura como copia de seguridad. Si es necesario, más adelante puede instalarlo en otro equipo y generar más certificados de cliente. Para exportar el certificado raíz autofirmado como archivo .pfx, seleccione el certificado raíz y use los mismos pasos descritos en Exportación de un certificado de cliente.

Exportación del certificado de cliente

Al generar un certificado de cliente, se instala automáticamente en el equipo que usó para generarlo. Si desea instalar el certificado de cliente en otro equipo cliente, debe exportar primero el certificado de cliente.

  1. Para exportar un certificado de cliente, abra Administrar certificados de usuario. De forma predeterminada, los certificados de cliente que ha generado se encuentran en "Certificates - Current User\Personal\Certificates". Haga clic con el botón derecho en el certificado de cliente que desee exportar y haga clic en Todas las tareas y en Exportar para abrir el Asistente para exportar certificados.

    Captura de pantalla en la que se muestra la ventana Certificados con Todas las tareas y Exportar seleccionados.

  2. En Asistente para exportar certificados, haga clic en Siguiente para continuar.

  3. Seleccione Exportar la clave privada y, después, haga clic en Siguiente.

    Captura de pantalla en la que se muestra Sí, exportar la clave privada seleccionado.

  4. En la página Formato de archivo de exportación, deje seleccionados los valores predeterminados. Asegúrese de que Incluir todos los certificados en la ruta de certificación si es posible esté seleccionada. Esta opción también exporta la información del certificado raíz que se requiere para una autenticación correcta del cliente. Sin ella, se produce un error de autenticación del cliente porque este no tiene el certificado raíz de confianza. A continuación, haga clic en Siguiente.

    Captura de pantalla de la página de formato del archivo para exportar.

  5. En la página Seguridad , debe proteger la clave privada. Si decide usar una contraseña, asegúrese de anotarla o de recordar la contraseña que estableció para este certificado. A continuación, haga clic en Siguiente.

    Captura de pantalla en la que se muestra la contraseña escrita y confirmada.

  6. En Archivo que se va a exportar, haga clic en Examinar para ir a la ubicación a la que desea exportar el certificado. En Nombre de archivo, asígnele un nombre al archivo de certificado. A continuación, haga clic en Siguiente.

  7. Haga clic en Finalizar para exportar el certificado.

Instalación de un certificado de cliente exportado

Cada cliente con una conexión P2S activa requiere que haya un certificado de cliente instalado en el entorno local. Para conocer los pasos para instalar un certificado, consulte Instalación de certificados de cliente.

Pasos siguientes

Continúe con los Pasos de Virtual WAN para las conexiones VPN de usuario.