você está aqui: Home  → Arquivo de Mensagens

Gerar certificado SSL auto-assinado para uso no Apache 2 em servidores GNU-Linux

Colaboração: Mário Jorge Limeira dos Santos

Data de Publicação: 20 de julho de 2016

Essa dica se destina principalmente ao administrador de rede/servidores que deseja disponibilizar páginas/conteúdo web de forma segura/criptografada na sua rede local e não deseja para isso adquirir um certificado digital SSL de uma empresa/autoridade certificadora.

O procedimento foi testado no Ubuntu Server 12.04 e 14.04 com as versões 2.2.22 e 2.4.7 do Servidor Web Apache. Deve funcionar no Debian e seus derivados e também em outras distros GNU-Linux, apenas adaptando a localização do diretório de configuração do servidor apache e a forma de gerenciamento do serviço.

Para realizar o procedimento é necessário acesso de root ou um usuário com privilégios sudo e ter previamente o servidor web Apache2 e o pacote openssl instalados no seu servidor.

Caso não esteja habilitado, habilite o módulo ssl do Apache com o comando:

  # a2enmod ssl

Reinicie o apache:

  # service apache2 restart

Dentro do diretório de configuração do apache, /etc/apache2, crie uma pasta chamada ssl caso não exista:

  #  mkdir ssl

Para fins de organização, crie as pastas certs e private dentro da pasta ssl:

  # mkdir ssl/certs ssl/private

Dentro do pasta ssl gere uma chave privada de 2048 bits:

  # openssl genrsa -des3 -out nomedachavecomsenha.key 2048

Será solicitada uma senha duas vezes.

Use a chave recém-criada para criar um pedido de certificado:

  #  openssl req -new -key nomedachavecomsenha.key -out  nomedachave.csr

Serão solicitadas algumas informações:

  1. A senha que foi inserida para a chave anteriormente criada;
  2. o codigo do País com duas letras;
  3. nome do estado;
  4. nome da cidade;
  5. Nome da organização/instituição;
  6. Nome da unidade da organização/instituição;
  7. Common Name; (Esse é o campo mais importante onde se deve colocar o nome ou o IP do seu servidor/domínio);
  8. Endereço de e-mail;
  9. Outros atributos extras opcionais;

Execute o comando abaixo para gerar uma nova chave sem uma senha:

  # openssl rsa -in nomedachavecomsenha.key -out nomedachavesemsenha.key

Será solicitada a senha da chave novamente.

Use este comando para criar o seu certificado auto-assinado:

  # openssl x509 -req -in nomedachave.csr -days 365 -signkey nomedachavesemsenha.key -out nomedocertificado.crt

Ainda dentro da pasta ssl copie a chave e o certificado para as pastas adequadas:

  # cp nomedocertificado.crt certs/  ; cp nomedachavesemsenha.key private/

Vá para a pasta sites-available dentro da pasta do apache e com o editor da sua preferência edite o arquivo de configuração do site ssl, no meu caso o arquivo default-ssl.conf (em versões mais antigas do apache esse arquivo deve se chamar apenas default-ssl, sem o .conf),

Comente as seguintes linhas (acrescentando no início da linha o caractere #):

  #SSLCertificateFile     /etc/ssl/certs/ssl-cert-snakeoil.pem
  #SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

E adicione as linhas com os caminhos para os seus certificados:

  SSLCertificateFile /etc/apache2/ssl/certs/nomedocertificado.crt
  SSLCertificateKeyFile /etc/apache2/ssl/private/nomedachavesemsenha.key

Ative o site default-ssl:

  # a2ensite default-ssl

Reinicie ou recarregue o apache:

  # service apache2 restart

ou

  # service apache2 reload

Agora no seu navegador web é só acessar o seu site com https://enderecodoseuservidor e conferir que ele está usando o seu certificado auto-assinado.

Mário Jorge é Analista de Tecnologia da Informação do IFCE, https://diasporabr.com.br/i/651382b44715


 

 

Veja a relação completa dos artigos de Mário Jorge Limeira dos Santos

Opinião dos Leitores

Mário Santos
23 Out 2016, 22:26
Olá Sergio.
Os caminhos para o certificado e a chave que você colocou no virtualhost (/etc/ssl/ssl.crt/ e /etc/ssl/ssl.key/) é diferente do diretório onde você colocou os arquivos (/etc/apache/ssl). Acho que é por isso que está dando erro.
sergio veronezi
22 Out 2016, 12:58
Oi, gostei bastante do seu tutorial e gostaria que você explicasse pra mim
oque eu estou fazendo de errado, estou apanhando muito e não esta dando certo.

eu recebi esses 4 arquivos da comodo Br mais a chave privada.

AddTrustExternalCARoot.crt
centermusic.net.crt
COMODORSAAddTrustCA.crt
COMODORSADomainValidationSecureServerCA.crt

centermusic.net.key

eu coloquei os 4 arquivos menos a chave em

/etc/apache2/ssl/ssl.crt e juntei em um arquivo ca.bundle


e a chave privada eu coloquei em

/etc/apache2/ssl/ssl.key


no virtual host eu configurei da seguinte maneira:

SSLCertificateFile /etc/ssl/ssl.crt/centermusic.net.crt
SSLCertificateKeyFile /etc/ssl/ssl.key/centermusic.net.key

quanto vou reiniciar o apache pelo comando sudo /etc/init.d/apache2 restart da essa mensagem aqui, se eu parar o apache e tentar iniciar o site sai do ar.


Syntax error on line 43 of /etc/apache2/sites-enabled/default-ssl:
SSLCertificateFile: file '/etc/ssl/ssl.crt/centermusic.net.crt' does not exist or is empty
Action 'configtest' failed.
The Apache error log may have more information.

Eu nao to conseguindo resolver esse erro, se puder me orientar eu agradeço.

*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script