FAQ: Uso de e-CPF ou e-CNPJ para autenticação de aplicações

A algum tempo que atualizo e mantenho atualmente no MSDN um documento de como utilizar certificados digitais na autenticação de clientes (http://msdn.microsoft.com/pt-br/library/ee923720.aspx).

Porem, neste artigo abordamos a autenticação utilizando certificados emitidos pelo próprio cliente com uma CA seja no Windows 2003 ou no Windows 2008 (para as diferentes versões do Windows veja o link http://www.marcelosincic.com.br/blog/page/Artigos-e-Apostilas.aspx.

Recebo semanalmente perguntas e dúvidas sobre como utilizar o e-CNPJ e o e-CPF para fazer a autenticação e resolvi fazer este post em forma de FAQ das principais perguntas que recebo.

1. É necessário ter um certificado de autoridades públicas para autenticar e-CPF ou e-CNPJ?

Resposta: É necessário ter um certificado válido para instalar no seu IIS. Nos artigos acima a raiz certificadora (CA) não é válida na internet e a CRL muitas vezes está em um ambiente interno. Esta característica faz com que o browser não reconheça a CA ou não acesse a CRL e rejeite o certificado com a mensagem de erro devida. Como o browser não validou o certificado do servidor, ele não irá solicitar para o cliente o certificado dele.

2. Este certificado tem que ser emitido por uma certificadora vinculada ao ICP-Brasil (SERASA, CertiSign, CEF e outras) para autenticar e-CPF ou e-CNPJ?

Resposta: Teoricamente não, mas é preferencial. O problema de utilizar uma certificadora não vinculada a raiz do ICP-Brasil é que a autoridade não estará na lista de confiança, e mesmo podendo ser adicionada manualmente (veja questões abaixo) em alguns casos pode ocorrer a leitura parcial do certificado.

3. Eu tenho um e-CPF ou e-CNPJ e o meu servidor é certificado pela ICP-Brasil e mesmo assim não solicita o meu certificado. Porque?

Resposta: Você precisa montar a lista de autoridades certificadoras para que o certificado seja aceito e o motivo é que o ICP-Brasil não é um único emissor nem um único CA (veja questões abaixo). Para montar a lista de certificadoras aceitas verifique no documento do MSDN no inicio do post.

4. Alguns cartões ou tokens são aceitos e outros não, o que está acontecendo?

Resposta: O ICP-Brasil apresenta duas características que podem causar isso. A primeira é que a cadeia dos certificados é, por exemplo, “Autoridade Certificadora Brasileira –> Secretaria da Receita Federal (RFB) –> SERASA” e você irá precisar colocar o primeiro nível como “Autoridades Raiz Confiáveis” e as duas seguintes como “Autoridades Intermediarias Confiáveis” (veja como na continuação das perguntas).
O outro problema é que existem duas “Autoridade Certificadora Brasileira” que é o nome apenas e outras com “v1”. Ou seja, cartões e tokens emitidos antes de 2009 utilizam o certificado da primeira versão e os mais atuais da “v1” que é a mais recente. Portanto você precisará instalar os dois como raízes confiáveis.

5. Mesmo colocando os dois “Autoridade Certificadora Brasileira” na lista de confiáveis o token não aparece. Porque?

Resposta: Não é apenas a raiz que tem variações, mas também os certificados intermediários, que podem ser a “Secretaria da Fazenda”, “Receita Federal”, “SERAZA”, “CertiSign”, etc. Você precisa colocar estes como “Autoridades Intermediárias Certificadoras Confiáveis” (como encontrar todas elas veja perguntas abaixo).

6. Como incluo as raízes e intermediárias do ICP-Brasil no meu servidor?

Resposta: Abra o MMC e adicione o snap-in “Certificados” mas note que não “Usuário” e sim “Computador”. Não basta apenas dar duplo clique no arquivo “cer” para incluir, porque neste caso você estaria incluindo no usuário e não na máquina. Após incluir o snap-in clique com o botão direito nos locais e use a opção “Importar”. Veja na imagem abaixo onde deve ser incluído os certificados raízes “Autoridade Certificadora Brasileira” e os intermediários “Serasa”, “Certisign”, “RFB”, etc:

image

 

7. Onde encontro a lista com todos os certificadores e os certificados emitidos por eles?

Resposta: Utilize este endereço: http://www.iti.gov.br/twiki/bin/view/Certificacao/RepositoriodaACRaiz que contem as informações de todos os certificados existentes tanto as duas raízes quanto suas intermediárias. Note que indica quais os tipos de certificados e no caso do ICP-Brasil são A1 e A3.

8. No Internet Explorer e no Chrome funcionou logo na primeira vez e no Firefox não, o que acontece?

Resposta: O IE e o Chrome já possuem o ICP-Brasil na lista de autoridades, já o Firefox até hoje não implementou (http://br.mozdev.org/drupal/2008/07/icp-brasil-deve-ser-adicionado-ao-firefox) e é necessário fazer manualmente. No post da Mozilla ou no do ITI na pergunta anterior siga as instruções, lembrando que deve ser feito no cliente. Porem, note que o aplicativo do leitor do cartão normalmente tem a opção para fazer essa inclusão de forma automática.

9. Como leio os dados do certificado alem do “subjet” citado no artigo do MSDN?

Resposta: Utilizando o código abaixo é possivel ler os dados em uma aplicação Windows Form, basta converter o “Request.Certificate” que consta no artigo para o tipo X509Certificate2:

System.Security.Cryptography.X509Certificates.X509Store Lista =
    new System.Security.Cryptography.X509Certificates.X509Store();
Lista.Open(System.Security.Cryptography.X509Certificates.OpenFlags.IncludeArchived);
for (int Contador = 0; Contador < Lista.Certificates.Count; Contador++)
{
    System.Security.Cryptography.X509Certificates.X509Certificate2 Certificado = Lista.Certificates[Contador];
    MessageBox.Show(Certificado.ToString());
    string Dados = Certificado.Subject;
    listBox1.Items.Add(Dados);
    if (Dados.IndexOf("e-CPF") > 0 || Dados.IndexOf("e-CNPJ") > 0)
    {
        Dados = Dados.Remove(0, Dados.IndexOf(":") + 1);
        Dados = Dados.Remove(Dados.IndexOf("OU=") - 2);
        listBox1.Items.Add("e-CPF/e-CNPJ = " + Dados);
    }
}

 

Espero ter respondido as principais perguntas, e caso surjam novas vou atualizando este post.

System Center Configuration Manager 2012 - Parte II

Veja a parte I: http://www.marcelosincic.com.br/blog/post/System-Center-Configuration-Manager-vNext-Parte-I.aspx

Neste segundo post vou começar a descrever as mudanças que ocorreram na primeira tab do console administrativo, que se chama "Administration". Note que as configurações nos itens de configuração não sofreram mudanças significativas em relação ao SCCM 2007, pelo menos na parte de administração.

Basicamente este grupo de funções substitui a hierarquia do site do SCCM 2007 e mostra de forma muito organizada as diferentes configurações do ConfigMgr. As opções são separadas em:

  • Site Hierarchy - Configurações de Boundary do ambiente, Address e Senders
  • Site Operations - Configuração das features dos servidores, lista de servidores, dados de cada site
  • Client Agent Settings - Configurações default dos agentes (clique direito) e especificas por grupo (Ver parte I)
  • Alert Manager - Destaque para os alertas ativos do sistema de monitoração do Site System
  • Distributions Point - Gerencia os diferentes distribuidores
  • Distributions Pont Groups - Cria e gerenciar os grupos de distribuição
  • Migration - Concentra as opções que são relativas as versões anteriores (SMS 1 e 2)

 
Interface principal de Administração

Alguns destaques alem dos já mencionados na parte I é a facilidade de encontrar as configurações. Porem, alem disso a redistribuição ficou muito boa.

Um dos exemplos notáveis é na parte de configurações dos diferentes sites de sua hierarquia. No SCCM era necessário entrar em cada site para configurar e ver as o~pções de cada um, em uma interface que muitas vezes ficava confusa. Note na imagem acima que para ver as diferentes configurações de cada site existe um sistema com botões no rodapé que utiliza o quadro de detalhes no meio da página para mostrar as configurações. Basta clicar sobre o item desejado e configurar as opções relativas a ele.

Também ficou muito interessante a configuração dos componentes. Antes havia na árvore o item "Component Configuration" dentro de cada site para configurar os diversos componentes. Agora esta opções está embutida nas propriedades do site, como mostra a figura abaixo:


Nova interface de propriedades do Site com as configurações de Componentes

O mesmo se dá com a parte das configurações de segurança que agora ficaram muito mais simples na árvoce "Security" com interfaces muito similares as do SQL Server para dar premissões, não mais é necessário ficar selecionando as permissões em uma lista com opções individuais. Na nova interface as permissões são mostradas com o checkbox de seleção para as desejadas. O mesmo vale para os security scopes que também estão mais simples.

Mas um item que ficou excelente, bem como a interface de configuração dos sites, e merece destaque é a configuração de distribuidores e grupos. Como agora possuem uma árvore de menu própria se tornou mais simples listar os servidores e utilizando o Task Panel lateral incluir um servidor em um ou mais grupos simultaneamente.

Porem, uma interessante feature nos grupos de distribuição é a possibilidade de escolher os grupos por meio de uma coleção. Não será mais necessário incluir um servidor nos grupos, bastaria criar uma coleção e vincular ao grupo de distribuição e automaticamente ele fará parte do grupo !!!!


Nova interface para criação de Distribution Point Groups

Estas são as principais mudanças que encontrei na parte de "Administration" da nova interface. No próximo post irei abordar as mudanças na parte "Monitoring", depois "Assets and Compliance" e por último "Software Library", já que este demanda mais tempo para mapear as melhorias.

Veja a parte III: http://www.marcelosincic.com.br/blog/post/System-Center-Configuration-Manager-vNext-Parte-III.aspx

System Center Configuration Manager 2012 - Parte I

A algumas semanas havia comentado a disponiblidade para usuários Beta da primeira versão disponibilizada para a comunidade técnica (http://www.marcelosincic.com.br/blog/post/System-Center-Configuration-Manager-vNext.aspx). Vou começar uma série de posts sobre a minha primeira impressão do ConfigMgr vNext.

1. Instalação

A instalação foi muito tranquila, unica restrição foi que não instalou no SQL Server 2008 R2. Antes instalar o SCCM precisei baixar o arquivo instalador full do .NET 4.0 já que no Windows 2008 a versão nativa é a 3.5. A ferramente PreReq funcionou muito bem (exceto pelo SQL R2) e forneceu os caminhos necessários para instalar os componentes faltantes, como já era no SCCM SP2.

Algo que me impressionou no processo foi a rapidez, na mesma maquina que instalei o vNext eu havia instalado anteriormente o SCCM SP2+R3 para o webcast e a instalação do vNext foi muito rápida e limpa.

2. Interface Visual

Finalmente temos uma interface sem o tradicional tree view com divisões que até os mais experientes reclamavam do chamado "caminho de rato" necessário para configurar uma determinada feature. A nova interface segue o modelo do Operations Manager (SCOM) e ficou muito organizada, alem de agrupar configurações em telas unicas, como por exemplo, as configurações dos agentes.

Seguem as telas iniciais e algumas das funcionalidades que achei bem interessantes:

 
Ferramenta de gerenciamento, com os paineis laterais com os agrupamentos e tarefas comuns e no meio o caminho para as tarefas em cada grupo

 


Nova interface para configuração dos agentes, agora simplificado em uma única tela

3. Configurações de Agentes customizadas

Essa é uma novidade que faz a diferença e já era esperada no R2 ou R3 e não havia sido ainda implementada.

Hoje quando se faz a configuração dos agentes não é possivel definir o grupo especifico e agora no vNext sim, ou seja, podemos ter agentes de inventário rodando semanalmente no departamento de marketing e mensalmente na produção.

Seguem abaixo as telas para definição de agentes customizados:


Criação de uma politica de agentes customizada

 
Para as politicas customizadas é possivel indicar para quais grupos ou coleções ela será aplicada

4. Instalação do Client

Assim como a rápida e limpa instalação do servidro, o mesmo aconteceu para o cliente que instalou na minha VM que é um Windows 2008 R2 Domain Controller. Falo isso porque até então instalar o cliente do SCCM em um DC rodando W2K8 R2 era uma tarefa complicada (http://www.marcelosincic.com.br/blog/post/Instalando-Client-do-Configuration-Manager-no-Windows-2008-R2-(Domain-Controller).aspx).

A performance dos inventários foi excelente, bem como a leitura das definições. Em menos de 5 minutos após instalado já estava com as features habilitadas e em 7 minutos completou os inventários.

Bastou ir até a pasta Client no share, que aliás manteve exatamente as mesmas estruturas do ConfigMgr 2007, e executar o CCMEXEC. Note que o cliente não mudou a aparencia, mas agora ele é totalmente compativel com Windows x64 e inclui as novas funcionalidades também presentes no R3 como Power Management. Apenas o nome dos agentes mudou para indicar que são da versão nova:


Interface do Client indicando que executa os agentes do vNext

Já está disponivel a parte II (Administração) em http://www.marcelosincic.com.br/blog/post/System-Center-Configuration-Manager-vNext-Parte-II.aspx