Olá a todos, hoje a gente vai mostrar como instalar e como configurar um servidor APACHE Server utilizando https.
Quem tiver mais dúvidas e quiser aprender um pouco mais sobre a instalação do Servidor APACHE, temos um vídeo de instalação e configuração inicial:
O que está motivando utilizar https?
Para quem não sabe e para quem é novidade, o https vai prover maior segurança.
Não é intenção aqui do vídeo ficar discutindo sobre chave de criptografia ou qual criptografia seria melhor do que outra.
Então, eu preparei algumas informações com um pouco do que a gente e vai ver aqui.
A primeira coisa que a gente tem que fazer é instalar o apache2.
Dessa forma, supondo que essa máquina aqui não tenha o apache2 instalado. Então, :
sudo apt-get update
Isso vai fazer o update dos repositórios e após isso, vamos instala o apache2 :
sudo apt-get install apache2
Confirme a operação. Ok, o apache2 foi instalado. Agora vamos para a configuração.
Livros Indicados:
E-Books de Redes e Segurança
Criando certificado do HTTPS Server
Vamos para parte da configuração do Apache HTTPS Server.
Então, vamos criar as chaves com o comando abaixo:
sudo openssl req -x509 -nodes -days 300 -newkey rsa:2048 -keyout /etc/ssl/private/apache_ssl.key -out /etc/ssl/certs/apache_ssl.crt
“openssl” é uma ferramenta de openssl de linha de comando. Dessa forma, a maioria das distribuições Linux já tem essa ferramenta.
“req” é para o gerenciamento de solicitação de assinatura de certificado.
“-x509” é usado para gerenciamento de dados dos certificados “x-509” e muito utilizado para a certificados auto-assinados.
Consequentemente, esse é o que a gente vai trabalhar aqui.
Sendo o certificado autoassinado, então a gente não precisamos de uma entidade certificadora.
“-nodes” informa que não queremos que tenha frase secreta para o certificado.
Isso porque vamos fazer requisição https e não queremos que tenha frase secreta.
Dessa forma, queremos que a requisição ocorra normalmente.
“-days” informa os dias de validade do seu certificado. Dessa forma, você pode especificar a quantidade de dias que ache mais adequada.
“-newkey rsa:2048” esse campo informa que vou criar um novo certificado utilizando a chave RSA com 2.048 bits.
Além disso, essa chave também pode ser alterada e pode utilizar outra cifra, além de poder utilizar uma quantidade diferente de bits.
“-keyout” esse é o caminho para a chave privada. Então, aqui eu estou informando que essa está em : “/etc/ssl/private/apache_ssl.key”.
“-out” informa o caminho para o certificado.
Assim, aqui o meu certificado está em “/etc/ssl/certs/apache_ssl.crt”. Esse é o nome que eu estou dando para o certificado.
O comando openssl autocompleta quando digitamos TAB. Poderíamos colocar o certificado em outros locais também.
Essa é apenas uma sugestão. Então, feito isso, vamos dar um Enter e vai começar a fazer algumas perguntas.
Quando estiver fazendo isso para uma empresa e para um domínio você vai responder isso certinho e respondendo às perguntas.
No entanto, aqui estamos fazendo um tutorial e não vamos responder a primeira nem a segunda, nem a quarta, nem a quinta.
Aqui é importante colocar o domínio ou IP no caso a gente está trabalhando aqui com a máquina sem utilizar domínios, portanto vamos colocar o IP então “192.168.56.103” .
Em seguida, não vou colocar endereço de e-mail.
Configurando o default-ssl
Ok, vamos lá para o próximo passo. Agora vamos entrar em:
cd /etc/apache2/sites-available
E vamos editar esse arquivo aqui :
sudo nano default-ssl.conf
Vamos inserir o ServerName com o IP da máquina. Agora, vamos ver o que iremos editar no arquivo. Aqui no início vamos colocar: ServerName 192.168.56.103
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
ServerName 192.168.56.103
Ou seja, o IP que cadastramos no certificado. Agora, a gente vem para essas linhas e vamos alterar o caminho de certificado e da chave. Então vamos lá.
# A self-signed (snakeoil) certificate can be created by installing
# the ssl-cert package. See
# /usr/share/doc/apache2/README.Debian.gz for more info.
# If both key and certificate are stored in the same file, only the
# SSLCertificateFile directive is needed.
SSLCertificateFile /etc/ssl/certs/apache_ssl.crt
SSLCertificateKeyFile /etc/ssl/private/apache_ssl.key
São duas linhas a primeira está mostrando onde está o certificado Então a gente colocou o certificado dentro de : “/etc/ssl/certs/”.
No entanto, agora vamos alterar o nome para o nome do nosso certificado: /etc/ssl/certs/apache_ssl.crt.
Agora vamos indicar a localização da chave privada: “/etc/ssl/private/apache_ssl.key”.
Ok, tudo certinho verificar se existe erro de digitação. Agora, vamos salvar e vamos para o próximo passo.
Ativando os Módulos SSL
Para ativar os módulos SSL, vamos usar esses comandos aqui e depois a gente vai dar o Restart no APACHE2 Então vamos ativar os módulos.
O primeiro módulo que a gente precisa utilizar é o :
sudo a2enmod ssl
Agora vamos ativar o :
sudo a2ensite default-ssl.conf
Observe que após a execução desse comando, será ativado o módulo default-ssl. Dessa forma, esse comando vai ativar o módulo e esse vai aparecer também no diretório sites-enable.
Verificando Erros do Apache HTTPS Server
Agora a gente vai fazer esse comando : “sudo apache2ctl configtest” para verificar se a gente errou alguma coisa na configuração. É bom verificar antes de passar adiante.
sudo apache2ctl configtest
Aqui temos um aviso de alerta sobre o nome do Servidor é só um alarme.
Informando que o nome do servidor não está devidamente configurado e está utilizando o 127.0.0.1. Isso pode ser alterado posteriormente.
O que importa é que a sintaxe está OK.
Supondo que não queremos esse alerta, podemos usar o:
sudo nano /etc/apache2/apache2.conf
E vamos editar o apache2.conf. Vamos na configuração global e vamos adicionar “ServerName 192.168.56.103” sendo o “192.168.56.103” o IP do seu servidor WEB. Vamos salvar e fechar o “apache2.conf” e agora vamos verificar a sintaxe.
sudo apache2ctl configtest
E o alarme sumiu.
Reiniciando o APACHE
Agora vamos reiniciar o apache2.
sudo service apache2 restart
Ok podemos verificar o status.
sudo service apache2 status
Ok o apache2 está funcionando corretamente.
Podemos ver se o apache2 está ouvindo nas portas corretas :
sudo netstat -anlp
Agora temos a porta 443 usada pelo apache2 e já tínhamos antes a 80 sendo usada pelo apache2. Tudo ok.
Testando o HTTPS Apache Server
Vamos fazer o teste com o navegador. Então vamos abrir o navegador aqui vou criar uma aba privada. OK, “https://192.168.56.103”.
Dessa forma, não estamos usando unidade certificadora então o navegador vai pergunta e vamos confirmar.
Ok, está funcionando com o https.
Nesse caso o servidor está rodando tanto https como também roda via http na porta 80.
Podemos verificar isso ao executar só o http. “http://192.168.56.103”. OK então está ouvindo nas duas portas.
Veja também:
Juliana Mascarenhas
Data Scientist and Master in Computer Modeling by LNCC.
Computer Engineer
SSH: Como criar chave pública
Nesse tutorial vamos ensinar a criar e configurar o acesso a um servidor SSH usando…
Socket em Python criando chat UDP
Tutorial para a criação de um chat simples utilizando sockets em UDP em Python 3….
Socket em Python, criando um Chat
Tutorial para a criação de um chat simples utilizando sockets TCP em Python 3. O…
Como usar apt get com proxy
Ao longo dos tempos sempre me deparo nos laboratórios de rede com a necessidade de…
Qual a melhor IDE para Python?
Encontrar a IDE perfeita é uma jornada pessoal que depende de vários fatores, como suas…