O Apache não servirá o site por SSL

1

Eu tenho um servidor Apache que serve meu site bem se eu apenas usar http, mas não consigo me conectar a ele por meio de https. Eu vasculhei todos os logs de erro e não encontrei nada. Eu tentei várias coisas de outras respostas neste site, incluindo a permissão da porta 443 através do meu firewall e reiniciando o iptables, e desabilitando o SELinux. Estes não funcionaram, então eu suspeito que há um problema com a minha configuração.

Aqui estão os meus anfitriões virtuais:

Listen 80
Listen 443

NameVirtualHost *:80
<VirtualHost *:80>
ServerName myurl.com
Redirect permanent / https://myurl.com:443
</VirtualHost>

NameVirtualHost *:443
<VirtualHost *:443>
ServerName myurl.com
Alias /static /path/to/my/app/static
WSGIScriptAlias / /path/to/my/app/wsgi.py
<Directory /path/to/my/app>
Order deny,allow
Allow from all
</Directory>

SSLEngine on
SSLCertificateFile /etc/ssl/ssl.crt/myurl.com.crt
SSLCertificateChainFile /etc/ssl/ssl.crt/myurl.com.ca-bundle
SSLCertificateKeyFile /etc/ssl/ssl.key/myurl.com.key

ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel debug

#   SSL Protocol support:
# List the enable protocol levels with which clients will be able to
# connect.  Disable SSLv2 access by default:
SSLProtocol all -SSLv2
#   SSL Cipher Suite:
# List the ciphers that the client is permitted to negotiate.
# See the mod_ssl documentation for a complete list.
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW

<Files ~ "\.(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

#   Per-Server Logging:
#   The home of a custom SSL log file. Use this when you want a
#   compact non-error SSL logfile on a virtual host basis.
CustomLog logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>

Aqui está a saída de netstat -ltpn :

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1122/rpcbind
tcp        0      0 0.0.0.0:42675               0.0.0.0:*                   LISTEN      5774/rpc.statd
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      27100/sshd
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      5806/cupsd
tcp        0      0 127.0.0.1:5432              0.0.0.0:*                   LISTEN      12076/postmaster
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      6011/master
tcp        0      0 :::111                      :::*                        LISTEN      1122/rpcbind
tcp        0      0 :::80                       :::*                        LISTEN      5860/httpd
tcp        0      0 :::22                       :::*                        LISTEN      27100/sshd
tcp        0      0 ::1:631                     :::*                        LISTEN      5806/cupsd
tcp        0      0 ::1:5432                    :::*                        LISTEN      12076/postmaster
tcp        0      0 ::1:25                      :::*                        LISTEN      6011/master
tcp        0      0 :::443                      :::*                        LISTEN      5860/httpd
tcp        0      0 :::40040                    :::*                        LISTEN      5774/rpc.statd

e curl -v https://myurl.com :

[admin@eusay ~]$ curl -v https://myurl.com
* About to connect() to eusay.eusa.ed.ac.uk port 443 (#0)
*   Trying ::1... connected
* Connected to eusay.eusa.ed.ac.uk (::1) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* SSL connection using TLS_DHE_RSA_WITH_AES_256_CBC_SHA
* Server certificate:
*   subject: CN=eusay.eusa.ed.ac.uk,OU=Domain Control Validated
*   start date: Jun 26 00:00:00 2014 GMT
*   expire date: Jun 25 23:59:59 2017 GMT
*   common name: eusay.eusa.ed.ac.uk
*   issuer: CN=TERENA SSL CA,O=TERENA,C=NL
> GET / HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.15.3 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: eusay.eusa.ed.ac.uk
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Fri, 15 Aug 2014 19:37:16 GMT
< Server: Apache/2.2.15 (CentOS)
< Vary: Cookie
< X-Frame-Options: SAMEORIGIN
< Set-Cookie:  sessionid=zi5oddwgqure8iwnkvd7evrjjt0qe3q8; expires=Fri, 29-Aug-2014 19:37:17 GMT; httponly; Max-Age=1209600; Path=/
< Connection: close
< Transfer-Encoding: chunked
< Content-Type: text/html; charset=utf-8
<

seguido pelo HTML completo da página.

    
por tao_oat 15.08.2014 / 18:43

1 resposta

1

tl; dr - O Apache está bem. É realmente o seu firewall.

Corrija o problema do firewall e tudo ficará bem.


Versão longa

O problema:

Seu teste com curl verifica se o próprio Apache está servindo o site por HTTPS. Dito isto, o seu teste com curl foi feito a partir do próprio servidor.

Quando eu testei com o curl, tanto no 80 quanto no 443, meus resultados foram diferentes dos seus. Em 80, recebi o HTTP 301 como esperado. No entanto, quando tentei acessar a versão HTTPS do seu site, recebi um ICMP HOST UNREACHEABLE.

Em outras palavras, seu firewall está rejeitando os pacotes destinados ao TCP 443 em seu servidor da Web.

A solução:

Descubra por que o tráfego TLS do lado de fora está sendo bloqueado e, em seguida, corrija-o.

Execute iptables -L -v -n para ver quais regras estão realmente em vigor. Talvez seja necessário adicionar uma regra para permitir explicitamente o tráfego, como:

iptables -A INPUT -p tcp --dport 443 -j ACCEPT

ou remova uma regra para bloqueá-lo ou talvez até para ambos.

Evidência de apoio

saída de curl -v http://eusay.eusa.ed.ac.uk


* Rebuilt URL to: http://eusay.eusa.ed.ac.uk/                                                                                                                                                   
* Hostname was NOT found in DNS cache                                                                                                                                                           
*   Trying 129.215.116.90...                                                                                                                                                                    
* Connected to eusay.eusa.ed.ac.uk (129.215.116.90) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.35.0
> Host: eusay.eusa.ed.ac.uk
> Accept: */*
> 
301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://eusay.eusa.ed.ac.uk:443">here</a>.</p>
<hr>
<address>Apache/2.2.15 (CentOS) Server at eusay.eusa.ed.ac.uk Port 80</address>
</body></html>
* Closing connection 0



Saída de curl -v https://eusay.eusa.ed.ac.uk


* Rebuilt URL to: https://eusay.eusa.ed.ac.uk/
* Hostname was NOT found in DNS cache
*   Trying 129.215.116.90...
* connect to 129.215.116.90 port 443 failed: No route to host
* Failed to connect to eusay.eusa.ed.ac.uk port 443: No route to host
* Closing connection 0
curl: (7) Failed to connect to eusay.eusa.ed.ac.uk port 443: No route to host

    
por 17.08.2014 / 08:57