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:
#linuxCONTEÚ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.
sudo apt install openssl ca-certificates
O próximo passo será criar um diretório para salvar seu certificado.
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.
sudo openssl genrsa -out server.key 2048
sudo chmod 600 server.key
Com a chave criada iremos agora fazer o pedido de certifição.
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:
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.
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:
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:
<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.
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 ...". ;)