Por que o Apache não está reportando HTTPS para PHP?

Por que o Apache não está reportando HTTPS para PHP?

Problema

O Apache não está reportando HTTPS na $_SERVERvariável PHP. O certificado está configurado corretamente de acordo comsslcheck.nle o site redireciona todas as solicitações HTTP para o equivalente HTTPS.

$_SERVERvariável:

  • HTTPSchave não existe
  • SERVER_PORTé 80 em vez de 443
  • HTTP_X_FORWARDED_PROTOnão está definido
  • REQUEST_SCHEMEé http em vez de https

Sem esses valores, a estrutura Symfony e o Wordpress não podem determinar se o site está sendo executado em uma conexão segura.

Configuração

Estou executando umLÂMPADA Bitnamipilha. Pelo que sei, o servidor não executa um proxy reverso. O site tem mod_pagespeed configurado, mas não creio que esteja configurado como proxy reverso. Tentei desabilitar o mod_pagespeed para um vhost de teste, mas o Apache continua reportando http.

Qual mais poderia ser o motivo para o Apache relatar HTTP/HTTPS incorretamente?

Atualizar

Saída denetstat -plnt

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      65034/master
tcp        0      0 127.0.0.1:2812          0.0.0.0:*               LISTEN      2295/monit
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1801/mysqld.bin
tcp        0      0 127.0.0.1:12301         0.0.0.0:*               LISTEN      48346/opendkim
tcp        0      0 127.0.0.1:21            0.0.0.0:*               LISTEN      731/vsftpd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1889/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      65034/master
tcp6       0      0 :::443                  :::*                    LISTEN      25401/httpd
tcp6       0      0 :::80                   :::*                    LISTEN      25401/httpd
tcp6       0      0 :::22                   :::*                    LISTEN      1889/sshd

Configuração do Vhost:

<VirtualHost *:80>
  ServerName mydomain.com

  DocumentRoot "/opt/bitnami/apps/mydomain/htdocs/web"

  RewriteEngine On

  #redirect non-www to https://www.
  RewriteCond %{HTTP_HOST} !^www\. [NC]
  RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

  #redirect http://www. to https://www.
  RewriteCond %{HTTPS} !=on
  RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L]

  CustomLog /opt/bitnami/apache2/logs/mydomain-http.log combined

  Include "/opt/bitnami/apps/mydomain/conf/httpd-app.conf"
</VirtualHost>

<VirtualHost *:443>
  ServerName mydomain.com

  DocumentRoot "/opt/bitnami/apps/mydomain/htdocs/web"

  RewriteEngine On
  RewriteCond %{HTTP_HOST} !^www\. [NC]
  RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

  CustomLog /opt/bitnami/apache2/logs/mydomain-https.log combined

  SetEnv HTTPS on #Added this to force https environment variable

  Include "/opt/bitnami/apps/mydomain/conf/httpd-app.conf"
</VirtualHost>

Responder1

Parece-me que você está de fato acessando o Apache via HTTP e não HTTPS (que é o que ele está lhe dizendo).

Se você verificar seu arquivo de configuração do Apache, deverá ter 2 sites, um para: 80 (HTTP) e outro para: 443 (HTTPS). O primeiro deve redirecionar o tráfego para o segundo. Se você garantir que o site com VIRTUALHOST terminando em :80 (que é o que eu acho que você está realmente usando) tenha um arquivo de log diferente daquele que termina em :443 (que é o host HTTPS que você pensa que está usando), então você poderá observar os arquivos de log, para ter certeza de qual site está visualizando.

É possível que algo esteja encapsulando a conversa HTTP desembrulhada para o Apache, tendo gerenciado a parte SSL, mas depois de analisar os documentos do bitnampi, eles não fazem isso, então você mesmo teria que configurar algo como stunnel. Como disse Hakan Lindqvist, se netstat -lpn mostra apenas o apache escutando em: 443 e: 80, então a verdade deve estar no arquivo de configuração do apache. Como mencionei acima, sugiro configurar os troncos para ter certeza, mas geralmente, se ele se parece com um pato, grasna como um pato e gosta de passar o tempo em lagos, nadar na chuva, primeiro trabalhe no pressuposto de que é um pato pois é improvável que seja um gato.

Você talvez ache isso útil:https://wiki.bitnami.com/Components/Apache#How_to_enable_HTTPS_support_with_SSL_certificates

É importante notar que este é um exemplo de configuração de site HTTPS (no link acima) <VirtualHost *:443> SSLEngine on DocumentRoot "/opt/bitnami/apps/sugarcrm/htdocs" ServerName my-sugarcrm.example.com SSLCertificateFile "/opt/bitnami/apache2/conf/my-sugarcrm.crt" SSLCertificateKeyFile "/opt/bitnami/apache2/conf/my-sugarcrm.key" </VIrtualHost>

informação relacionada