Exercício: Criando Certificados Digitais com o OpenSSL



Documentos relacionados
Instrução para gerar CSR com OpenSSL

Manual de Comandos Úteis OpenSSL para Certificados Digitais

Instrução para Gerar CSR no OpenSSL SHA256

OpenSSL - Gerando CSR SHA256

de um certificado SSL na IPBrick.

Apache Gerando CSR em Linux SHA256

Geração de CSR para web-server Tomcat

Guia de Instalação e Configuração do Plugin de Sincronização versão 1.3

TomCat - Gerando CSR SHA256

Tópicos Especiais em Redes de Computadores. Certificado Digital (OpenSSL) Professor: Alexssandro Cardoso Antunes

Curso: Sistemas de Informação Disciplina: Criptografia e segurança de dados TUTORIAL PARA GERAÇÃO DE CERTIFICADOS DIGITAIS

Manual de Instruções para a Criação de Ficheiros CSR. Apache (OpenSSL)

Os exercícios desta prática devem ser executados no servidor espec.

Guia de instalação para ambiente de Desenvolvimento LINUX

Instrução para solicitação de Certificados Digitais de Servidor TomCat. SHA1024 e SHA2048

TUTORIAIS E PROCEDIMENTOS Exportando do IIS para Apache. Página 1 de 3. Comodo Brasil Tecnologia -

Configurando e-cpf no Portal Web do SARA - Versão Protheus

Configurar a validação da assinatura do pacote de IOx

Instrução para gerar CSR com Microsoft IIS

Para gerar a CSR é necessário que o usuário acesse o console de administração do Microsoft Internet Information Services.

Como criar uma solicitação de assinatura de certificado no CSS SCA

Passos Preliminares: Acessando a máquina virtual via ssh.

Sumário. Campus Universitário Darcy Ribeiro Av. L3 Norte Gleba A, SC 04 CEP Fone: +55 (61) Fax: +55 (61) unasus.gov.

Introdução ao Sistema. Características

9.2 MySQL A instalação do MySQL trata-se de um procedimento relativamente fácil, já que iremos realizá-lo utilizando so repositórios do Linux.

Prof. Roberto Franciscatto 4º Semestre - TSI - CAFW. Free Powerpoint Templates Page 1

SOLICITAÇÃO DE CERTIFICADO SERVIDOR TOMCAT

Guia para Configuração do Serviço VPN em Sistema Operacional Windows. Instalação do Cliente VPN Check Point Endpoint

Suporte ao Desenvolvedor:

Nesse artigo abordaremos os principais aspectos de instalação e uso do NTOP no Fedora Core 4.

Manual de Comandos Úteis OpenSSL para Certificados Digitais gerados com chave 2048 sha256

Roteiro para Solicitação e instalação de certificado digital para aplicação (Windows 2000)

Processo de solicitação do Certificado Digital. Comodo Brasil Tecnologia - Página 1 de 5

Manual de Instalação do Servidor Orion Phoenix Versão Novembro/2010

CGSI - Coordenação Geral de Segurança de Informações CMAS - Coordenação de Monitoração e Avaliação de Segurança de Informações

Configuração de DTI/CIMR

EN3611 Segurança de Redes Prof. João Henrique Kleinschmidt Prática Wireshark Sniffer de rede

Gerenciando certificados A1 fornecidos pelo ICB-Brasil no navegador Chrome sobre Linux

CGSI - Coordenação Geral de Segurança de Informações CMAS - Coordenação de Monitoração e Avaliação de Segurança de Informações

ACESSANDO O GITHUB E COMPARTILHANDO PROJETOS

Manual de Instruções para a Criação de Ficheiros CSR. Lync Server 2013

Linux Network Servers

EMISSÃO DE CERTIFICADO DIGITAL AC-JUS A1

Manual de Instruções para a Criação de Ficheiros CSR. Microsoft IIS 5/6

Você pode testar se está tudo OK, abrindo um navegador no Debian Linux e acessando qualquer site.

Configurando DDNS no Stand Alone

s editores de s Como configurar contas de nos principais Como configurar contas de s nos principais editores de s

Manual de Instalação e Configuração do SQL Express

NetEye Guia de Instalação

TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH!

EVILÁCIO RODRIGUES VIEIRA JUNIOR CONSTRUÇÃO DE REDE VPN ATRAVÉS DA FERRAMENTA OPENVPN

EverSafe Online Backup Manager

