10. HTTPS telepítése Debian Apache alá

1.SSL module engedélyezése

Update-eled a rendszert, majd az Open SSL-t is.

apt-get update
apt-get upgrade openssl

Eengedélyezed az SSL module-t az Apache alatt

a2enmod ssl

Létrehozod a default weboldalra az SSL-t

a2ensite default-ssl

Újraindítod az apache service-t.

service apache2 reload

2. Ön-aláírt (Self signed) certificate létrehozása

Hozd létre az SSL tároló mappát a szerveren.

mkdir /etc/apache2/ssl

Hozd létre a Certificate-et.

openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout /etc/apache2/ssl/default.key -out /etc/apache2/ssl/default.crt
-days 365 - egy évig érvényes 
-keyout - a kulcs elérési útvonala
-out - a létrehozott certificate

Érdemes a kulcsot és a certificate nevét ugyanarra a névre állítani, hogy később könnyen lehessen azonosítani.

Másik lehetőség egy Python certbot telepítése, majd utána a certificate és a key bemásolása a megfelelő helyre (nem tudom, hogy hova hozza létre a cert-eket)

apt install certbot píthon3-certbot-apache
certbot --apache -d fw3.com -d www.fw3.com

3. Apache beállítása arra, hogy használja az SSL Certificate-et

Az Apache certificate használatát -et az előzőekben /etc/apache2/sites-available/default-ssl.conf fileban kell beállítani, vagyis ezt a fájlt töltsd be egy szövegszerkesztőbe. Keresd ki a szövegben az SSLCertificateFile és a SSLCertificateKeyFile bejegyzéseket, majd módosítsd az alábbiak szerint.

SSLCertificateFile  /etc/apache2/ssl/default.crt
SSLCertificateKeyFile  /etc/apache2/ssl/default.key

Utána indítsd újra az Apache Service-t.

systemctl reload apache2

4. Virtual Host telepítése SLL alá

Az alábbi dolgokat kell végigcsinálni:

openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout /etc/apache2/ssl/xyz.com.key -out /etc/apache2/ssl/xyz.com.crt
systemctl reload apache2
ae2ensite xyz.com
ae2ensite xyz.com-ssl
systemctl reload apache2

Ezek után lehet, hogy az eredeti vitual host-okat kicsit átalakítjuk

<VirtualHost *:80>
   ServerAdmin webmaster@debian.local
   ServerName xyz.com
   ServerAlias xyz.com
   Redirect permanent / https://xyz.com
</VirtualHost>

Ez a konfig a http kéréseket átküldi https kérésekre. Ezután már csak a http kérések lesznek kiszolgálva:

<VirtualHost *:443>
    ServerAdmin webmaster@debian.local
    ServerName xyz.com:443
    DocumentRoot /var/www/xyz.com
    ErrorLog ${APACHE_LOG_DIR}/xyz_ssl_error.log
    CustomLog ${APACHE_LOG_DIR}/xyz_ssl_access.log combined
    SSLEngine on
    SSLCertificateFile      /etc/apache2/ssl/xyz.com.crt
    SSLCertificateKeyFile   /etc/apache2/ssl/xyz.com.key
    DirectoryIndex index.php index.html

    <Directory /var/www/xyz.com>
         Options Indexes FollowSymLinks
         AllowOverride All
         Require all granted
    </Directory>
    <IfModule mod_php.c>
         <IfModule proxy_fcgi_module>
         # Enable http authorization headers
         <IfModule setenvif_module>
             SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=
          </IfModule>
          <FilesMatch "\.(?:php|install|module|inc)$">
             SSLOptions +StdEnvVars
          </FilesMatch>
     
          <FilesMatch ".+\.phps$">
             Require all denied
          </FilesMatch>
          <Directory /usr/lib/cgi-bin>
             SSLOptions +StdEnvVars
           </Directory>
         </IfModule>
     </IfModule>
</VirtualHost>