Estou tentando configurar o SSL no meu servidor apache2, mas parece que não funciona.
Eu segui um tutorial para criar arquivos cert com openssl e configurei corretamente /etc/apache2/sites-available/default-ssl.conf
.
Cada vez que tento abrir meu site com https, meu navegador se recusa a conectar devido a problemas de segurança. Diz que não configurei meu site corretamente.
No meu caso /var/log/apache2/error.log
, estou recebendo avisos que dizem que meu certificado de servidor não inclui um ID que corresponda ao nome do servidor.
[Mon Apr 10 11:03:24.041813 2017] [mpm_prefork:notice] [pid 1222] AH00169: caught SIGTERM, shutting down
[Mon Apr 10 11:03:30.566578 2017] [ssl:warn] [pid 661] AH01909: 127.0.0.1:443:0 server certificate does NOT include an ID which matches the server name
[Mon Apr 10 11:03:31.579088 2017] [ssl:warn] [pid 1194] AH01909: 127.0.0.1:443:0 server certificate does NOT include an ID which matches the server name
[Mon Apr 10 11:03:31.592958 2017] [mpm_prefork:notice] [pid 1194] AH00163: Apache/2.4.25 (Raspbian) OpenSSL/1.0.2k configured -- resuming normal operations
[Mon Apr 10 11:03:31.593136 2017] [core:notice] [pid 1194] AH00094: Command line: '/usr/sbin/apache2'
Você tem alguma idéia de como resolver isso? Obrigado em consideração!
Responder1
Ok, percebi que esta postagem foi vista com bastante frequência recentemente e parece que muitas pessoas estão enfrentando o mesmo problema que eu. Se sim, então isso pode ajudá-lo.
Segui um tutorial passo a passo simples para criar uma certificação SSL para meu servidor web. Como tantos tutoriais por aí, o resultado do tutorial que segui foi um certificado autoassinado usando OpenSSL. Simautoassinado, esse era o problema. O navegador não pôde confiar no servidor devido ao seu certificado assinado por ele mesmo. Bem, eu também não faria...
Um certificado deve ser assinado por uma autoridade de certificação (CA) externa confiável. Então eu tropeceiVamos criptografarque faz todo o trabalho para você e é ainda mais fácil de configurar e o melhor: é totalmente gratuito.
Instalação
1) Exclua seus arquivos de certificado SSL antigos que você criou usando OpenSSL
2) Abra backports para obter o cliente certbot no Debian. Você deve saber que isso abrirá um buraco para software inacabado! Instale apenas os pacotes quando estiver ciente do que está fazendo.
echo 'deb http://ftp.debian.org/debian jessie-backports main' | sudo tee /etc/apt/sources.list.d/backports.list
3) Atualize seu sistema Linux
sudo apt-get update
4) Instale o certificadobot
sudo apt-get install python-certbot-apache -t jessie-backports
5) Configure ServerName e ServerAlias do apache
sudo nano /etc/apache2/sites-available/000-default.conf
6) Edite o arquivo de configuração do Apache
<VirtualHost *:80>
. . .
ServerName example.com
ServerAlias www.example.com
. . .
</VirtualHost>
7) Verifique a sintaxe correta
sudo apache2ctl configtest
8) Se o arquivo de configuração parecer bom, reinicie o servidor Apache
sudo systemctl restart apache2
9) Configure um certificado usando certbot e siga as instruções na tela.
sudo certbot --apache
Renovação
Todos os certificados da Let's Encrypt são válidos por 3 meses. Para renovar o você pode executar manualmente
sudo certbot renew
Ou automatize este serviço como um cron job
sudo crontab -e
e insira a linha a seguir para invocar uma renovação todas as segundas-feiras às 2h30.
. . .
30 2 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log
Você pode seguir um tutorial mais detalhado aqui:https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-debian-8
Responder2
No meu caso, resolvi isso substituindo meu arquivo de configuração SSL do Apache para cada domínio em questão:
ServerName mydomain.com
ServerAlias www.mydomain.com
por :
ServerName www.mydomain.com
ServerAlias mydomain.com
Porque meu certificado é para “www.meudominio.com” e não para “meudominio.com”
arquivo apache completo:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName www.mydomain.com
ServerAlias mydomain.com
DocumentRoot /home/mydomain.com/public_html
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|ico|png)$ \ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ \no-gzip dont-vary
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
<Directory />
Options +FollowSymLinks
AllowOverride All
</Directory>
<Directory /home/mydomain.com/public_html>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride All
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
SSLCertificateFile /etc/letsencrypt/live/www.mydomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.mydomain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
Responder3
Se você não estiver vendo nenhum outro erro de SSL e tiver tentado definir 'LogLevel debug' no arquivo httpd.conf, esta mensagem de erro também pode sugerir que 'Listen 443' está faltando no arquivo httpd.conf.
Responder4
Encontrei esse problema recentemente, quando meu certificado autoassinado expirou. Pesquisei no Google e copiei o comando para criar um novo certificado de um site.
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/apache2/ssl/apache.crt
No meu arquivo de configuração do Apache: /etc/apache2/sites-available/default-ssl.conf. O arquivo de certificado e o arquivo de chave referem-se ao seguinte nome de arquivo.
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
Portanto, o erro visto aqui no meu caso foi mais fácil de corrigir, apenas fornecendo a localização correta do arquivo-chave do certificado ao criar o certificado SSL.
Então, aqui está o comando que eu deveria ter usado e digitado corretamente.
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt