Cómo asignar un certificado de cliente a una cuenta de usuario de Windows

IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.

Haga clic aquí para ver el artículo original (en inglés): 203805
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Recomendamos encarecidamente que todos los usuarios actualizar a Microsoft Internet Information Services (IIS) versión 7.0 que se ejecutan en Microsoft Windows Server 2008. IIS 7.0 aumenta notablemente la seguridad de la infraestructura Web. Para obtener más información acerca de temas relacionados con la seguridad IIS, visite el siguiente sitio Web de Microsoft:Para obtener más información acerca de IIS 7.0, visite el siguiente sitio Web de Microsoft:
Resumen
En este artículo se explica cómo asignar un certificado de cliente a una cuenta de usuario de Windows NT. Cuando se hace esto, los recursos disponibles para el cliente de examinar el sitio Web vienen determinados por los permisos de esa cuenta de usuario en el Access Control Lists (ACL).
Más información
Para asignar un certificado de cliente a una cuenta de usuario, IIS debe tener acceso a un archivo que contiene el texto ASCII de dicho certificado. Porque esto no está disponible normalmente en el equipo IIS, ASP se utiliza para recuperar esa información desde el certificado y, a continuación, guardarlo en un archivo en el servidor.

El tema Obtener información de certificados de cliente con ASP de la documentación del producto Windows NT Option Pack explica cómo hacerlo. Sin embargo, una limitación de dicho código es que crea el mismo archivo para todos los certificados.

Para solucionar esto, el código ASP proporcionado en este artículo crea un archivo independiente para cada certificado para que un archivo correspondiente a cada cliente está disponible para IIS asignar a una cuenta de usuario.

Nota: Este código ASP anexa información del certificado al texto archivo cada vez que el certificado se utiliza para examinar el archivo ASP. A causa de esto, puede que desee tomar medidas para que esta información sólo se obtiene una vez. En caso contrario, el archivo de texto aumentará en tamaño indefinidamente. Para ello, utilice uno de los métodos siguientes:
  • Indique a los clientes sólo explorar al archivo ASP una vez, a fin de "iniciar" sus asignaciones. Después, debe ir directamente a los otros archivos utilizados en ese sitio Web o directorio, omitiendo el archivo ASP que crea el archivo de texto. -o bien -

  • Agregue código al archivo ASP para detectar si ya se ha creado un archivo de texto para el certificado.
Nota: Porque utilizan Secure Sockets Layer (SSL), que cifra y descifra todos los datos transmitidos, las páginas que requieren certificados (que utilizan el protocolo HTTPS seguro) se cargan más lentamente que las páginas que usan el protocolo HTTP no seguro.

  1. Crear un archivo ASP, que el cliente inicialmente se vaya a para proporcionar la información de cliente que se asignará a una cuenta de usuario. En el archivo ASP, agregue el siguiente código encima de la etiqueta <html>:
    <% @Language = VBScript %><% 'Response.Buffer = True %>						
  2. A continuación, agregue el siguiente código entre las etiquetas <body> y </body>.

    Nota: En el "conjunto outStream = fs.OpenTextFile…" línea, cambie la ruta de acceso del archivo al directorio que contendrá los archivos de texto en el servidor.
    <%  'Obtain client namecname = Request.ClientCertificate("SubjectCN")'Instantiate the ASP FileSystemObject in order to create a text fileSet fs = Server.CreateObject("Scripting.FileSystemObject")'Create text file using append mode. The client name is used to create the file name. Set outStream = fs.OpenTextFile( "c:\InetPub\wwwroot\ClientFiles\" & cname &".txt" , 8, True )'Save certificate issuer information to text fileoutStream.WriteLine( "# Issuer: " & Request.ClientCertificate("Issuer") )'Extract certificate subject (user) and account information'from certificate         su = Request.ClientCertificate( "Subject" )mx = len(su)         for x = 1 to mx  if mid(su,x,1)=chr(10) or mid(su,x,1)=chr(13) then    su=left(su,x-1)+";"+right(su,mx-x)       end if         nextoutStream.WriteLine( "# Subject: " & su )outStream.WriteLine( "# Account: " & Request.ServerVariables("REMOTE_USER"))'Extract encrypted certificate text from certificate; encode text as 64-bit data uue = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"outStream.WriteLine( "-----BEGIN CERTIFICATE-----" )cer = Request.ClientCertificate( "Certificate" )lcer = len(cer)         l = 0         for x = 1 to lcer step 3  a1 = asc(mid(cer,x,1))                if x+1 <= lcer then      a2 = asc(mid(cer,x+1,1))                        if x+2 <=lcer then          a3 = asc(mid(cer,x+2,1))                        else          a3 = 0                        end if                else      a2 = 0                      a3 = 0                end if    outStream.Write mid(uue, (a1 and 252)/4 +1 ,1)    outStream.Write mid(uue, (a1 and 3)*16 + (a2 and 240)/16 +1 ,1)    if x+1 <= lcer then      outStream.Write mid(uue, (a2 and 15)*4 + (a3 and 192)/64 +1 ,1)        if x+2 <= lcer then          outStream.Write mid(uue, (a3 and 63) +1 ,1)        else                              outStream.Write "="        end if                else                      outStream.Write "=="    end if                l = l +4                if l = 64 then      outStream.WriteLine("")                      l = 0                end if  next         if l > 0 then         outStream.WriteLine( "" )end if         outStream.WriteLine( "-----END CERTIFICATE-----" )       Response.Write "Client certificate information has been received and logged successfully<br>"%>						
  3. Guardar el archivo ASP en el sitio Web o directorio.
  4. Inicie el Administrador de servicio de Internet (ISM), que carga el complemento Internet Information Server para Microsoft Management Console (MMC).
  5. Haga clic con el botón secundario en el sitio Web o directorio que contendrá los archivos de texto de cliente y, a continuación, haga clic en Propiedades .
  6. En la ficha directorio (o Directorio principal ), asegúrese de que el permiso de acceso de escritura está activada. Esto permitirá que el archivo ASP crear los archivos de texto en ese directorio. Haga clic en Aceptar para volver a la consola de MMC.
  7. Crear e instalar a un par de certificado y clave de servidor en el equipo IIS.
  8. En la consola de MMC, haga clic con el botón secundario en el sitio Web o directorio donde se utilice asignación de certificado de cliente y, a continuación, haga clic en Propiedades . Haga clic en la ficha Seguridad de directorios .
  9. En la sección Comunicaciones seguras , haga clic en el botón Modificar .
  10. En el cuadro de diálogo Comunicaciones seguras , active la casilla de verificación Requerir canal seguro cuando se tiene acceso a este recurso y, a continuación, seleccione la opción Requerir certificados de cliente .
  11. Tener un cliente obtener un certificado de cliente de entidad emisora de certificados mismo (CA) que emitió el certificado del servidor.

    Nota: Para obtener información sobre cómo hacerlo con Certificate Server, vea el artículo siguiente en Microsoft Knowledge Base:
  12. Tiene el cliente busque el archivo ASP (que creó anteriormente para obtener información del certificado de cliente) mediante el protocolo HTTPS. Después de que el cliente haya examinando correctamente al archivo ASP mediante el certificado de cliente, se creará un archivo de texto correspondiente en el servidor.
  13. Active la casilla de verificación Habilitar asignación de certificados de cliente y, a continuación, haga clic en el botón Modificar .
  14. En la MMC, haga clic con el botón secundario en el sitio Web o directorio nuevo en y, a continuación, haga clic en Propiedades. Haga clic en la ficha Seguridad de directorios .
  15. En la sección Comunicaciones seguras , haga clic en el botón Modificar .
  16. En el cuadro de diálogo Comunicaciones seguras , active la casilla de verificación Habilitar asignación de certificados de cliente y, a continuación, haga clic en el botón Modificar .
  17. En la ficha básica , haga clic en el botón Agregar . Seleccione el archivo de texto creado para ese certificado de cliente y, a continuación, haga clic en el botón Abrir .
  18. Escriba un Nombre de asignación de descriptivo, seleccione la cuenta de usuario de Windows NT que el certificado de cliente deben asignarse a y, a continuación, proporcionan la contraseña de cuenta de usuario. Haga clic en Aceptar hasta regresar a MMC.
La próxima vez que el cliente se desplaza a un archivo en este sitio Web o directorio que requiere un certificado de cliente (mediante HTTPS), se registrarán con la cuenta de usuario asignada al certificado cliente.

Referencias adicionales

Para obtener más información vea los temas siguientes en la documentación del producto:
  • crear y administrar pares de claves servidor
  • obtener un certificado de servidor
  • habilitar certificados de cliente
  • asignación de certificados de cliente a cuentas de usuario
  • obtener información de certificados de cliente con ASP
Para obtener información adicional, consulte el siguiente artículo en Microsoft Knowledge Base:
218445Cómo configurar Certificate Server para su uso con SSL en IIS
(c) Microsoft Corporation 2000, reservados todos los derechos. Con la colaboración de por Kevin Zollman, Microsoft Corporation.

certsrv usuario nombre nombre de usuario wkz

Propiedades

Id. de artículo: 203805 - Última revisión: 02/07/2014 22:29:16 - Revisión: 4.2

Microsoft Internet Information Server 4.0

  • kbnosurvey kbarchive kbmt kbhowto KB203805 KbMtes
Comentarios
ERROR: at System.Diagnostics.Process.Kill() at Microsoft.Support.SEOInfrastructureService.PhantomJS.PhantomJSRunner.WaitForExit(Process process, Int32 waitTime, StringBuilder dataBuilder, Boolean isTotalProcessTimeout)