Zprovoznění https na apache

Cílem bylo zprovoznění https se self-signed certifikátem na mém lokálním virtuálním serveru s apache na Debianu (11 – bullseye).

Již mám zprovozněn apache a používám lokální vývojové domény xxx.deb, které mám natvrdo v etc/host u sebe směrované na tento virtuál. Také mám nainstalované openssl.

Konfiguraci těchto domén mám v „/etc/apache2/sites-available/debian.localdomain.conf“.

Použil jsem návod zde. Níže jsou upravené commandy pro můj případ.

Vytvoření certifikátů:

mkdir eoj_deb_ssl_certificates
cd eoj_deb_ssl_certificates
openssl genrsa -out security.deb.key 2048
openssl req -new -key security.deb.key -out security.deb.csr
openssl x509 -req -days 730 -in security.deb.csr -signkey security.deb.key -out security.deb.crt

Zkopírování certifikátů a nastavení práv

cp security.deb.crt /etc/ssl/certs/
chown root:root /etc/ssl/certs/security.deb.crt
chmod 644 /etc/ssl/certs/security.deb.crt
ls -l /etc/ssl/certs/ | grep security.deb
cp security.deb.key /etc/ssl/private/
chown root:ssl-cert /etc/ssl/private/security.deb.key
chmod 640 /etc/ssl/private/security.deb.key
ls -l /etc/ssl/private/| grep security.deb

Úprava konfigurace Virtualhostu

cp /etc/apache2/sites-available/debian.localdomain.conf /etc/apache2/sites-available/debian.localdomain.conf.bak
mcedit /etc/apache2/sites-available/debian.localdomain.conf

Přidal jsem následující za definici http Virtualhostu

<IfModule mod_ssl.c>
<VirtualHost *:443 >
  ServerAdmin admin@security.deb
  ServerName security.deb
  DocumentRoot /var/www/security.deb
  SSLEngine on
  SSLCertificateFile /etc/ssl/certs/security.deb.crt
  SSLCertificateKeyFile /etc/ssl/private/security.deb.key
  <Directory /var/www/security.deb>
    Order Deny,Allow
    Allow from all
    AllowOverride all
    # Don't show indexes for directories
    Options -Indexes
  </Directory>
</VirtualHost>
</IfModule>

Nemažu původní http konfiguraci a ta stále funguje (nechci automatické přesměrování na https) – finálně tedy konfigurace pro tento virtualhost bude:

<VirtualHost *:80 >
ServerName phpmyadmin.deb
DocumentRoot /var/www/phpmyadmin
<Directory /var/www/phpmyadmin>
Order Deny,Allow
Allow from all
# Don't show indexes for directories
Options -Indexes
</Directory>
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443 >
ServerName security.deb
DocumentRoot /var/www/security.deb
SSLEngine on
SSLCertificateFile /etc/ssl/certs/security.deb.crt
SSLCertificateKeyFile /etc/ssl/private/security.deb.key
<Directory /var/www/security.deb>
Order Deny,Allow
Allow from all
AllowOverride all
# Don't show indexes for directories
Options -Indexes
</Directory>
</VirtualHost>
</IfModule>

Jelikož jsem ještě neměl aktivováno, aktivoval jsem podporu ssl v apache.

a2enmod ssl

A restartoval jsem pro aktivaci změn.

apache2ctl configtest
sudo systemctl restart apache2

Nyní již funguje https://security.deb – samozřejmě je třeba přidat výjímku pro self-signed certifikát.