Ative o HTTPS em um servidor Apache Linux instalando um certificado SSL de domínio único, multidomínio ou curinga. Este guia aborda a preparação dos arquivos de certificado, a configuração do mod_ssl e do VirtualHost, além da verificação pós-implantação.
Pré-requisitos
Antes de começar, certifique-se de que você possui:
Um certificado SSL válido emitido por uma autoridade certificadora (CA) confiável. Se o seu certificado estiver prestes a expirar ou já tiver expirado, renove-o antes de prosseguir.
Um certificado que cubra todos os domínios que você deseja proteger. Para adicionar ou alterar domínios vinculados, compre um novo certificado ou atualize os domínios vinculados.
Uma conta
rootou uma conta com privilégiossudono servidor.Um registro DNS para o domínio que resolva para o endereço IP público do seu servidor.
Resolução DNS: O nome de domínio resolve para o endereço IP público do servidor.
Regras de cobertura de domínio:
|
Tipo de certificado |
Cobertura |
|
Correspondência exata |
|
|
Curinga |
|
Para cobrir subdomínios de vários níveis, o campo Bound Domains deve incluir o domínio exato (por exemplo, a.b.example.com) ou um curinga correspondente (por exemplo, *.b.example.com).
Etapa 1: Preparar os arquivos de certificado
Acesse a página SSL Certificate Management. Na coluna Actions do seu certificado, clique em Download Certificate. Na aba Download, selecione Apache como Server Type e baixe o pacote.
-
Extraia o pacote baixado. O pacote contém dois ou três arquivos, dependendo de como a Solicitação de Assinatura de Certificado (CSR) foi gerada:
NotaSe você gerou a CSR com OpenSSL ou Keytool, a chave privada foi salva apenas na sua máquina local e não está incluída no pacote baixado. Caso a chave privada seja perdida, o certificado não poderá ser utilizado. Adquira um novo certificado e gere uma nova CSR e chave privada.
Cenário
Arquivos no pacote
Ação
Chave gerenciada pelo sistema (CSR gerada pela Alibaba Cloud)
<bound_domain_name>_public.crt,<bound_domain_name>_chain.crt,<bound_domain_name>.keyArmazene todos os três arquivos em um local seguro.
Chave autogerenciada (CSR gerada com OpenSSL ou Keytool)
Apenas
<bound_domain_name>_public.crt,<bound_domain_name>_chain.crtImplante estes arquivos juntamente com o arquivo de chave privada que você salvou localmente ao gerar a CSR.
-
Faça upload do arquivo de certificado, do arquivo de cadeia de certificados e do arquivo de chave privada para um diretório seguro no seu servidor, como
/etc/ssl/cert.NotaUse uma ferramenta de login remoto, como PuTTY, Xshell ou WinSCP, para fazer upload dos arquivos. Se o seu servidor for uma instância do Elastic Compute Service (ECS) da Alibaba Cloud, consulte Upload ou download de arquivos.
Etapa 2: Abrir a porta 443
Certifique-se de que o firewall e o grupo de segurança do seu servidor permitam tráfego de entrada na porta 443.
Verificar se a porta 443 está aberta
Execute o comando a seguir para testar a conectividade da porta 443. Substitua <your_server_public_ip> pelo endereço IP público do seu servidor.
RHEL/CentOS
command -v nc > /dev/null 2>&1 || sudo yum install -y nc
# Replace <your_server_public_ip> with the public IP address of your server.
sudo ss -tlnp | grep -q ':443 ' || sudo nc -l 443 & sleep 1; nc -w 3 -vz <your_server_public_ip> 443
Saída esperada se a porta 443 estiver aberta: Ncat: Connected to <your_server_public_ip>:443
Debian/Ubuntu
command -v nc > /dev/null 2>&1 || sudo apt-get install -y netcat
# Replace <your_server_public_ip> with the public IP address of your server.
sudo ss -tlnp | grep -q ':443 ' || sudo nc -l -p 443 & sleep 1; nc -w 3 -vz <your_server_public_ip> 443
Saída esperada se a porta 443 estiver aberta: Connection to <your_server_public_ip> port [tcp/https] succeeded! ou [<your_server_public_ip>] 443 (https) open
Caso a porta 443 não esteja aberta, conclua as duas subetapas a seguir.
Abrir a porta 443 no grupo de segurança
Se o seu servidor estiver em uma plataforma cloud, confirme se o grupo de segurança permite tráfego TCP de entrada na porta 443. Caso contrário, o service HTTPS ficará inacessível. Os passos abaixo usam o Alibaba Cloud ECS como exemplo; para outras plataformas, consulte a documentação respectiva.
Acesse a página Elastic Compute Service (ECS) instances e clique no nome da sua instância. Na seção Security Group Details, adicione uma regra de grupo de segurança com as seguintes configurações:
|
Campo |
Valor |
|
Action |
Allow |
|
Protocol |
Custom TCP |
|
Destination (Current Instance) |
HTTPS (443) |
|
Source |
0.0.0.0/0 (anywhere) |
Abrir a porta 443 no firewall do sistema
Execute o comando a seguir para identificar seu firewall ativo:
if command -v systemctl >/dev/null 2>&1 && systemctl is-active --quiet firewalld; then
echo "firewalld"
elif command -v ufw >/dev/null 2>&1 && sudo ufw status | grep -qw active; then
echo "ufw"
elif command -v nft >/dev/null 2>&1 && sudo nft list ruleset 2>/dev/null | grep -q 'table'; then
echo "nftables"
elif command -v systemctl >/dev/null 2>&1 && systemctl is-active --quiet iptables; then
echo "iptables"
elif command -v iptables >/dev/null 2>&1 && sudo iptables -L 2>/dev/null | grep -qE 'REJECT|DROP|ACCEPT'; then
echo "iptables"
else
echo "none"
fi
Se a saída for none, nenhuma ação adicional é necessária. Caso contrário, execute o comando correspondente ao seu tipo de firewall:
firewalld
sudo firewall-cmd --permanent --add-port=443/tcp && sudo firewall-cmd --reload
ufw
sudo ufw allow 443/tcp
nftables
sudo nft add table inet filter 2>/dev/null
sudo nft add chain inet filter input '{ type filter hook input priority 0; }' 2>/dev/null
sudo nft add rule inet filter input tcp dport 443 counter accept 2>/dev/null
iptables
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Para persistir as regras do iptables entre reinicializações:
RHEL/CentOS
sudo yum install -y iptables-services
sudo service iptables save
Debian/Ubuntu
sudo apt-get install -y iptables-persistent
sudo iptables-save | sudo tee /etc/iptables/rules.v4 >/dev/null
Etapa 3: Instalar o certificado no Apache
Os passos de configuração variam conforme a versão do Apache. Verifique sua versão primeiro e siga as instruções correspondentes.
Verificar a versão do Apache e ativar o módulo SSL
Etapa 3a: Verificar a versão do Apache
RHEL/CentOS
httpd -v
Debian/Ubuntu
apache2 -v
Etapa 3b: Verificar se o módulo SSL está ativado
RHEL/CentOS
httpd -M | grep 'ssl_module'
Debian/Ubuntu
apachectl -M | grep 'ssl_module'
Se o módulo estiver carregado, a saída incluirá ssl_module (shared). Caso contrário, instale-o:
RHEL/CentOS
sudo yum install -y mod_ssl
# For RHEL/CentOS 8.0 and later:
sudo dnf install -y mod_ssl
Debian/Ubuntu
sudo a2enmod ssl
Configurar o VirtualHost
Apache 2.4.8 e posterior (recomendado)
Combinar os arquivos de certificado
Concatene o arquivo de certificado e o arquivo de cadeia em um único arquivo fullchain:
# Append the certificate chain to the server certificate to create a complete chain file.
cat domain_name_public.crt domain_name_chain.crt > domain_name_fullchain.pem
Isso gera dois arquivos: domain_name_fullchain.pem e domain_name.key.
Editar a configuração SSL do VirtualHost
O arquivo de configuração geralmente está localizado em /etc/httpd/conf.d/ssl.conf (RHEL/CentOS) ou /etc/apache2/sites-available/your-site-ssl.conf (Debian/Ubuntu).
vim /etc/httpd/conf.d/ssl.conf
Atualize os parâmetros SSL no bloco VirtualHost:
<VirtualHost *:443>
# Replace example.com with the domain name you want to secure.
ServerName example.com
# Certificate file. Use the path to the combined fullchain file.
SSLCertificateFile /etc/ssl/cert/domain_name_fullchain.pem
# Private key file. Replace with the path to your private key file.
SSLCertificateKeyFile /etc/ssl/cert/domain_name.key
# Other configurations
# ...
</VirtualHost>
Apache 2.4.7 e anterior
Preparar os arquivos de certificado
Confirme se o diretório de certificados contém todos os três arquivos: domain_name_public.crt, domain_name_chain.crt e domain_name.key.
Editar a configuração SSL do VirtualHost
O arquivo de configuração geralmente está localizado em /etc/httpd/conf.d/ssl.conf (RHEL/CentOS) ou /etc/apache2/sites-available/your-site-ssl.conf (Debian/Ubuntu).
vim /etc/httpd/conf.d/ssl.conf
Atualize os parâmetros SSL no bloco VirtualHost:
<VirtualHost *:443>
# Replace example.com with the domain name bound to your certificate.
ServerName example.com
# Certificate file. Replace with the path to your certificate file.
SSLCertificateFile /etc/ssl/cert/domain_name_public.crt
# Certificate chain file (specified separately). Replace with the actual path.
SSLCertificateChainFile /etc/ssl/cert/domain_name_chain.crt
# Private key file. Replace with the path to your private key file.
SSLCertificateKeyFile /etc/ssl/cert/domain_name.key
# Other configurations
# ...
</VirtualHost>
Validar e recarregar o Apache
Verifique a sintaxe da configuração:
RHEL/CentOS
sudo httpd -t
Debian/Ubuntu
sudo apache2ctl -t
Se a saída for Syntax OK, recarregue ou reinicie o Apache para aplicar o certificado:
RHEL/CentOS
# Reload (graceful, recommended):
sudo systemctl reload httpd
# Restart (force restart):
sudo systemctl restart httpd
Debian/Ubuntu
# Reload (graceful, recommended):
sudo systemctl reload apache2
# Restart (force restart):
sudo systemctl restart apache2
Etapa 4: Verificar a instalação
Abra https://yourdomain no navegador (substitua yourdomain pelo seu domínio real). Um ícone de cadeado na barra de endereços confirma que o certificado está ativo.

Se nenhum ícone de cadeado aparecer ou se ocorrer um erro de acesso, limpe o cache do navegador ou tente novamente no modo anônimo.
A partir do Chrome 117, o ícone
foi substituído por
. Clique neste ícone para visualizar os detalhes do certificado.
Se ainda tiver problemas, consulte a seção FAQ abaixo.
Entrando em produção
Adote estas práticas antes de implantar em produção:
-
Use uma conta de service sem privilégios de root: Crie um usuário de sistema dedicado e com baixos privilégios para o Apache. Nunca execute o servidor sob uma conta root ou de administrador.
NotaConsidere terminar o SSL na camada de balanceador de carga — implante o certificado em um Server Load Balancer (SLB), que lida com HTTPS e encaminha o tráfego HTTP descriptografado para os servidores de backend.
Mantenha credenciais fora do código: Nunca codifique senhas ou chaves privadas diretamente nos arquivos de configuração. Injete credenciais por meio de variáveis de ambiente, HashiCorp Vault ou um service de gerenciamento de chaves na cloud.
Redirecione HTTP para HTTPS: Configure o Apache para redirecionar todo o tráfego HTTP para HTTPS, evitando ataques man-in-the-middle.
Desative protocolos TLS legados: Na configuração do Apache, desative SSLv3, TLSv1.0 e TLSv1.1. Ative apenas TLSv1.2 e TLSv1.3.
Monitore e renove antes da expiração: Após a implantação, ative o monitoramento de domínio. A Alibaba Cloud verifica a validade do certificado e envia lembretes de renovação antes da expiração. Consulte Adquirir e ativar o monitoramento de nome de domínio público.
FAQ
O HTTPS está inacessível após a instalação — o que devo verificar?
Siga as verificações abaixo em ordem:
Porta 443 bloqueada: Confirme se a porta 443 está aberta tanto no grupo de segurança quanto no firewall do sistema. Consulte Etapa 2: Abrir a porta 443.
Incompatibilidade de domínio: O domínio acessado não consta nos Bound Domains do certificado. Veja as regras de cobertura de domínio em Pré-requisitos.
Apache não recarregado: O service Apache não foi recarregado ou reiniciado após a alteração de configuração. Consulte Validar e recarregar o Apache.
Caminho de certificado incorreto ou arquivos desatualizados: Verifique se os caminhos no arquivo de configuração do Apache apontam para os arquivos de certificado corretos e atualizados.
Certificado ausente em services upstream: Se o seu domínio passar por uma Content Delivery Network (CDN), Server Load Balancer (SLB) ou Web Application Firewall (WAF), instale o certificado também nesses services. Consulte Locais de implantação de certificado quando o tráfego passa por múltiplos services da Alibaba Cloud.
Implantação em múltiplos servidores incompleta: Se o DNS do domínio resolver para vários servidores, instale o certificado em cada um deles.
Para solução de problemas adicionais, consulte Resolver problemas de implantação de certificado com base em mensagens de erro do navegador e Guia de solução de problemas de implantação de certificado SSL.
O navegador mostra "certificate name mismatch" ou NET::ERR_CERT_COMMON_NAME_INVALID — o que isso significa?
O domínio que você está acessando não corresponde a nenhum domínio listado nos Bound Domains do certificado. Verifique as regras de cobertura de domínio em Pré-requisitos e adquira ou atualize seu certificado, se necessário.
Como atualizar ou substituir um certificado SSL no Apache?
Faça backup dos arquivos antigos: Salve cópias dos arquivos
.crte.keyexistentes no servidor.Baixe os novos arquivos: Obtenha o novo certificado e a chave privada no console SSL Certificate Management.
Substitua os arquivos: Faça upload dos novos arquivos nos mesmos caminhos especificados na configuração do Apache, sobrescrevendo os antigos.
Recarregue o Apache: Execute
sudo systemctl reload httpd(RHEL/CentOS) ousudo systemctl reload apache2(Debian/Ubuntu) para aplicar o novo certificado sem tempo de inatividade.