Configuração do servidor Apache com SSL no sistema operativo Windows 2000/XP. André P. Muga

Universidade Federal do Rio Grande do Norte

Instrução para Instalação de Certificados Digitais de Servidor Web

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

FTP Protocolo de Transferência de Arquivos

MSN-Proxy v0.7 no Debian 5 (Atualizado)

Configuração do cliente de Thunderbird para usuários DAC

MANUAL DE FTP. Instalando, Configurando e Utilizando FTP

MANUAL DE UTILIZAÇÃO DO GCD GERENCIADOR DE CERTIFICADOS DIGITAIS

OpenVPN-MultClient-Server_RV04

Segurança da Informação. Prof. Gleison Batista de Sousa

Manual de baixa do Certificado Digital AR SOLUTI. Versão 2.0 de 7 de Maio de Classificação: Ostensiva

Manual de baixa do Certificado Digital AR SOLUTI. Versão 2.0 de 22 de Maio de Classificação: Ostensiva

Estação Digital. Instalação do Gerenciador da Estação Digital

Configurando o IIS no Server 2003

Instalação da chave pública para o webmail do ICB

3º Exercício Prático: DNS

Manual de instalação Token/Cartão e baixa do Certificado Digital A3 AR Soluti - Goiânia. Versão 1.0 de 03 de Junho de Classificação: Ostensivo

PHP Material de aula prof. Toninho (8º Ano)

Como instalar o sistema operacional pfsense no Citrix Xen Server

Acessando o servidor WEB de licença Hesule. O seguinte procedimento descreve como logar no aplicativo de licença Hesule.

Manual para Exportação e Importação de Certificados Digitais

Conselho Geral da Ordem Dos Advogados Departamento Informático

Manual de Instruções para a Criação de Ficheiros CSR. Microsoft Exchange 2013

Para que o Educa Mobile seja disponibilizado para os alunos, responsáveis por alunos e/ou professores os passos abaixo devem ser seguidos:

Aqui estou novamente com um outro script, só que esse é bem mais funcional do que o ultimo que aqui postei.

Criptografar Conexões da Rede

Configuração do cliente de Outlook 2010 para usuários DAC

- Wireless e NTP - 272

Manual de Instalação da VPN

Guia para o Google Cloud Print

Passo a Passo da instalação da VPN

Instruções de Instalação do IBM SPSS Modeler (Licença Simultânea)

TREINAMENTO. Novo processo de emissão de certificados via applet.

Transcrição:

IFPB Disciplina: Segurança de Redes Professor: Dênio Mariz Exercício: Criando Certificados Digitais com o OpenSSL Preparativos iniciais Usaremos a ferramenta OpenSSL para gerar um par de chaves pública e privada e para gerar o certificado. Depois, disponibilizaremos o certificado digital criado para o servidor web Apache, para que ele seja capaz de se comunicar usando SSL. Para instalar o OpenSSL: apt-get install openssl Vamos criar um diretório para trabalhar. mkdir CA cd CA mkdir newcerts private O diretório CA irá conter: O certificado raiz do certificador (seremos um Certificate Authority (CA)) O banco de dados de certificados que assinaremos As chaves, pedidos de assinatura de certificados e certificados gerados O diretório CA/newcerts irá conter uma cópia de cada certificado que assinarmos. O diretório CA/private irá conter a nossa chave privada. O próximo passo é criar um banco de dados para os certificados que iremos assinar: echo '01' > serial touch index.txt Ao invés de usarmos o arquivo de configuração que vem com o OpenSSL, vamos usar um que já foi ajustado pelo professor. wget www.coinfo.cefetpb.edu.br/professor/denio/seg/openssl.cnf Exercício a Criando um par de chaves 1. Para criar uma chave privada, use o comando: openssl genrsa -des3 -out private/ca.key 1024 As opções indicam o seguinte: genrsa indica ao OpenSSL que voce quer gerar um par de chaves -des3 indica que a chave privada deve ser criptografada. Vai pedir uma password e vai cifrar o arquivo que contém a chave privada com o algoritmo 3DES (-aes128 usaria o algoritmo AES). -out indica onde salvar a chave privada 1024 indica o número de bits da chave gerada O resultado da execução é algo parecido com o mostrado abaixo. 625152 semi-random bytes loaded Generating RSA private key, 1024 bit long modulus...++++++...++++++ e is 65537 (0x10001) Enter pass phrase for private/ca.key: [DIGITE SUA PASSWORD] Verifying - Enter pass phrase for private/ca.key: [DIGITE SUA PASSWORD] Comentário: A proteção da chave privada é importante, mas implica que voce deve fornecer sua password toda vez que usá-la. Voce pode escolher não proteger sua chave privada com uma senha e deixar apenas as permissões do sistema operacional proibindo o acesso a outros usuários, mas se o sistema for comprometido (invadido) sua chave privada será IFPB Disciplina: Segurança de Redes Prof. Dênio Mariz 1

