OpenSSL
Contents |
Introdução
Este guia foi elaborado para apresentar ao leitor o Secure Sockets Layer (SSL), protocolo do nível de aplicação e particularmente a implementação de SSL do OpenSSL. Após uma breve descrição do que é exatamente o OpenSSL e para que ele serve, o guia irá ilustrar o uso prático do OpenSSL em um ambiente cliente-servidor promovendo exemplos específicos de aplicações que podem beneficiar-se com o OpenSSL. Finalmente, o guia mostrará ao usuário exemplos de procedimentos requeridos para se usar o OpenSSL com o popular servidor de Hyper Text Transport Protocol (HTTP) Apache a fim de fornecer páginas web seguras para o seu computador Ubuntu.
Público-Alvo
Para implementar apropriadamente os passos práticos encontrados neste guia, o leitor deve ser um usuário do Ubuntu que esteja confortável com o uso de aplicações com linha de comando, usando o ambiente Bourne Again SHell (bash) e edição de arquivos de configuração de sistema com sua aplicação de edição de textos preferida. Mesmo que não seja requerida uma familiaridade prévia com Server Sockets Layer (SSL) ou uma implementação do OpenSSL em particular neste guia, adverte-se ao leitor a necessidade de aprendizado adicional das fontes listadas na seção Fontes deste guia a fim de ampliar o entendimento desta poderosa camada de segurança se desejado.
Sobre o OpenSSL
Secure Sockets Layer é um protocolo da camada de aplicação que foi desenvolvido pela Netscape Corporation com o propósito de transmitir informações sigilosas, como detalhes de Cartão de Crédito via Internet. SSL funciona usando uma chave privada para encriptar os dados transferidos pela conexão com SSL habilitado, frustrando assim a interceptação da informação. O mais popular uso do SSL está na conjunção de visualização web com HTTP, mas muitas aplicações de rede podem se beneficiar do uso do SSL. Convencionalmente, URLs que requerem uma conexão SSL iniciam com https: em vez do http.
O OpenSSL é uma robusta ferramenta de implementação do SSL de classificação comercial e relacionada a biblioteca de propósito geral baseada em SSLeay, desenvolvida por Eric A. Young e Tim J. Hudson. OpenSSL está disponível como um equivalente Open Source para implementação comercial do SSL através de estilo de licença Apache.
Sobre X.509
X.509 é uma especificação para certificados digitais publicados pela International Telecommunications Union - Telecommunication (ITU-T). Ela especifica informações e atributos requeridos para a identificação de uma pessoa ou sistema de computador e é usado para administração de segurança e distribuição certificados assinados digitalmente através de redes de internet seguras. OpenSSL mais comumente usa certificados X.509.
Uso Prático do OpenSSL
Instalando o OpenSSL
Alguns pacotes do Ubuntu instalam o OpenSSL como uma dependência, mas se você quisesse instalar o OpenSSL inicialmente ou suas bibliotecas use a seguinte sequência de comandos apt-get no seu terminal:
Instalando o Kit de Ferramentas do OpenSSL
Para instalar o kit de ferramentas binário do OpenSSL, instale os seguintes pacotes: openssl (ver Instalano Software).
Instalando a Biblioteca do OpenSSL
Para instalar a biblioteca OpenSSL general-purpose, primeiro determine a versão aplicável da biblioteca disponível para o seu Ubuntu com o seguinte comando em um prompt de terminal:
apt-cache search libssl | grep SSL
Você deve ver uma resposta ao comando parecida com a seguinte:
libssl0.9.6 - SSL shared libraries (old version) libssl-dev - SSL development libraries, header files and documentation libssl0.9.7 - SSL shared libraries
No exemplo acima, você provavelmente desejará instalar a biblioteca atual do OpenSSL, que aparece na saída como libssl0.9.7. Instale os seguintes pacotes libssl0.9.7 (ver Instalando Software).
Instalando a Biblioteca de Desenvolvimento do OpenSSL
Para construir software que requer a biblioteca de propósito geral OpenSSL, você precisa primeiro instalar a instância de desenvolvimento da biblioteca OpenSSL. Instale o seguinte pacote libssl-dev (ver Instalando Software).
Comandos Básicos de OpenSSL
A seção seguinte do guia apresenta alguns dos comandos mais básicos e parâmetros para comandos que fazem parte do kit de ferramentas do OpenSSL. Para informações adicionais, leia as várias páginas de manual do OpenSSL no sistema com o comando man e veja as informações apresentadas na seção Resources deste guia.
Determinando a versão instalada do OpenSSL:
openssl version
Lista de subcomandos disponíveis no OpenSSL:
openssl help
Obtenha informação de ajuda adicional sobre sub-comandos OpenSSL usando o comando openssl seguido pelo sub-comando, e a opção -h. Por exemplo, para obter informação adicional sobre o sub-comando openssl enc:
openssl enc -h
Lista todos os algoritmos de cifras disponíveis:
openssl ciphers -v
Você pode verificar a velocidade do seu computador com OpenSSL, medindo quantos bytes por segundo pode ser processada para cada algoritmo e o tempo necessário para assinar e verificar os ciclos, usando o seguinte comando: openssl speed
Certificados SSL
A seção seguinte deste guia apresentará os conceitos envolvidos na geração e uso de certificados SSL, tanto a variedade auto-assinada como aqueles assinados por um autoridade de certificação reconhecida, no uso com um servidor de aplicação que suporte SSL e o uso de certificados X.509 em aplicações clientes.
Certificados SSL para Uso em Servidor
Depois de ter gerado um X.509 devidamente compatível com certificado SSL, você pode optar por assinar o certificado ou por gerar uma Autoridade Certificadora (CA), você pode optar por ter uma Autoridade Certificadora reconhecida mundialmente ao assinar o certificado. Quando o certificado for assinado, ele estará pronto para ser usado com o kit de ferramentas OpenSSL ou a biblioteca para permitir conexões criptografadas SSL para um Lightweight Directory Access Protocol (LDAP) ou Hyper Text Transport Protocol (HTTP), por exemplo. Esta seção do guia descreve a geração do certificado e o processo de assinatura dos auto-assinados e certificados reconhecidos CA.
Gerando e Assinando Certificados Auto-Assinados
Certificados auto-assinados têm uma grande vantagem na medida em que são completamente livres para usar e podem ser gerados, assinados e usados em uma base conforme necessário. Certificados auto-assinados são grandes para o uso em ambientes de laboratório fechado ou para fins de testes. Uma das desvantagens do uso de certificados auto-assinados, são os avisos através do navegador web e outros aplicativos que serão gerados ao acessar servidores usando SSL com certificados auto-assinados, pois os certificados não são assinados com um reconhecimento mundial e nem a autoridade de certificação confiável , mas a importação do certificado raiz do servidor no aplicativo cliente, se possível, vai esmagar essas advertências como demonstrado mais adiante neste guia. Usar certificados auto-assinados em um ambiente de produção acessível ao público não é recomendado, devido às questões de confiança implícita e confusões para os usuários decorrentes destes avisos.
|
NOTA: Você deve obter um certificado assinado por uma Autoridade de Certificação reconhecida, a fim de criar um site comercial, por exemplo, para a realização de "e-commerce". |
Desde que você tenha instalado a ferramenta OpenSSL anteriormente ou com as instruções acima, a geração de certificados X.509 SSL é bastante simples. Para os certificados auto-assinados, primeiro você deve criar uma Autoridade Certificadora (CA) seguindo os passos abaixo:
Criação da Autoridade Certificadora
Em primeiro lugar, criar um ambiente de trabalho inicial, por exemplo, dentro do seu diretório home emitindo o seguinte comando em um terminal:
cd && mkdir -p myCA/signedcerts && mkdir myCA/private && cd myCA
O comando acima irá colocá-lo em um subdiretório recém-criado de seu diretório home chamado CA e dentro deste subdiretório você deve ter duas subpastas adicionais, chamadas signedcerts e private.
Dentro deste ambiente de trabalho inicial, o significado dos subdiretórios e seu conteúdo é o seguinte:
~/myCA : contém certificados CA, certificados de base de dados, certificados gerados, chaves e pedidos
~/myCA/signedcerts : contém cópias de cada certificado assinado
~/myCA/private : contém a chave privada.
Em seguida crie um certificado de base de dados no subdiretório ~/CA com o seguinte comando no terminal:
echo '01' > serial && touch index.txt
Agora crie um arquivo inicial caconfig.cnf adequado para a criação de certificados CA. Usando seu editor favorito, edite o arquivo ~/myCA/caconfig.cnf e insira o seguinte conteúdo no arquivo:
# My sample caconfig.cnf file. # # Default configuration to use when one # is not provided on the command line. # [ ca ] default_ca = local_ca # # # Default location of directories and # files needed to generate certificates. # [ local_ca ] dir = /home/<username>/myCA certificate = $dir/cacert.pem database = $dir/index.txt new_certs_dir = $dir/signedcerts private_key = $dir/private/cakey.pem serial = $dir/serial # # # Default expiration and encryption # policies for certificates. # default_crl_days = 365 default_days = 1825 default_md = md5 # policy = local_ca_policy x509_extensions = local_ca_extensions # # # Default policy to use when generating # server certificates. The following # fields must be defined in the server # certificate. # [ local_ca_policy ] commonName = supplied stateOrProvinceName = supplied countryName = supplied emailAddress = supplied organizationName = supplied organizationalUnitName = supplied # # # x509 extensions to use when generating # server certificates. # [ local_ca_extensions ] subjectAltName = DNS:alt.tradeshowhell.com basicConstraints = CA:false nsCertType = server # # # The default root certificate # generation policy. # [ req ] default_bits = 2048 default_keyfile = /home/<username>/myCA/private/cakey.pem default_md = md5 # prompt = no distinguished_name = root_ca_distinguished_name x509_extensions = root_ca_extensions # # # Root Certificate Authority distinguished # name. Change these fields to match # your local environment! # [ root_ca_distinguished_name ] commonName = MyOwn Root Certificate Authority stateOrProvinceName = NC countryName = US emailAddress = root@tradeshowhell.com organizationName = Trade Show Hell # [ root_ca_extensions ] basicConstraints = CA:true
|
ATENÇÃO: Certifique-se de ajustar obviamente os detalhes específicos no arquivo, como as duas instâncias de /home/<username>/, commonName, organizationName, etc, para personalizar o seu ambiente. Para obter mais informações sobre as diretivas contidas nesse arquivo de configuração, use o comando: man config |
Quando tiver editado o arquivo para se adequar ao seu ambiente, salve o arquivo como }.
Em seguida você precisa gerar o Certificado Authority Root Certificate e uma chave usando os seguintes comandos:
export OPENSSL_CONF=~/myCA/caconfig.cnf
O comando anterior apresenta uma variável de ambiente OPENSSL_CONF que força a ferramenta openssl a procurar um arquivo de configuração em um local alternativo (neste caso, ~/myCA/caconfig.cnf).
Gerar o Certificado CA e a chave com o seguinte comando:
openssl req -x509 -newkey rsa:2048 -out cacert.pem -outform PEM -days 1825
Deve ser solicitado uma senha, você verá também uma saída semelhante a essa:
Generating a 2048 bit RSA private key .................................+++ .................................................................................................+++ writing new private key to '/home/bshumate/myCA/private/cakey.pem' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: -----
|
CUIDADO: Não esqueça a senha usada com o comando acima! Você vai precisar cada vez que necessitar gerar ou assinar um novo servidor ou certificado cliente! |
O processo acima irá criar um certificado auto-assinado usando o formato PEM e RSA publico/privado de chave criptografada. O certificado terá validade por 1825 dias. A localização e função dos arquivos criados é a seguinte:
~/myCA/cacert.pem : CA certificado público
~/myCA/private/cakey.pem : CA chave privada
Criando um Certificado de Servidor Auto-Assinado
Agora que você já tem um certificado de autoridade configurado, você pode usar para assinar os certificados auto-assinados. Antes de começar os passos abaixo, você pode decidir se deseja ou não criptografar o Certificado de chave privada com uma senha. A vantagem de criptografar com uma senha é que você estará protegido caso seu Certificado seja roubado.
O certificado não pode ser usado com SSL habilitado para aplicações sem digitar a senha, toda vez que a aplicação com SSL seja iniciado. Esta condição, apesar de ser mais segura, pode apresentar um problema: Se o servidor for iniciado de forma autônoma, como no caso de um reinício do computador, ninguém vai estar disponível para digitar a senha e consequentemente o servidor não será iniciado . Uma forma de eliminar esta situação envolve um trade-off na segurança:
A chave pode ser decifrada, no entanto, para eliminar a necessidade de senha basta iniciar automaticamente, sem necessidade de digitar a senha.
Para gerar um Certificado auto-assinado para ser usado com um pedido de SSL, siga esse processo:
Crie o arquivo de configuração do servidor, editando ~/myCA/exampleserver.cnf com seu editor de texto favorito. Adicione o conteúdo desse exemplo:
# # exampleserver.cnf # [ req ] prompt = no distinguished_name = server_distinguished_name [ server_distinguished_name ] commonName = tradeshowhell.com stateOrProvinceName = NC countryName = US emailAddress = root@tradeshowhell.com organizationName = My Organization Name organizationalUnitName = Subunit of My Large Organization
Certifique-se de alterar os valores em server_distinguished_name especialmente o valor commonName. O valor commonName deve corresponder ao nome do host ou CNAME para o host que você deseja usar a chave. Se o commonName não coincide com o nome da máquina destinada, então host / certificados de incompatiblidade e erros aparecerá nas aplicações dos clientes que estão tentando acessar o servidor.
Uma vez que você editou o arquivo de forma apropriada, deve salvá-lo como ~/myCA/exampleserver.cnf. Gerar o certificado do servidor e chave com os seguintes comandos:
export OPENSSL_CONF=~/myCA/exampleserver.cnf
O comando anterior apresenta uma OPENSSL_CONF variável de ambiente que força a ferramenta openssl a procurar um arquivo de configuração em um local alternativo (nesse caso no, ~/myCA/exampleserver.cnf).
Agora vamos gerar o certificado e a chave:
openssl req -newkey rsa:1024 -keyout tempkey.pem -keyform PEM -out tempreq.pem -outform PEM
Deve ser solicitada a você uma senha e irá aparecer algo semelhante a isso:
Generating a 1024 bit RSA private key ...++++++ ...............++++++ writing new private key to 'tempkey.pem' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: -----
|
ATENÇÃO: Não esqueça a senha! |
A seguir, você pode traduzir chave privada temporária em uma chave sem criptografia, usando o seguinte comando:
openssl rsa < tempkey.pem > server_key.pem
Enter pass phrase: writing RSA key
Se você deseja deixar a chave criptografada com uma senha, basta renomear a chave temporária usando o seguinte comando em vez de seguir o passo anterior:
mv tempkey.pem server_key.pem
|
NOTA: Se você usar um servidor de chaves criptografadas com uma senha, a senha terá de ser introduzida sempre que o aplicativo de servidor usando a chave criptografada for iniciado. Isso significa que o aplicativo de servidor não irá iniciar a menos que alguém ou algo entrar na chave. |
Agora você precisa assinar o certificado de servidor com a Autoridade Certificadora (CA) de chave usando esses comandos:
export OPENSSL_CONF=~/myCA/caconfig.cnf
O comando anterior modifica a variável de abiente OPENSSL_CONF que obriga a ferramenta openssl a procurar um arquivo de configuração em um local alternativo (neste caso, ~/myCA/caconfig.cnf para voltar a configuração da CA).
Em seguida assinar o Certificado da seguinte forma:
openssl ca -in tempreq.pem -out server_crt.pem
Será solicitado a você a senha da chave CA que foi criada no Certificado de Autoridade anteriormente. Entre com a senha no prompt, e depois será solicitado que você confirme a informação exampleserver.cnf, e finalmente será solicitado a confirmação do Certificado. A saída deve ser semelhante a essa:
Using configuration from /home/bshumate/myCA/caconfig.cnf Enter pass phrase for /home/bshumate/myCA/private/cakey.pem: Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows commonName :PRINTABLE:'tradeshowhell.com' stateOrProvinceName :PRINTABLE:'NC' countryName :PRINTABLE:'US' emailAddress :IA5STRING:'root@tradeshowhell.com' organizationName :PRINTABLE:'Trade Show Hell' organizationalUnitName:PRINTABLE:'Black Ops' Certificate is to be certified until Jan 4 21:50:08 2011 GMT (1825 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated
Remova o certificado provisório e arquivos de chave com o seguinte comando:
rm -f tempkey.pem && rm -f tempreq.pem
Parabéns! Você tem agora um pedido de certificado de assinatura automática e a chave:
server_crt.pem : Server application certificate file
server_key.pem : Server application key file
Use a documentação fornecida com o aplicativo do servidor que deseja usar o certificado e a sua chave, desse modo você poderá usar corretamente. Veja a seção Configurando o Apache para suporte SSL logo abaixo para obter um exemplo de uso.
Etapa opcional para aplicativos de servidores
Algumas aplicações de servidor, como o aplicativo de servidor de correio IMAP exigem que a chave privada descriptografada seja anteposta ao certificado de servidor. Para isso basta digitar os seguintes comandos:
cat server_key.pem server_crt.pem > hold.pem mv hold.pem server_crt.pem chmod 400 server_crt.pem
Convertendo Certificados X.509 em PKCS#12 para Aplicações Cliente
Se você deseja gerar certificados PKCS#12 a partir do certificado X.509 em seu servidor Raiz CA para uso do cliente, você precisará usar o seguinte processo no servidor particular de certificado e um par de chaves que você deseja exportar para um certificado cliente:
Criar um único arquivo contendo tanto o certificado como a chave com o seguinte comando:
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem
A seguir, converter este arquivo de combinação certificado / chave no certificado PKCS#12 com o seguinte comando:
openssl pkcs12 -export -out mycert.pfx -in mycert.pem -name "Certificate for Whatever"
Você será solicitado para uma senha de Exportação, que você pode usar ou simplesmente deixar em branco.
O arquivo resultante mycert.pfx agora pode ser importado em aplicações tal como Web Browsers e clientes de E-Mail. Visto que este certificado representa o certificado Raiz CA de seu servidor, todos certificados subsequentes de nível de servidor assinado pelo certificado CA serão automaticamente aceitos pelos aplicativos cliente, que instala esta versão do certificado PKCS#12.
Geração de Certificado de Assinatura Reconhecido pela CA
A fim de executar um servidor de produção que participará de atividade comercial, tal como "e-commerce",é necessário para gerar um certificado e tê-lo assinado por uma Autoridade Certificadora (CA) reconhecida, tal como VeriSign. O processo de pedido para geração do certificado e obtenção de um certificado assinado por um CA reconhecido pode ser difícil. Você precisa completar todos requisitos de "Papelada" antes de criar um pedido de certificado e garantir que todas as informações requeridas são precisas.
Supondo que você não deseja uma frase-chave criptografada, digite o seguinte comando para gerar a chave privada e pedido de certificado:
openssl req -new -newkey rsa:1024 -nodes -keyout mykey.pem -out myreq.pem
Se você já tem uma chave que deseja usar, então use o seguinte comando:
openssl req -new -key mykey.pem -out myreq.pem
Você pode querer verificar a assinatura e as informações constantes do pedido de certificado. Verificar a assinatura com o seguinte comando:
openssl req -in myreq.pem -noout -verify -key mykey.pem
e verificar a informação com este comando:
openssl req -in myreq.pem -noout -text
Os próximos passos tipicamente envolvem colar o conteúdo do arquivo de solicitação de certificado no formulário de inscrição do CA's e aguardando o certificado. Além disso você deve proteger o arquivo de chave, uma vez que será obrigado a utilizar o certificado que você recebe do CA.
Usando Certificados PKCS#12 em Aplicativos Cliente
Esta seção do guia explica como usar certificados PKCS#12 para conexões SSL a partir do panorama cliente, demonstrando o processo de importação de certificados em aplicações Firefox Web Browser e alguns dos mais de populares clientes de E-Mail.
A importação de um certificado raíz em certas aplicações permitem uma conexão confiável criptografada com SSL para o servidor de onde veio o certificado, livre de mensagens sobre o certificado ser auto-assinado e assim por diante.
Importando um Certificado no Mozilla Firefox
A importação de um certificado PKCS#12 no navegador Mozilla Firefox é muito simples:
Dentro do Firefox, clique em Editar --> Preferências
Clique no ícone Avançado
Clique na guia Criptografia
Clique no botão Certificados
Clique no botão Importar
Navegue até o local do arquivo de certificado, que é tipicamente um arquivo do tipo .pfx
Selecione o arquivo do certificado e clique no botão Abrir
Neste momento poderá ser solicitado a você que informe a senha mestre do Firefox ou para definir uma senha mestre inicial. Digite a atual ou defina se necessário, confirme clicando em OK
Então você será solicitado a informar a senha do certificado de Exportação. Se não houver essa senha anexada ao certificado basta clicar em OK, caso contrário digite a senha e clique em OK
- Uma mensagem aparecerá avisando que o Firefox com "Restaurado com sucesso seu(s) certificado(s) de segurança e chave(s) privada"
Clique em OK
- Você terá importado com sucesso o certificado PKCS#12 do servidor no cliente Firefox
Importando um Certificado no Evolution
A importação de um certificado PKCS # 12 para o cliente de e-mail Evolution não poderia ser mais simples:
De dentro do Evolution, clique em Editar --> Preferências
Clique no ícone Certificados
Clique no botão Importar
Navegue até o local do arquivo de certificado, que é tipicamente um arquivo do tipo .pfx
Selecione o arquivo do certificado e clique no botão Abrir
Neste momento poderá ser solicitado a você que informe a senha do banco de dados do certificado do Evolution ou para definir uma senha incial do banco de dados do certificado. Digite a atual ou defina se necessário uma nova senha, confirme clicando em OK
Você então será solicitado a digitar a senha do arquivo PKCS12. Se não houver essa senha anexada ao certificado basta clicar em OK, caso contrário digite a senha e clique em OK
Você deverá ver o certificado e os detalhes aparecem na seção Seus Certificados na janela Configurações do Evolution
Clique no botão Fechar
- Você terá importado com sucesso o certificado PKCS#12 do servidor no cliente Evolution
Importando um Certificado no Mozilla Thunderbird
Importation of a PKCS#12 certificate into the Mozilla Thunderbird E-Mail client application is very simple:
De dentro do Thunderbird, clique em Editar --> Preferências
Clique no ícone Advanced
Clique no painel direito no item Certificados
Clique no botão Gerenciar Certificados
Clique no botão Importar
Navegue até o local do arquivo de certificado, que é tipicamente um arquivo do tipo .pfx
Selecione o arquivo do certificado e clique no botão Abrir
Neste momento poderá ser solicitado a você que informe a senha mestre do Thunderbird ou para definir uma senha mestre inicial. Digite a atual ou defina se necessário uma nova senha, confirme clicando em OK
Então você será solicitado a informar a senha de Exportação do Certificado. Se não houver essa senha anexada ao certificado basta clicar em OK, caso contrário digite a senha e clique em OK
- A message will appear advising that Thunderbird has "Successfully restored your security certificate(s) and private key(s)"
Clique em OK
- Você terá importado com sucesso o certificado PKCS#12 do servidor no cliente Thunderbird
Importando um Certificado no Banco de Dados no Nível de Sistema Autoridade Certificadora
Você pode importar um certificado CA no banco de dados do sistema de autoridades confiáveis de certificação. As aplicações que utilizam este banco de dados automaticamente armazenarão aqui os certificados de confiança.
1. Copie seu certificado para o diretório de certificado do sistema. Num terminal, digite:
$ sudo cp mycert.pem /usr/share/ca-certificates/mycert.crt
2. Edite o arquivo de configuração ca-certificates em /etc/ca-certificates.conf. Adicione o nome do arquivo copiado para /use/share/ca-certificates no topo da lista após a último "#". Por exemplo:
# This file lists certificates that you wish to use or to ignore to be # installed in /etc/ssl/certs. # update-ca-certificates(8) will update /etc/ssl/certs by reading this file. # # This is autogenerated by dpkg-reconfigure ca-certificates. # certificates shoule be installed under /usr/share/ca-certificates # and files with extension '.crt' is recognized as available certs. # # line begins with # is comment. # line begins with ! is certificate filename to be deselected. # mycert.crt brasil.gov.br/brasil.gov.br.crt cacert.org/cacert.org.crt mozilla/ABAecom_=sub.__Am._Bankers_Assn.=_Root_CA.crt [... many additional certificates omitted ...]
3. Atualize o banco de dados de certificados CA digitando:
$ sudo update-ca-certificates
4. Você importou com êxito seu certificado para o sistema de banco de dados de certificados CA.
Configurando o Apache para suporte SSL
Esta seção do guia irá descrever o procedimento de configuração do servidor HTTP Apache2 para fornecer conexões HTTPS usando OpenSSL. Isto é bastante simples e o processo também.
Instalar Apache 2
Instale o servidor HTTP Apache2, instalando o seguinte pacote apache2
Gerar um Certificado Servidor
O método simples de geração de certificado SSL auto-assinados para Apache 2 é fazer uso do shell script apache2-ssl-certificate que está incluso no pacote Apache2 no Ubuntu. Este shell script usa um arquivo de configuração específico (/usr/share/apache2/ssleay.cnf) e parâmetros para geração de um certificado auto-assinado parameters com nenhuma senha criptografada no elemento de chave. Para Para gerar um certificado Apache 2 com o script, basta usar o seguinte comando em um terminal:
sudo apache2-ssl-certificate
Responder todas as perguntas que são feitas e então você deve observar a criação de um arquivo apache.pem no diretório/etc/apache2/ssl.
Em seguida, você deve ativar o suporte SSL no pacote Apache 2 no Ubuntu executando o seguinte comando:
sudo a2enmod ssl
Você deve receber a seguinte saída do comando acima:
Module ssl installed; run /etc/init.d/apache2 force-reload to enable.
Agora configure as configurações de SSL para o Apache 2, criando um novo arquivo de configuração do ssl habilitadon do site e ajustando as localizações dos diretórios, conforme necessário para instâncias HTTP e HTTPS do Apache 2:
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl sudo ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/ssl
Edite /etc/apache2/sites-enabled/ssl e modifique a diretiva NameVirtualHost * para a forma:
NameVirtualHost *:443
e a diretiva VirtualHost * desta forma:
<VirtualHost *:443>
Adicione as duas seguintes linhas embaixo da linha <VirtualHost *:443>:
SSLEngine On SSLCertificateFile /etc/apache2/ssl/apache.pem
Você também pode configurar as diretivas DocumentRoot e Directory quando necessário.
Edite /etc/apache2/sites-enabled/default
Edite /etc/apache2/sites-enabled/ssl e modifique a diretiva NameVirtualHost * para a forma:
NameVirtualHost *:80
e a diretiva VirtualHost * desta forma:
<VirtualHost *:80>
Você também pode configurar as diretivas DocumentRoot e Directory quando necessário.
Edite /etc/apache2/ports.conf e adicione a linha:
Listen 443
embaixo da linha existente Listen 80.
Recarregue Apache 2 de modo que as novas configurações de diretivas entre em vigor, com o comando:
sudo /etc/init.d/apache2 force-reload
Agora você deve ter um funcional servidor HTTP/HTTPS Apache2 com SSL habilitado.
Redirecionando o tráfego HTTP para HTTPS
Se você quer forçar os usuários a usar HTTPS, você pode redirecionar todo o tráfego HTTP para o site HTTPS. Este é um grande método porque é transparente para os usuários e eles não tem que fazer nada diferente.
Primeiro você deve habilitar a URL reescrevendo suporte para o pacote Apache 2 no Ubuntu executando o seguinte comando:
sudo a2enmod rewrite
Depois você deve receber a seguinte mensagem após executar o comando acima:
Module rewrite installed; run /etc/init.d/apache2 force-reload to enable.
Em seguida edite /etc/apache2/sites-enabled/default, e adicione as seguintes tres linhas abaixo da linha <VirtualHost *:80> :
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Agora recarregue o Apache 2, de modo que as directivas da nova configuração entrem em vigor, com o comando:
sudo /etc/init.d/apache2 force-reload
Está tudo feito! Usuários que forem para o HTTP (porta 80) serão redirecionados para HTTPS e todo o tráfego será criptografado.
Fontes
Abaixo aparecem fontes adicionais pertinentes a OpenSSL e Secure Sockets Layer.
Recursos Locais do Sistema
man config |
Página do manual do sistema para configuração de arquivos da biblioteca OpenSSL |
man gendsa |
Página do manual do sistema para o gerador de chave privada DSA gendsa |
man genrsa |
Página do manual do sistema para o gerador de chave privada RSA genrsa |
man openssl |
Página do manual do sistema para a ferramenta de linha de comando openssl |
man rand |
Página do manual do sistema para o utilitário gerador de byte pseudo-aleatório rand |
man x509 |
Página do manual do sistema para utilitário de exibição de assinatura e certificado x509 |
Fontes
Fonte: OpenSSL Website |
Tradução de Documento
Tradutor (es): Gustavo Brandao |
Data: 26/05/10 |
Mantenedor (es): Gustavo Brandao |
OpenSSL (last edited 2011-09-19 23:19:13 by localhost)