Table of Contents
Apache SSL
Configuration
Install certificate files:
SSLCertificateFile /etc/ssl/certs/domain.com.crt SSLCertificateKeyFile /etc/ssl/private/private.key SSLCertificateChainFile /etc/ssl/certs/domain.com.cabundle
A bare-bones SSL-enabled VirtualHost entry:
Listen 443
<VirtualHost _default_:443>
ServerName domain.com
DocumentRoot /var/www/localhost/htdocs
<Directory "/var/www/localhost/htdocs">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
SSLEngine on
SSLProtocol -all +SSLv3 +TLSv1
SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM
SSLCertificateFile /etc/ssl/certs/domain.com.crt
SSLCertificateKeyFile /etc/ssl/private/private.key
SSLCertificateChainFile /etc/ssl/certs/domain.com.cabundle
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/var/www/localhost/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
BrowserMatch ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
</VirtualHost>
SSL Virtual Hosts
In Ubuntu, Apache does not use Virtual Hosts by default. To change this, edit /etc/apache2/ports.conf and add NameVirtualHost *:443 to the SSL config.
Then, in /etc/apache2/sites-available/default-ssl change VirtualHost directive from _default_:443 to *:443
Examples
Redirect site to HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}