capturada e outras pessoas poderão se passar por voce. Caso deseje desproteger a chave, use o comando: openssl rsa -in CHAVE.key -out CHAVE.unsecure 2. No comando anterior, o arquivo private/ca.key foi gerado. Voce pode vê-lo com o comando: cat private/ca.key A chave privada se parece com o texto abaixo: -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,0947F49BB28FE5F4 jlqvt9wdr9vpg3wqt5+c3hu17buowvhp/r0+vimcbucrw85uqi2bjjkti1iwqq4c tytrhyjyop+a6jxt5bzdzzy/b7tjemdbospiwh2m4map+6wtbi1qr1pfdl3fxydr ZsuN08dkbw9ML6LOX5Rl6bIBL3i5hnGiqm338Fl52gNstThv0C/OZhXT3B4qsJn8 qzb3mc6u2nrap/npzpcex4lv2vh7ozhtu1tz7t0asspgpuh58dfhpw775kzdep2f LXA3Oeavg0TLFHkaFBUx2xaeEG6Txpt9I74aAsw1T6UbTSjqgtsK0PHdjPNfPGlY 5U3Do1pnU9hfoem/4RAOe0cCovP/xf6YPBraSFPs4XFfnWwgEtL09ReFqO9T0aSp 5ajLyBOYOBKQ3PCSu1HQDw/OzphInhKxdYg81WBBEfELzSdMFQZgmfGrt5DyyWmq TADwWtGVvO3pEhO1STmCaNqZQSpSwEGPGo5RFkyFvyvyozWX2SZg4g1o1X40qSg9 0FMHTEB5HQebEkKBoRQMCJN/uyKXTLjNB7ibtVbZmfjsi9oNd3NJNVQQH+o9I/rP wtfsjs+t7skrsfb2cxzqddlfzd6eba+5ytebgei1ljhcouea6p+ltphlwh/o1qun IKX2YKHA4ePrBzdgZ+xZuSLn/Qtjg/eZv6i73VXoHk8EdxfOk5xkJ+DnsNmyx0vq W53+O05j5xsxzDJfWr1lqBlFF/OkIYCPcyK1iLs4GOwe/V0udDNwr2Uw90tefr3q X1OZ9Dix+U0u6xXTZTETJ5dF3hV6GF7hP3Tmj9/UQdBwBzr+D8YWzQ== -----END RSA PRIVATE KEY----- 3. O OpenSSL permite visualizar detalhes da sua chave privada com o comando: openssl rsa -text -in private/ca.key more 4. Agora vamos gerar a chave pública com o comando abaixo: openssl rsa in private/ca.key pubout out CA.pub Exercício b Criando um certificado Raiz Agora nós temos um certificado Raiz e podemos criar vários certificados para outras pessoas (clientes) ou para várias aplicações SSL em diferentes servidores da nossa empresa. Ou seja, podemos fazer o papel de Autoridade Certificadora. O arquivo CA_RAIZ.pem contém o certificado raiz. 1. Para criar uma certificado raiz, use o comando: openssl req -new -x509 key private/ca.key -extensions v3_ca -out CA_RAIZ.pem -days 3650 As opções são as seguintes: -new -x509 pede para criar um novo certificado no formato X.509 -extensions v3_ca indica extensão necessária para criar um certificado raiz -days 3650 indica a validade do certificado (10 anos) -out indica o nome do arquivo que conterá o certificado A saída do comando conterá várias perguntas necessárias para a criação do certificado. Indique-as da seguinte forma: Enter pass phrase for private/ca.key: [DIGITE SUA PASSWORD] You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:BR State or Province Name (full name) [Some-State]:Paraiba Locality Name (eg, city) []:Joao Pessoa Organization Name (eg, company) [Internet Widgits Pty Ltd]:CEFET-PB Organizational Unit Name (eg, section) []:COINFO Common Name (eg, YOUR name) []:SEUNOMECOMPLETO Email Address []:SEUEMAIL IFPB Disciplina: Segurança de Redes Prof. Dênio Mariz 2

