Apache HTTPS Server configurar

English version: click here!

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: 

Apache2

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. 

apache2 https server privatekey
A única pergunta que vamos responder é a “Comon Name”

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