certificados SSL atualizados e agora as condições de reescrita não funcionam mais para o apache2

3

Estou executando um servidor Ubuntu 14.04 com o Apache2 v2.4.7.

Recentemente, nosso site estava recebendo erros do Chrome dizendo que precisávamos atualizar nossos certificados. Acabei de concluir isso no início desta semana, atualizando os Certificados SSL e reiniciando o Apache. Em alguns dias, meu cliente voltou e mencionou que certas imagens e arquivos não estavam mais acessíveis em seu servidor de relatórios. O servidor de relatórios estava usando HTTPS para acessar as imagens e arquivos.

Meu arquivo conf tem isso, o que não mudou desde que eu herdei este servidor:

<VirtualHost *:80>
    ServerName abc.example.com
    DocumentRoot /home/deployer/html/_abc/public
    RewriteEngine On

    RewriteCond %{HTTPS} off
    RewriteCond %{REQUEST_URI} !^/files/
    RewriteCond %{REQUEST_URI} !^/images/checksheets/
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</VirtualHost>

<VirtualHost *:443>
    ServerName abc.example.com
    DocumentRoot /home/deployer/html/_abc/public
    SSLEngine on
    SSLProtocol all -SSLv2 -SSLv3
    SSLCipherSuite          ECD....C3-SHA:!DSS
    SSLHonorCipherOrder     on
    SSLCompression          off
    SSLCertificateFile /etc/ssl/ssl_certificate.crt
    SSLCertificateKeyFile /etc/ssl/abc_staging.key
    SSLCertificateChainFile /etc/ssl/IntermediateCA.crt
    # HSTS (mod_headers is required) (15768000 seconds = 6 months)
    Header always set Strict-Transport-Security "max-age=15768000"
    <Directory /home/deployer/html/_abc/public>
        AllowOverride all
        Options FollowSymLinks
        # -MultiViews
        #   Order allow,deny
        Require all granted
    </Directory>

A única coisa que fiz no servidor foi literalmente atualizar o ssl_certificate e IntermediateCAs e reiniciar o Apache, então não tenho certeza do que aconteceu. A última vez que o certificado SSL foi atualizado foi provavelmente há cerca de um ano, e a maneira de o servidor de relatórios capturar imagens / arquivos não mudou. Eu também reinicio o Apache com bastante frequência e isso nunca foi um problema anteriormente.

Por um capricho, meu cliente criou um novo relatório usando http em vez de https , e isso pareceu funcionar perfeitamente bem.

Minha pergunta é: o que poderia ter mudado para fazer com que o servidor de repente não aceitasse mais https conexões para imagens / arquivos?

EDITAR: Estas são apenas solicitações GET (não há ações POST / DELETE).

Além disso, navegar para a imagem (ou arquivo) como https://abc.example.com/images/path/to/file.jpg com HTTPS funciona completamente bem. Mas quando o servidor de relatórios usa esse mesmo link, uma página em branco é exibida.

Os logs de acesso do Apache mostrarão o link acima como um hit ao navegar diretamente, mas quando o servidor de relatórios o usar e eu navegar para o relatório, os logs de acesso do Apache não mostrarão nada.

    
por risa_risa 11.10.2018 / 06:13

3 respostas

0

Descobrimos isso. Enquanto o servidor Apache estava bem como está, aparentemente nós previamente tivemos um fragmento específico de parametro DH salvo no arquivo de certificado. Esse fragmento foi adicionado porque o servidor de relatórios que solicita as imagens e arquivos é executado no Java 6. E o Java 6 só pode manipular parâmetros DH de 1024 bits.

Então, no meu novo ssl_certificate.crt , adicionei

-----BEGIN DH PARAMETERS-----
MIGHAoGBAP//////////yQ/aoiFowjTExmKLgNwc0SkCTgiKZ8x0Agu+pjsTmyJR
Sgh5jjQE3e+VGbPNOkMbMCsKbfJfFDdP4TVtbVHCReSFtXZiXn7G9ExC6aY37WsL
/1y29Aa37e44a/taiZ+lrp8kEXxLH+ZJKGZR7OZTgf//////////AgEC
-----END DH PARAMETERS----- 

de link

Infelizmente, isso reduz o nosso certificado de classificação A + para B, mas não posso atualizar o servidor Java de 6 para o mais novo.

Depois de adicionar esse snippet ao meu certificado ssl, o servidor de relatórios conseguiu acessar as imagens acima de https !

    
por 26.10.2018 / 18:59
1

Em seu <VirtualHost *:443> , você habilitará o HSTS. Isso diz ao navegador para reescrever internamente cada solicitação para o domínio para HTTPS. Depois disso, não há nenhum uso para o RewriteCond %{REQUEST_URI} !^/files/ , já que tudo deve ser reescrito incondicionalmente, dando a você a possibilidade de simplificar sua configuração:

<VirtualHost *:80>
    ServerName abc.example.com
    Redirect permanent / https://abc.example.com/
</VirtualHost>

O problema da página em branco não parece ser um problema do lado do servidor causado pelo seu Apache. O fato de você poder acessar a URL de outro computador praticamente prova isso.

Primeiro, limpe todos os caches no "servidor de relatórios" e veja se isso ajuda ou não. Não há detalhes sobre como esse "servidor de relatórios" funciona, mas a página em branco pode, por exemplo, ser o resultado de não exibir uma imagem de URL HTTP armazenada em cache em uma página HTTPS devido a uma política de conteúdo misto alterada. Em caso afirmativo, a consistência entre o redirecionamento e a política de HSTS pode impedir esse armazenamento em cache no futuro.

Além disso, corrija todos os http:// URLs em seu conteúdo para https:// .

    
por 13.10.2018 / 04:26
1

Sugestões de solução de problemas:

  1. Confirme seu ambiente:

    • Servidor Ubuntu 14.04 com Apache2 v2.4.7.
    • Seu httpd.conf está configurado para servir tanto o HTTP (: 80) quanto o HTTPS (: 443).
    • Sua configuração de certificado (postada acima) está correta, e os arquivos e (SSLCertificateFile, etc.) existem e não foram "corrompidos".
  2. Por favor, confirme a descrição do problema:

    • "Tudo costumava funcionar" antes de você atualizar seu certificado SSL, "o problema" tem algo a ver com o novo certificado.
    • Todos os usuários que tentam "receber relatórios" por meio de https (EXAMPLE link ) falham - eles apenas vêem "branco". Isso está correto?
    • Os mesmos usuários conseguem obter os mesmos relatórios se usarem http (EXAMPLE: link ). Isso também está correto?
    • Existe alguma coisa "especial" sobre relatórios? Por exemplo, é um aplicativo da web?
  3. Estou curioso se o ALL https estiver "quebrado" ou se apenas "algumas coisas" estiverem inacessíveis.

    Por favor, crie um arquivo de teste (EXEMPLO: /var/www/html/myreport/hello.html ) e verifique se você pode ou não lê-lo com http e https.

  4. Ao testar, use uma (ou ambas) dessas ferramentas em seu PC para analisar a tentativa do navegador de se conectar (e, assim, ajudar a determinar o ponto específico de falha):

  5. Por favor, poste de volta o que você encontrar.

PS:

Aqui estão algumas dicas adicionais. Em particular, "ativar o log detalhado":

link

PPS:

Eu NÃO desabilito o http até que você resolva o problema:

  • Se nada mais, é uma solução temporária para as pessoas que podem precisar de relatórios.
  • A capacidade de comparar o comportamento http com o https ajudará na solução de problemas.
por 13.10.2018 / 05:56