Comentário: Arquivos com extensão.pem usam o padrão Privacy-Enhanced Mail. No caso de um certificado, suas informações ficam entre "-----BEGIN CERTIFICATE-----" e "-----END CERTIFICATE-----". 2. Podemos visualizar o certificado com o comando: openssl x509 -in CA_RAIZ.pem -noout -text more Exercício c Criando um Pedido de Assinatura de Certificado (Certificate Signing Request - CSR) 1. Um Pedido de Assinatura de Certificado (CSR) é um conjunto de informações de um cliente que são enviados para um Certificate Authority (CA) para serem assinadas, ou seja, para que seja criado um certificado para esse cliente. Aqui, faremos o papel do cliente solicitante e também do certificador. Ou seja, geraremos um CSR e depois nós mesmo assinaremos. Normalmente, um cliente não é também um certificador e, nesses casos, ele enviaria o CSR para um certificador e receberia o certificado. 2. Assuma que somos um cliente e queremos criar um certificado para um site na web. Então vamos criar um pedido de assinatura de um certificado (CSR) para o site www.seunome.com.br com o comando: openssl req -new -nodes -out www.seunome.csr keyout www.seunome.key A saída do comando conterá várias perguntas necessárias para a criação do CSR. Indique-as da seguinte forma: Generating a 1024 bit RSA private key...++++++...++++++ writing new private key to 'www.seunome.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:BR State or Province Name (full name) [Some-State]:Paraiba Locality Name (eg, city) []:Joao Pessoa Organization Name (eg, company) [Internet Widgits Pty Ltd]:SEUNOME Organizational Unit Name (eg, section) []:Web Site Common Name (eg, YOUR name) []:www.seunome.com.br Email Address []:contato@seunome.com.br Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: (ENTER) An optional company name []:SEUNOME 3. O arquivo www.seunome.csr contém o CSR que deve ser enviado para o Certificador. O arquivo www.seunome.key contém a chave privada do cliente e deve ser mantida em segredo pelo cliente. 4. Para visualizar o pedido de certificado (CSR), use o comando: openssl req -in www.seunome.csr -text -verify -noout Exercício d Criando um Certificado a partir de um CSR (ou assinando um certificado) 1. Agora assuma que somos a autoridade certificadora e que recebemos o CSR do cliente (gerado no item anterior). Vamos criar o certificado para o cliente solicitante (www.seunome.com.br) com o comando: openssl ca out www.seunome.pem keyfile private/ca.key cert CA_RAIZ.pem config./openssl.cnf infiles www.seunome.csr As opções são as seguintes: IFPB Disciplina: Segurança de Redes Prof. Dênio Mariz 3

ca subcomando do openssl para geração de certificados -out o nome do certificado a ser gerado -keyfile indica o arquivo contendo a chave privada do certificador -cert indica o arquivo contendo o certificado raiz do certificador -config indica o nome do arquivo de configuração (com outras opções e defaults) -infiles os arquivos contendo os CSR a serem assinados A saída do comando mostrará informações sobre o certificado a ser gerado e pedirá confirmação para gerar o certificado. A saída é da seguinte forma: Using configuration from./openssl.cnf Enter pass phrase for privado/ca.key: Check that the request matches the signature Signature ok Certificate Details: Serial Number: 1 (0x1) Validity Not Before: Feb 4 15:30:50 2007 GMT Not After : Feb 4 15:30:50 2008 GMT Subject: countryname = BR stateorprovincename = Paraiba organizationname = SEUNOME organizationalunitname = Web Site commonname = www.seunome.com.br emailaddress = contato@seunome.com.br X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: BC:48:50:2C:4E:41:3C:53:B7:7A:21:00:1F:D2:66:09:A5:6A:5C:C3 X509v3 Authority Key Identifier: keyid:cb:4b:5a:33:32:66:a6:a1:0e:07:53:e0:e9:98:4e:cf:e4:f4:75:db DirName:/C=BR/ST=Paraiba/L=Joao Pessoa/O=CEFET- PB/OU=COINFO/CN=Jose Jubiraba/emailAddress=jjubiraba@gmail.com serial:f5:e1:ca:8e:66:e7:ef:a8 Certificate is to be certified until Feb 4 15:30:50 2008 GMT (365 days) Sign the certificate? [y/n]: [DIGITE y e ENTER] 1 out of 1 certificate requests certified, commit? [y/n] [DIGITE y e ENTER] Write out database with 1 new entries Data Base Updated 2. Este processo atualizou o banco de dados de certificados e produziu dois arquivos: a) o certificado www.seunome.pem e uma cópia dele no diretório newcerts. 3. Veja que o arquivo serial foi incrementado cat serial 4. Veja que o arquivo index.txt contém infomações sobre o certificado gerado cat index.txt 5. Veja que existe uma cópia do certificado no diretório newcerts. Os nomes das cópias acompanham as informações contidas em index.txt. ls l newcerts 6. Faça o comando abaixo para ver o arquivo www.seunome.pem gerado more www.seunome.pem Observe que o arquivo de certificado contém duas partes de informações: informações legíveis e não legíveis (depois de ----- BEGIN CERTIFICATE-----). Voce pode eliminar a parte legível com os comandos: IFPB Disciplina: Segurança de Redes Prof. Dênio Mariz 4

