Estou tentando configurar o SSL no meu servidor web apache2, mas parece que ele não funciona.
Eu segui um tutorial para criar arquivos cert com o openssl e configurei /etc/apache2/sites-available/default-ssl.conf
corretamente.
Sempre que tento abrir meu site com https, meu navegador se recusa a se conectar devido a problemas de segurança. Ele diz que não configurei meu site corretamente.
No meu /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 relação!
Respostas:
Ok, notei que este post é visto com bastante frequência recentemente e, portanto, parece que muitas pessoas estão enfrentando o mesmo problema que eu. Nesse caso, isso pode ajudá-lo.
Eu segui um tutorial passo a passo simples para criar uma certificação SSL para meu servidor da web. Como muitos tutoriais por aí, o resultado do tutorial que segui foi um certificado autoassinado usando o OpenSSL. Sim, auto-assinado , esse era o problema. O navegador não pode 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 confiável externa. Então me deparei com Let's Encrypt, que faz todo o trabalho para você e é ainda mais fácil de configurar e o melhor é: é totalmente gratuito.
Instalação
1) Exclua os arquivos de certificado SSL antigos que você criou usando o OpenSSL
2) Abra backports para obter o cliente certbot no Debian. Você deve saber que isso abrirá um buraco para o software inacabado! Instale apenas os pacotes quando estiver ciente do que está fazendo.
3) Atualize seu sistema linux
4) Instale o certbot
5) Configure o apache ServerName e ServerAlias
6) Edite o arquivo de configuração do apache
7) Verifique se há uma sintaxe correta
8) Se o arquivo de configuração estiver bom, reinicie o servidor apache
9) Configure um certificado usando o certbot e siga as instruções na tela.
Renovação
Todos os certificados de Let's Encrypt são válidos por três meses. Para renovar, você pode executar manualmente
Ou automatize esse serviço como um trabalho cron
e insira a linha a seguir para chamar uma renovação toda segunda-feira às 02:30.
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
fonte
Se não houver outros erros de SSL e se você tiver tentado definir 'LogLevel debug' no arquivo httpd.conf, essa mensagem de erro também poderá sugerir que 'Listen 443' está ausente no arquivo httpd.conf.
fonte
Esses não são erros - são avisos. É bem possível executar mod_ssl com um certificado que não corresponda aos nomes de servidor definidos, desde que você tenha um host ssl padrão definido e o nome comum no certificado corresponda ao nome do host usado pelos clientes para se conectar.
O último não parece ser verdade no seu caso. Como Jacob diz, você precisa especificar o nome do host correto como o nome comum (ou um alias) ao criar um CSR .
Para ver quais nomes estão atualmente no certificado:
Se houver vários certificados instalados na máquina e exibidos no mesmo endereço IP, então:
(onde os valores de $ {...} são espaços reservados, você deve substituir pelos valores relevantes).
fonte
openssl s_client
mostra o assunto e o emissor do certificado em folha, que é o único você precisa aqui, sem-showcerts
, mas para certificados de CA reais desde cerca de 2010 (e certificados de bricolage por pessoas competentes ) o que você precisa olhar não é assunto, mas a extensão SubjectAltName (SAN) e para o que você precisaopenssl s_client -connect h:p [-servername h] | openssl x509 -noout -text
Encontrei esse problema recentemente, quando meu certificado autoassinado expirou. Pesquisei no Google e apenas copiei o comando para criar um novo certificado a partir de um site.
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.
Portanto, o erro visto aqui no meu caso foi mais fácil de corrigir, fornecendo o local correto do arquivo de chave do certificado ao criar o certificado SSL.
Então, aqui está o comando que eu deveria ter usado e digitado corretamente.
fonte
No meu caso, resolvi isso substituindo no meu arquivo de configuração apache ssl para cada domínio em questão:
de :
Porque meu certificado é para "www.meudominio.com" e não para "meudominio.com"
arquivo apache completo:
fonte
Tivemos que adicionar o ServerName e ServerAlias ao arquivo ssl padrão, não apenas o arquivo conf para o domínio específico.
Isso se livrou do erro traquina para nós.
fonte