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

Seleccione idioma Seleccione idioma
Id. de artículo: 203805 - Ver los productos a los que se aplica este artículo
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:
http://www.microsoft.com/technet/security/prodtech/IIS.mspx
Para obtener más información acerca de IIS 7.0, visite el siguiente sitio Web de Microsoft:
http://www.iis.net/default.aspx?tabid=1
Expandir todo | Contraer todo

En esta página

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 name
    cname = Request.ClientCertificate("SubjectCN")
    
    'Instantiate the ASP FileSystemObject in order to create a text file
    Set 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 file
    outStream.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         
    next
    outStream.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.

Propiedades

Id. de artículo: 203805 - Última revisión: viernes, 7 de febrero de 2014 - Versión: 4.2
La información de este artículo se refiere a:
  • Microsoft Internet Information Server 4.0
Palabras clave: 
kbnosurvey kbarchive kbmt kbhowto KB203805 KbMtes
Traducción automática
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

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com