AKTUALIZOVÁNO (2. září 2020)
Uplynul rok od vydání tohoto článku. Od té doby vyšlo Ubuntu 20.04 a 6. srpna 2020 byla zveřejněna nejnovější verze OpenSSL. V podstatě jediné, co jsem v tomto příběhu změnil, bylo písmeno odkazující na řadu OpenSSL 1.1.1, tj. změna písmene „c“ v původní verzi na písmeno „g“ v příkazech aktualizované verze. Zatímco v příkazech se tyto změny projevily, obrázky ilustrující výsledky těchto příkazů zůstaly nezměněny. Přeji vám příjemné čtení!
Pokud ve své aplikaci používáte protokol SSL/TLS nebo se k tomu chystáte, doporučujeme udržovat OpenSSL aktualizovaný. To platí obzvlášť nejen kvůli roli, kterou hraje při vydávání certifikátů, ale také po zkušenostech s Heartbleedem.
Ubuntu 20.04.1 (nejnovější aktualizace 20.04 ze září 2020) je dodáváno s nainstalovaným „OpenSSL 1.1.1 31. března 2020“ a Ubuntu 18.04.03 (nejnovější aktualizace 18.04 ze srpna 2019) je dodáváno s „OpenSSL 1.1.1 11. září 2018“. V tuto chvíli je nejnovější verzí jazyka OpenSSL řady 1.1.1 verze „1.1.1g“ dodaná 6. srpna. 2020.
V tomto příběhu čtenáře provedu tím, jak postupovat při této aktualizaci, aniž by došlo k narušení interoperability se stávajícími aplikacemi, které jsou na OpenSSL závislé.
Předpokládám, že čtenář je obeznámen s příkazy bash a aktualizace bude samozřejmě probíhat na krabici s Ubuntu 20.04 nebo 18.04.
. I když nevidím důvod, proč by tento postup neměl fungovat na Ubuntu 16.04 (pokud ano, dejte mi prosím vědět), nebyl testován.
Nejprve je třeba zkontrolovat, jaká verze je nainstalována:
$ openssl version
V mém případě bylo výsledkem „OpenSSL 1.1.1 20 Mar 2020“.
Krok 1: Stáhněte si openssl-1.1.1g odsud a uložte jej do adresáře ~/Downloads:
$ cd ~/Downloads
$ wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
Krok 2: Zkontrolujte, zda není poškozen, porovnáním kontrolního součtu SHA256 z formuláře zde s vypočteným kontrolním součtem staženého souboru zip:
$ wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz.sha256
$ echo "$(cat openssl-1.1.1g.tar.gz.sha256) openssl-1.1.1g.tar.gz" | sha256sum --check
Na obrázku níže jsou výše uvedené příkazy podtrženy žlutě a výsledek kontrolního součtu (v tomto případě OK) je podtržen zeleně:
Krok 3: Kontrola podpisu staženého souboru zip
Před instalací obsahu staženého souboru zip ověříme jeho podpis, a to pomocí GnuPG dodávaného s Ubuntu (lze mu věřit, jak je uvedeno na stránkách GnuPG).
Na stránce OpenSSL ke stažení najdeme následující informaci : „PGP klíče pro podpisy jsou k dispozici na stránce OMC. Mezi současné členy, kteří podepisují vydání, patří Richard Levitte a Matt Caswell.“ Po odkazu na stránce OMC se dostaneme k veřejným klíčům členů. Dalším krokem je tedy stažení požadovaných klíčů (jeden v souboru levitte.txt a druhý v souboru caswell.txt) a jejich import do databáze GnuPG. Pomocí curl:
$ curl 'http://pool.sks-keyservers.net:11371/pks/lookup?op=get&search=0x7953AC1FBC3DC8B3B292393ED5E9E43F7DF9EE8C' > levitte.txt
$ curl 'http://pool.sks-keyservers.net:11371/pks/lookup?op=get&search=0x8657ABB260F056B1E5190839D9C4D26D0E604491' > caswell.txt
Pro důvěryhodnost těchto podpisů je vhodné ověřit certifikát domény (obrázek níže). Pomocí karty Zabezpečení v prohlížeči Google Chrome v rámci nástrojů pro vývojáře lze ověřit, že vydavatel “ Let’s Encrypt Authority X3″ (důvěryhodný pro prohlížeč) vydal certifikát pro doménu www.openssl.org, což znamená, že se jedná o certifikát s ověřením domény, který umožňuje komukoli důvěřovat staženým podpisům.
Oba klíče jsou importovány a poté uvedeny v následujícím seznamu:
$ gpg --import caswell.txt
$ gpg --import levitte.txt
$ gpg --list-keys
Následující obrázek obsahuje výsledek výše uvedených příkazů, které jsou podtrženy žlutě:
.