I've purchased a SSL certificate from namecheap.com and placed the required files on my Ubuntu server (key & crt's). I'm using mod_wsgi to serve my Django application with Apache. I'm having issues installing the SSL certificate.
Current Configuration (/etc/apache2/sites-available/000-default.conf)
<VirtualHost *:80>
ServerAdmin [email protected]
#DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
#Django Application
Alias /static /home/Django/professor/static_root
<Directory /home/Django/professor/static_root>
Require all granted
</Directory>
<Directory /home/Django/professor/professor>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess professor python-path=/home/Django/professor:/home/Django/professor-vm/lib/python2.7/site-packages
WSGIProcessGroup professor
WSGIScriptAlias / /home/Django/professor/professor/wsgi.py
#ServerName example.com
#SSLEngine on
#SSLCertificateFile /etc/apache2/ssl/server.crt
#SSLCertificateKeyFile /etc/apache2/ssl/server.key
#SSLCACertificateFile /etc/apache2/ssl/intermediate.crt
</VirtualHost>
I've commented out the lines for the SSL certificate. Currently, my application is running fine but when I uncomment the lines to enable to SSL certificate my site serves the files from /var/www and not the application. Any ideas?
Your problem is that your apache is only configured for port 80, hence it doesn't serve pages over https
(port 443).
For this example I assume you want to serve your website only over https
, so here is how your config should approximately look like.
Here is your: 000-default.conf
<VirtualHost *:80>
ServerName example.com
ServerAdmin [email protected]
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# This is optional, in case you want to redirect people
# from http to https automatically.
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>
Now here is default-ssl.conf
:
<VirtualHost *:443>
ServerName example.com
ServerAdmin [email protected]
# Django Application
Alias /static /home/Django/professor/static_root
<Directory /home/Django/professor/static_root>
Require all granted
</Directory>
<Directory /home/Django/professor/professor>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess professor python-path=/home/Django/professor:/home/Django/professor-vm/lib/python2.7/site-packages
WSGIProcessGroup professor
WSGIScriptAlias / /home/Django/professor/professor/wsgi.py
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key
SSLCACertificateFile /etc/apache2/ssl/intermediate.crt
</VirtualHost>
After configuration is done, we need to turn on the ssl site and (optionally) rewrite mod:
> sudo a2ensite default-ssl
> sudo a2enmod rewrite
> sudo service apache2 reload
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With