Rodrigo de Jesus Marques – 127829 - RSI
Implementação de servidor Web com
ligações HTTPS
Escola Superior de Tecnologia e Gestão de Águeda
Águeda, 2025
Implementação de servidor Web com ligações
HTTPS
As ligações a um servidor Web que utilizam o protocolo HTTP não são
seguras, uma vez que não garantem a confidencialidade nem a
integridade da informação transmitida. O protocolo HTTPS visa
assegurar comunicações seguras entre um browser e um servidor
Web, fornecendo três propriedades fundamentais de segurança:
confidencialidade, integridade e autenticação.
Neste trabalho, foi configurado um servidor Web, utilizando o
Apache, para disponibilizar as suas páginas através do protocolo
HTTPS. Para tal, recorreu-se a uma máquina com o sistema operativo
Ubuntu, que funcionou como servidor Web. O navegador Firefox foi
utilizado para testar o acesso às páginas alojadas no servidor. Além
disso, foi usada uma Autoridade Certificadora (CA) criada
previamente numa aula anterior, com o intuito de emitir o certificado
para o servidor Web.
1. Instalação de um Servidor Web
O primeiro passo consistiu na instalação do servidor Web. Foi utilizado
o Apache, instalado através do seguinte comando:
Para testar o funcionamento do servidor, abriu-se o navegador
Firefox, tendo sido apresentada com sucesso a página inicial padrão
do Apache.
Utilização de Nome de Domínio Local
Em vez de utilizar o endereço localhost, é recomendável configurar
um nome de domínio. Como não existe um domínio registado, definiu-
se um domínio local: [Link]. Para tal, editou-se o
ficheiro /etc/hosts com privilégios de superutilizador, adicionando
uma linha que associa este domínio ao endereço IP [Link]. Após
guardar o ficheiro, foi possível aceder ao servidor Web através do
novo nome de domínio.
1.1 Criação de um VirtualHost
Para associar o nome de domínio ao site, acedeu-se à pasta
/etc/apache2/sites-available e editou-se o ficheiro [Link].
Foi alterada a diretiva ServerName para refletir o domínio definido:
ServerName [Link]
De seguida, reiniciou-se o servidor Apache:
sudo service apache2 restart
O acesso ao site foi então testado com sucesso através do navegador.
2. Configuração para usar o protocolo HTTPS
2.1 Geração do par de chaves
Para gerar o par de chaves, utilizou-se o OpenSSL, incluído por
defeito no Ubuntu. O comando usado foi:
openssl genrsa -aes-128-cbc -out [Link] 2048
Este comando gera uma chave privada RSA de 2048 bits, cifrada
com AES-128 em modo CBC, sendo guardada no ficheiro
[Link].
Srsi (password)
2.2 Criação do pedido de certificado
O pedido de certificado foi criado com o seguinte comando:
openssl req -new -key [Link] -out [Link]
Durante a execução, foi necessário introduzir os dados de
identificação do servidor, garantindo que o Common Name
corresponde ao nome de domínio definido anteriormente. O ficheiro
[Link] foi depois enviado à CA para emissão do certificado.
2.2 Geração do certificado para o Servidor Web
Usando a aplicação XCA, foi importado o CSR na aba Certificate
Signing Requests. Iniciou-se o processo de assinatura do pedido,
utilizando a chave da CA previamente criada. Foi selecionado o
modelo TLS_server, e garantiu-se a correção dos dados, sobretudo
do Common Name. Após a assinatura, o certificado foi exportado no
formato PEM (chain), incluindo o certificado da CA.
2.4 Instalação do certificado e chave privada no
Servidor Web
O módulo SSL foi ativado com o comando:
sudo a2enmod ssl
O ficheiro /etc/apache2/sites-available/[Link] foi editado
para utilizar os ficheiros gerados:
SSLCertificateKeyFile /home/srsi/Transferências/SRSI/[Link]
SSLCertificateFile /home/srsi/Transferências/SRSI/www.127829-
[Link]
SSLCertificateChainFile /home/srsi/Transferências/SRSI/www.127829-
[Link]
Depois, o site foi ativado e o servidor reiniciado:
sudo a2ensite [Link]
sudo service apache2 restart
2.5 Acesso à página inicial do Servidor Web
Ao tentar aceder a [Link] o acesso
inicialmente falhou, pois o nome de domínio não existe na Internet
pública. Para resolver, editou-se novamente o ficheiro /etc/hosts,
associando o domínio ao endereço [Link].
O erro seguinte foi relativo à cadeia de certificação, dado que a CA
utilizada não é reconhecida como confiável pelo navegador. Para
solucionar este problema, importou-se manualmente o certificado da
CA raiz no Firefox:
1. Abrir o Firefox;
2. Aceder a Definições → Privacidade e Segurança →
Certificados → Ver Certificados;
3. Na aba Autoridades, clicar em Importar...;
4. Selecionar o certificado da CA raiz;
5. Marcar a opção "Confiar nesta CA para identificar
websites".
Após a importação, o acesso ao servidor foi possível sem erros.
Ao tentar aceder via [Link] o navegador voltou a
apresentar um erro, desta vez por incompatibilidade entre o nome do
certificado (Common Name) e o endereço IP. Este comportamento é
esperado, pois o certificado foi emitido apenas para www.127829-
[Link].
Soluções possíveis:
Solução A (recomendada): Utilizar sempre o nome de
domínio configurado.
Solução B (alternativa): Criar um novo certificado incluindo
[Link] no campo Subject Alternative Name (SAN).
2.6 Análise da configuração do Servidor Web
Foi utilizada a ferramenta [Link] para analisar a configuração SSL
do servidor. Como esta ferramenta não se encontra nos repositórios
oficiais, foi clonada a partir do GitHub:
git clone [Link]
A análise indicou uma classificação global de "T" (Trust issues),
associada a problemas de confiança no certificado, geralmente
devido a uma cadeia de certificação incompleta. A configuração pode
ser melhorada com a desativação de protocolos antigos, ativação de
cifragens modernas e reorganização das suites de cifragem.
2.7 Redirecionamento para HTTPS
Para garantir que todo o tráfego é redirecionado para HTTPS, foi
adicionada a seguinte linha ao ficheiro [Link]:
Redirect permanent / [Link]
Depois, foi ativado o módulo rewrite:
sudo a2enmod rewrite
sudo service apache2 restart
Conclusão
A configuração de um servidor Web com suporte para HTTPS foi
concluída com sucesso, recorrendo à criação e gestão de certificados
digitais emitidos por uma CA própria. A utilização do protocolo HTTPS
permite garantir a confidencialidade, autenticidade e integridade das
comunicações. A análise efetuada destacou a importância de uma
configuração cuidada, bem como da correta gestão da cadeia de
certificação para assegurar a confiança dos navegadores. A aplicação
de boas práticas como o redireccionamento de HTTP para HTTPS
contribui adicionalmente para a segurança da solução implementada.
FIM!!