OpenSSL

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.

Icones/importante.png

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

Icones/importante.png

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 ~/myCA/caconfig.cnf}.

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:
-----

Icones/importante.png

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:
-----

Icones/importante.png

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

Icones/importante.png

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:

  1. Dentro do Firefox, clique em Editar --> Preferências

  2. Clique no ícone Avançado

  3. Clique na guia Criptografia

  4. Clique no botão Certificados

  5. Clique no botão Importar

  6. Navegue até o local do arquivo de certificado, que é tipicamente um arquivo do tipo .pfx

  7. Selecione o arquivo do certificado e clique no botão Abrir

  8. 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

  9. 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

  10. Uma mensagem aparecerá avisando que o Firefox com "Restaurado com sucesso seu(s) certificado(s) de segurança e chave(s) privada"
  11. Clique em OK

  12. 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:

  1. De dentro do Evolution, clique em Editar --> Preferências

  2. Clique no ícone Certificados

  3. Clique no botão Importar

  4. Navegue até o local do arquivo de certificado, que é tipicamente um arquivo do tipo .pfx

  5. Selecione o arquivo do certificado e clique no botão Abrir

  6. 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

  7. 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

  8. Você deverá ver o certificado e os detalhes aparecem na seção Seus Certificados na janela Configurações do Evolution

  9. Clique no botão Fechar

  10. 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:

  1. De dentro do Thunderbird, clique em Editar --> Preferências

  2. Clique no ícone Advanced

  3. Clique no painel direito no item Certificados

  4. Clique no botão Gerenciar Certificados

  5. Clique no botão Importar

  6. Navegue até o local do arquivo de certificado, que é tipicamente um arquivo do tipo .pfx

  7. Selecione o arquivo do certificado e clique no botão Abrir

  8. 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

  9. 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

  10. A message will appear advising that Thunderbird has "Successfully restored your security certificate(s) and private key(s)"
  11. Clique em OK

  12. 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

Tradução de Documento

Tradutor (es): Gustavo Brandao

Data: 26/05/10

Mantenedor (es): Gustavo Brandao

Time de Documentação do Ubuntu Brasil


CategoryDocumentacao CategoryRevisada

OpenSSL (last edited 2011-09-19 23:19:13 by localhost)