Linux: Jak na vlastní CA a certifikát pro HTTPS web zdarma
V tomto návodu vytvoříme na linuxovém webserveru pomocí balíčku openssl vlastní certifikační autoritu, kterou následně podepíšeme žádost o certifikát SSL pro danou doménu a poté upravíme konfiguraci apache webserveru pro provoz zabezpečeného protokolu HTTPS.
Vytvoření vlastní certifikační autority (CA)
root@debian-p4:apt-get install openssl
root@debian-p4:openssl req -new -x509 -days 730 -newkey rsa:4096 -keyout CA.key -out CA.crt
Generating a 4096 bit RSA private keyVyplnit údaje + heslo
Nastavení OpenSSL
root@debian-p4:mkdir newcerts
root@debian-p4:touch index.txt
root@debian-p4:nano openssl.conf
root@debian-p4:nano serial
#doplnit do něj 01
Vytvoření certifikátu SSL pro doménu (web)
- v tomto případě vytvoříme SSL certifikát pro cloud.up4.cz
root@debian-p4:openssl req -new -nodes -newkey rsa:2048 -keyout cloud.up4.cz.key -out cloud.up4.cz.csr
Generating a 2048 bit RSA private keyVyplnit údaje + nedávat heslo
Podepsání certifikátu vlastní CA
- následně musíme vytvořený certifikát podepsat nějakou (zde naší) certifikační autoritou
root@debian-p4:openssl ca -in cloud.up4.cz.csr -out cloud.up4.cz.crt -config openssl.conf
Using configuration from ./openssl.conf
Enter pass phrase for ./CA.key:
Sign the certifacate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
Přesuneme certifikáty
- přesuneme certifikáty, spustíme příkaz a2enmod a provedeme update CA certifikátů
root@debian-p4:cp ./CA.crt /etc/apache2/ssl/
root@debian-p4:cp ./cloud.up4.cz.crt /etc/apache2/ssl/
root@debian-p4:cp ./cloud.up4.cz.key /etc/apache2/ssl/
root@debian-p4:cp ./CA.crt /etc/apache2/ssl/
root@debian-p4:a2enmod rewrite && a2enmod headers && a2enmod ssl
root@debian-p4:update-ca-certificates
Úprava virtualhostu pro doménu v apache serveru
nano /etc/apache2/conf-enabled/superuser-ssl.conf
[html]
<VirtualHost *:80>
RewriteEngine on
ReWriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</VirtualHost>
<VirtualHost *:443>
ServerName cloud.up4.cz
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/cloud.up4.cz.crt
SSLCertificateKeyFile /etc/apache2/ssl/cloud.up4.cz.key
SSLCACertificateFile /etc/apache2/ssl/CA.crt
DocumentRoot /var/www/html/cloud.up4.cz
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15768000; includeSub$
</IfModule>
</VirtualHost>
[/html]
Provedeme restart apache serveru
/etc/init.d/apache2 restart
a to je vše!#
#
#
Dodatkové tipy k ovládání běhu webserveru Apache:
apachectl stop/start/restart/status/fullstatus
- toto snad není třeba vysvětlovat :-)apachectl configtest
- zkontroluje syntaktické chyby v konfiguraci (hodí se po úpravě konfigurace)apachectl graceful
- jemný restart = obslouží probíhající požadavky a až pak provede restartapachectl graceful-stop
- jemné zastavení = obslouží probíhající požadavky a až pak provede zastavení