ID do artigo: 216829 - Última revisão: quinta-feira, 23 de junho de 2005 - Revisão: 3.2

Como escrever um certificado de autenticação de cliente para um arquivo no IIS 4.0

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
É altamente recomendável que todos os usuários atualizem para Microsoft (IIS) versão 6.0 em execução no Microsoft Windows Server 2003. O IIS 6.0 aumenta significativamente a segurança de infra-estrutura da Web. Para obter mais informações sobre tópicos relacionados à segurança do IIS, visite o seguinte site:
http://www.microsoft.com/technet/security/prodtech/IIS.mspx (http://www.microsoft.com/technet/security/prodtech/IIS.mspx)
Expandir tudo | Recolher tudo

Sumário

Às vezes pode ser útil armazenar um certificado de chave pública para uso futuro. O seguinte código ASP leva o cliente de certificado de autenticação fornecido pelo cliente e gravações ele em um arquivo chamado c:\Cert.txt.

Para que isso funcione, você deve primeiro configurar um diretório virtual para usar SSL e exigem um certificado de autenticação de cliente. Você pode analisar o certificado usando a ferramenta CERTUTIL que vem com o Windows NT Option Pack. Para obter mais informações sobre como fazer isso, consulte o seguinte artigo na Base de dados de Conhecimento da Microsoft:
216830  (http://support.microsoft.com/kb/216830/EN-US/ ) IIS: Como visualizar o conteúdo de um certificado
Este é o código ASP necessário para que isso funcione:

<% @Language = VBScript %>
<% Response.Buffer = True %>
<HTML>
<BODY> 
<% 
	'Instantiate the ASP FileSystemObject in order
	'to create a text file
	Set fs = Server.CreateObject("Scripting.FileSystemObject")

	'Create text file using append mode
         Set outStream = fs.OpenTextFile( "C:\cert.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>"
 %>
</BODY> 

				

A informação contida neste artigo aplica-se a:
  • Microsoft Internet Information Server 4.0
Palavras-chave: 
kbmt kbhowto KB216829 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 216829  (http://support.microsoft.com/kb/216829/en-us/ )