Lanny Heidbreder
Lanny Heidbreder

Reputation: 1403

My VirtualHost redirects for an HTTPS site are broken

Apache/2.2.15, CentOS Linux.

I have a site where I want the whole site to be SSL-encrypted all the time. Normally, I don't use mod_rewrite to do my www/non-www redirects; I just use VirtualHosts and the Redirect directive.

Trying to do this with my HTTPS site, however, is returning a generic SSL connection error in all browsers. Here's my vhost file (domain names and IP addresses changed):

NameVirtualHost 192.168.0.256:80
NameVirtualHost 192.168.0.256:443

<VirtualHost 192.168.0.256:80>
    ServerName www.example.com
    ServerAlias example.com
    Redirect / https://www.example.com/
</VirtualHost>

# ############################
# This block breaks everything
# ############################
<VirtualHost 192.168.0.256:443>
   ServerName example.com:443
   Redirect / https://www.example.com/
</VirtualHost>

<VirtualHost 192.168.0.256:443>
    DocumentRoot /var/www/example_site/htdocs/
    ServerName www.example.com:443
    ErrorLog /var/www/logs/example_site/error_log
    SSLEngine On
    SSLCertificateFile /etc/httpd/ssl.crt/www.example.com.crt
    SSLCertificateKeyFile /etc/httpd/ssl.key/www.example.com.key
    SSLCACertificateFile /etc/httpd/ssl.crt/www.example.com.ca-bundle
    SetEnvIf User-Agent ".*MSIE.*" \
             nokeepalive ssl-unclean-shutdown \
             downgrade-1.0 force-response-1.0
    <Directory /var/www/example_site/htdocs/>
        Options FollowSymLinks MultiViews
        AllowOverride All
    </Directory>
    <Files ~ "\.php$">
        SSLOptions +StdEnvVars
    </Files>
</VirtualHost>

The block marked "This block breaks everything" appears to be the culprit. When that VirtualHost block is commented out, the site loads as expected and everything's fine. But I really want/need to redirect non-www to www, and when that block is enabled, I get this on every attempt to load the site:

Error message in Chrome for Mac

Error logs don't seem to show anything useful. Can anyone tell from this what exactly is going wrong?

Upvotes: 0

Views: 175

Answers (1)

Ryan Gooler
Ryan Gooler

Reputation: 2065

Port 443 always needs a certificate attached to it. Even if its just a simple redirect. Connect -> SSL -> Data transfer.

Upvotes: 2

Related Questions