How Do I Enable HTTPS On Apache Web Server

Εγκατάσταση Apache server και το Openssl

sudo apt-get update && sudo apt-get install apache2 openssl

Ενεργοποίηση των Apache module : Mod_ssl & Mod_rewrite.

sudo a2enmod ssl

sudo a2enmod rewrite


Ανοιγουμε το Apache configuration file.

sudo nano /etc/apache2/apache2.conf

Και προσθέτουμε τις παρακάτω γραμμές στο τέλος του αρχείου

<Directory /var/www/html>
AllowOverride All
</Directory>
ή τροποποιούμε τις γραμμές (το none σε All)
<Directory /var/www/html>
AllowOverride none
</Directory>

Δημιουργούμε ένα private key και το πιστοποιητικό χρησημοποιόντας το OpenSSL 

mkdir /etc/apache2/certificates
cd /etc/apache2/certificates
sudo openssl req -new -newkey rsa:4096 -x509 -sha256 -days 9365 -nodes -out apache-certificate.crt -keyout apache.key

Συμπληρώνουμε ανάλογα τις παρακάτω πληροφορίες που μας ζητάει. Στο common name βάζουμε την IP του server μας


Τροποποιούμε το Apache configuration file για το default website

sudo  /etc/apache2/sites-enabled/000-default.conf

Από το παρακάτω 

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Θα το κάνουμε 

<VirtualHost *:80>
      RewriteEngine On
      RewriteCond %{HTTPS} !=on
      RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]
</Virtualhost>
<VirtualHost *:443>
      ServerAdmin webmaster@localhost
      DocumentRoot /var/www/html
      ErrorLog ${APACHE_LOG_DIR}/error.log
      CustomLog ${APACHE_LOG_DIR}/access.log combined
      SSLEngine on
      SSLCertificateFile /etc/apache2/certificates/apache-certificate.crt
      SSLCertificateKeyFile /etc/apache2/certificates/apache.key
</VirtualHost>

Επανεκκινούμε τον apache

sudo systemctl restart apache2.service