mv www.seunome.pem tmp.pem openssl x509 -in tmp.pem -out www.seunome.pem rm tmp.pem 7. Sempre que desejado, é possível visualizar o certificado gerado com o comando: openssl x509 -in www.seunome.pem text noout purpose more Exercício e Testando o Certificado 1. Vamos simular um servidor WWW usando o OpenSSL. Ele ficará escutando na porta 4433 uma conexão e estabelecerá uma conexão SSL quando um browser contactá-lo. openssl s_server cert www.seunome.pem www key www.seunome.key ATENÇÃO: Deixe o comando executando. Ele está no modo listening. 2. Agora abra um browser na mesma máquina e acesse o seguinte URL: https://localhost:4433. Voce pode acessar de um browser em outra máquina, usando a URL https://ip:4433, onde IP é o endereço IP do host que está rodando o openssl s_server. 3. Temos dois problemas com o certificado. Primeiro ele foi emitido por um certificador raiz desconhecido pelo browser. Segundo, ele foi emitido para www.seunome.com.br mas não está vindo desse site, mas do endereço localhost (ou IP) e, portanto, não combina com a finalidade do certificado. Então, o comportamento do browser varia ao lidar com uma situação dessas. No caso do Internet Explorer 7.0, a seguinte informação é mostrada: Voce tem a opção de fechar a página (não continuar com a conexão SSL) ou continuar, assumindo os riscos. No caso do Firefox, um aviso é mostrado mas o usuário pode examinar o certificado e aceitar o rejeitar. Veja abaixo: IFPB Disciplina: Segurança de Redes Prof. Dênio Mariz 5

4. Agora examine o certificado (se o browser permitir) e depois aceite o certificado. 5. Observe que o browser mostra informações sobre a conexão SSL. 6. Cancele a execução do comando openssl s_server com CTRL-C. Exercício f Recuperando certificados de outros sites 7. Agora vamos recuperar e analisar um certificado de algum site. Vamos escolher um site que use SSL (https), por exemplo, o Gmail do Google. Use o comando: echo quit openssl s_client connect mail.google.com:443 2>&1 sed ne "/BEGIN/,/END/p" > gmail.cert.pem 8. Aguarde o fim da execução do commando. Observe que o arquivo gmail.cert.pem contém um certificado codificado: cat gmail.cert.pem 9. Agora vamos ver o conteúdo do certificado que obtivemos: openssl x509 text in gmail.cert.pem noout more Exercício g Outros comandos interessantes do OpenSSL 10. Para fazer um benchmarking (teste de desempenho) do OpenSSL no seu computador, digite o comando: openssl speed FIM DO EXERCÍCIO Referências: 1. Debian Administration. Creating and Using a self signed SSL Certificates in debian. http://www.debian-administration.org/articles/284 2. Daniel Lopez. Setting Up a Secure Apache 2 Server. SAMS, 2002. http://www.samspublishing.com/articles/article.asp?p=30115&rl=1 3. Ralf S. Engelschall. mod_ssl 2.8 User Manual (Chapter 6: FAQ). http://www.modssl.org/docs/2.8/ssl_faq.html 4. Paul Heinlein. OpenSSL Command-Line HOWTO. http://www.madboa.com/geek/openssl/ IFPB Disciplina: Segurança de Redes Prof. Dênio Mariz 6