Aprendendo a instalar um certificado auto assinado para trabalhar de forma segura em seu ambiente local.

É sempre bom testar suas aplicações em ambiente local com a mesma configuração que seu ambiente de produção, para isso, é sempre bom usar um certificado digital em sua rede local e nós iremos ajudá-lo com isso.

Autor: André Rodrigues

Tags:

#linux
13912

CONTEÚDO

Olá amigos, tudo bem?

As vezes precisamos criar um certificado auto assinado para testar alguma função em nosso site. Para começar precisamos instalar o openssl.

Terminal
sudo apt install openssl ca-certificates

O próximo passo será criar um diretório para salvar seu certificado.

Terminal
sudo mkdir /var/www/ssl
cd /var/www/ssl

Agora vamos criar a chave privada e dar permissão para acesso apenas pelo usuário root.

Terminal
sudo openssl genrsa -out server.key 2048
sudo chmod 600 server.key

Com a chave criada iremos agora fazer o pedido de certifição.

Terminal
sudo openssl req -new -key server.key -out server.csr

Nesse ponto, será pedido para preencher alguns dados que são (quando pedir a senha deixe em branco):

  • Country Name - país com 2 letras
  • State or Province Name - Estado
  • Locality Name - Cidade
  • Organization Name - Nome da empresa
  • Common Name - *.home.lan (Para vários domínios)
  • Email Address - Seu e-mail

IMPORTANTE

Caso queira registrar seu certificado, você deve enviar o arquivo do seu certificado para uma certificadora, entretanto, com o Let's Encrypt não existe necessidade de pagar por um certificado.

Para gerar seu certificado auto-assinado execute:

Terminal
sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Nesse exato momento temos 3 arquivos:

  • server.key - Sua chave privada
  • server.csr - Pedido de certificado auto-assinado
  • server.crt - Seu certificado auto-assinado

Com os arquivos em mãos, vamos copiá-los para o diretório do ssl em /etc/ssl.

Terminal
sudo cp server.key /etc/ssl/private/
sudo cp server.crt /etc/ssl/certs/

Com os arquivos criados e no lugar correto, vamos ativar o módulo ssl no servidor:

Terminal
sudo a2enmod ssl

O próximo passo é criar um arquivo de configuração do site em /etc/apache2/sites-enabled. Crie o arquivo (sudo nano /etc/apache2/sites-enabled/nome_do_site-ssl.conf) e cole o seguinte conteúdo:

Terminal
<IfModule mod_ssl.c>
   <VirtualHost _default_:443>
       #email do administrador aqui
       ServerAdmin webmaster@localhost
       #Diretorio do site aqui
       DocumentRoot /var/www/html

        
       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined

        
       SSLEngine on
       #certificados criados
       SSLCertificateFile	/etc/ssl/certs/server.crt
       SSLCertificateKeyFile /etc/ssl/private/server.key
       <FilesMatch "\.(cgi|shtml|phtml|php)$">
           SSLOptions +StdEnvVars
       </FilesMatch>
       <Directory /usr/lib/cgi-bin>
           SSLOptions +StdEnvVars
       </Directory>
   </VirtualHost>
</IfModule>

Para finalizar, reinicie o Apache.

Terminal
sudo /etc/init.d/apache2 restart

Pronto pequeno Padawan! Se nada deu errado, seu certificado está auto assinado. Ao tentar acessar o site aparecerá a mensagem "Sua conexão não é particular" (Your connection is not private), não se preocupe, é assim mesmo, basta clicar em "Avançado" e depois em "Ir para ...". ;)

AGUARDE
CARREGANDO SITE