- Certifikát pro náš server získáme zdarma například na buy.wosign.com/free/. Do pole Domain name: napíšeme bisXXX.vse.cz (kde XXX je číslo našeho serveru). Ostatní nastavení neměníme.
- V kroku 2 klikneme na Validate now. Protože na našem serveru nemůžeme přijímat poštu z internetu, přepneme na Website Control verification a stáhneme si soubor vse.cz.html. Stránku nezavíráme.
- Stažený soubor vse.cz.html nahrajeme napříkald pomocí WinSCP do našeho domovského adresáře na našem serveru (do jiných adresářů přes WinSCP přistupovat nemůžeme).
- Na serveru potom z konzole soubor vse.cz.html přesuneme jako administrátoři do složky /var/www/html, zadáme tedy sudo mv vse.cz.html /var/www/html.
Můžeme si ověřit, že je soubor přístupný z internetu. Do webového prohlížeče zadáme adresu bisXXX.vse.cz/vse.cz.html (kde XXX je číslo našeho serveru). Měli bychom vidět řadu čísel a písmen.
- Nyní se vrátíme na stránku WoSign a pokračujeme tam, kde jsme v kroku 2 skončili. Opíšeme kontrolní kód a stiskneme tlačítko The verification file is ready in website, Continue. Na stránce bychom měli nyní vidět Validated: vse.cz.
- V kroku 3 necháme označenou možnost Option 2:Generate by myself. Stránku nezavíráme. Nyní si v konzoli vygenerujeme Certificate Signing Request (CSR) a soukromý SSL klíč.
Zadáme openssl req -out bisXXX.vse.cz.csr -new -sha256 -newkey rsa:2048 -nodes -keyout bisXXX.vse.cz.key (bisXXX.vse.cz.csr a bisXXX.vse.cz.key jsou v tomto příkazu pouze jména souborů, mohou se jmenovat jakkoli).
xname00@bisXXX:~$ openssl req -out bisXXX.vse.csr -new -sha256 -newkey rsa:2048 -nodes
-keyout bisXXX.vse.cz.key
Generating a 2048 bit RSA private key
.............................................................+++
...................................+++
writing new private key to 'bisXXX.vse.cz.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
- Budeme dotázáni na dvoumístný kód naší země (zadáme CZ) a na další informace k certifikátu (země, město, organizace, jméno našeho serveru, e-mailová adresa, ...). Pokud chceme některá pole nechat prázdná, zadáme tečku (například Organizational Unit Name nemusíme vyplňovat).
...
Country Name (2 letter code) [AU]:cz
State or Province Name (full name) [Some-State]:Czech Republic
Locality Name (eg, city) []:Prague
Organization Name (eg, company) [Internet Widgits Pty Ltd]:University of Economics, Prague
Organizational Unit Name (eg, section) []:.
Common Name (e.g. server FQDN or YOUR name) []:bisXXX.vse.cz
Email Address []:xname00@vse.cz
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456
An optional company name []:.
xname00@bisXXX:~$
- Nyní v našem domovském adresáři existují soubory bisXXX.vse.csr a bisXXX.vse.cz.key. Soubor bisXXX.vse.csr si například pomocí WinSCP stáhneme.
- Vrátíme se na stránku WoSign a do textového pole v kroku 3 vložíme obsah souboru bisXXX.vse.csr (všechny znaky mezi -----BEGIN CERTIFICATE REQUEST----- a -----END CERTIFICATE REQUEST-----).
- V kroku 4 zadáme naši e-mailovou adresu (musí být správná, protože nám na ni přijde certifikát). Pokud nemáme WoSign účet, zadáme ještě dvakrát nějaké heslo, opíšeme kód, zatrhneme, že jsme si přečetli podmínky a souhlasíme s nimi, a stiskneme tlačítko Submit request.
- Na další stránce se dozvíme předpokládané datum a čas, kdy nám bude certifikát zaslán (pravděpodobně do druhého dne, protože ho musejí ve WoSign ručně ověřit).
- Zatímco čekáme na certifikát, přesuneme si na serveru náš dříve vygenerovaný privátní SSL klíč (soubor bisXXX.vse.cz.key) do složky /etc/ssl/private.
Do konzole zadáme sudo mv bisXXX.vse.cz.key /etc/ssl/private.
- Jakmile obdržíme od WoSign e-mail s odkazem na certifikát, navštívíme ho, opíšeme kontrolní kód, zaškrtneme, že jsme si přečetli podmínky, a stiskneme tlačítko Retrieve, které nás dostane na stránku se stažením certifikátu (bisXXX.vse.cz_sha256_en.zip).
- Po rozbalení archivu získáme čtyři další archivy s certifikáty pro různé webservery. Nás bude zajímat pouze archiv for Apache.zip, který obsahuje soubory 1_root_bundle.crt a 2_bisXXX.vse.cz.crt.
Oba soubory si z archivu extrahujeme a nahrajeme je například pomocí WinSCP na náš server.
- Oba soubory nyní z konzole přesuneme na serveru do složky /etc/ssl/certs.
Do konzole zadáme sudo mv 1_root_bundle.crt /etc/ssl/certs a také sudo mv 2_bisXXX.vse.cz.crt /etc/ssl/certs (kde XXX je číslo našeho serveru).
- Nyní nakonfigurujeme Apache tak, aby certifikáty používal. Otevřeme v editoru konfigurační soubor pro SSL. Zadáme sudo nano /etc/apache2/sites-available/default-ssl.conf.
GNU nano 2.2.6 File: /etc/apache2/sites-available/default-ssl.conf
# SSLCertificateFile directive is needed.
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
# Server Certificate Chain:
# Point SSLCertificateChainFile at a file containing the
# concatenation of PEM encoded CA certificates which form the
# certificate chain for the server certificate. Alternatively
# the referenced file can be the same as SSLCertificateFile
# when the CA certificates are directly appended to the server
# certificate for convinience.
#SSLCertificateChainFile /etc/apache2/ssl.crt/server-ca.crt
# Certificate Authority (CA):
# Set the CA certificate verification path where to find CA
# certificates for client authentication or alternatively one
# huge file containing all of them (file must be PEM encoded)
# Note: Inside SSLCACertificatePath you need hash symlinks
# to point to the certificate files. Use the pro$
^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text^T To Spell
- Budeme editovat řádky označené zeleně na výpisu nahoře. První řádek SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem přepíšeme na SSLCertificateFile /etc/ssl/certs/2_bisXXX.vse.cz.crt (kde XXX je číslo našeho serveru). Druhý řádek SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key přepíšeme na SSLCertificateKeyFile /etc/ssl/private/bisXXX.vse.cz.key (soubor bisXXX.vse.cz.key je soubor s privátním klíčem, který jsme si generovali při podávání žádosti o certifikát). Třetí řádek #SSLCertificateChainFile /etc/apache2/ssl.crt/server-ca.crt upravíme na SSLCertificateChainFile /etc/ssl/certs/1_root_bundle.crt (kromě přepsání cesty a názvu souboru jsme také odstranili # na začátku řádku).
- Nyní zakážeme slabé šifrování. Do souboru editovaného v předchozím kroku vložíme následující řádky:
SSLHonorCipherOrder on
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"
GNU nano 2.2.6 File: /etc/apache2/sites-available/default-ssl.conf Modified
#SSLCARevocationPath /etc/apache2/ssl.crl/
#SSLCARevocationFile /etc/apache2/ssl.crl/ca-bundle.crl
# Client Authentication (Type):
# Client certificate verification type and depth. Types are
# none, optional, require and optional_no_ca. Depth is a
# number which specifies how deeply to verify the certificate
# issuer chain before deciding the certificate is not valid.
#SSLVerifyClient require
#SSLVerifyDepth 10
SSLHonorCipherOrder on
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA2...
# SSL Engine Options:
# Set various options for the SSL engine.
# o FakeBasicAuth:
# Translate the client X.509 into a Basic Authorisation.$
^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text^T To Spell
- Stiskneme Ctrl+X, poté Y a Enter, čímž editor ukončíme a soubor uložíme.
- Povolíme SSL, zadáme sudo a2enmod ssl. Pro načtení změn zadáme sudo a2ensite default-ssl.
- Nakonec vynutíme HTTPS. V editoru otevřeme soubor /etc/apache2/sites-available/000-default.conf, zadáme sudo nano /etc/apache2/sites-available/000-default.conf. Do konfiguračního souboru přidáme před koncový tag </VirtualHost> řádek Redirect permanent / https://bisXXX.vse.cz/ (kde XXX je číslo našeho serveru).
GNU nano 2.2.6 File: /etc/apache2/sites-available/000-default.conf Modified
CustomLog ${APACHE_LOG_DIR}/access.log combined
Redirect permanent / https://bisXXX.vse.cz/
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text^T To Spell
- Stiskem Ctrl+X, poté Y a Enter editor ukončíme a soubor uložíme.
- Aby se změny projevily, restartujeme Apache. Zadáme sudo service apache2 reload.
- Náš server otestujeme na SSLLabs.
- S nastavením popsaným v tomto návodu získá náš server hodnocení A, což je dostačující (stejné hodnocení má i hlavní server bis.vse.cz).