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
29 Mar 2017, 13:20
Olá Jonecir.
Acredito que qualquer das duas opções deve funcionar.
Att.
Jonecir
29 Mar 2017, 13:08
Olá Mário, para usar esse SSL no meu pc ubuntu com apache2 (localhost), que informação eu coloco no "Common Name"?

Seria 127.0.1.1 ou apenas localhost?

Grato
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