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.