OPDATERET (2. september 2020)
Der er gået et år siden jeg offentliggjorde denne historie. Siden da er Ubuntu 20.04 blevet udgivet, og OpenSSL nyeste version blev offentliggjort den 6. august 2020. Dybest set var det eneste, jeg ændrede i denne historie, det bogstav, der henviser til OpenSSL 1.1.1-serien, dvs. at jeg ændrede bogstavet “c” i den oprindelige version til bogstavet “g” i kommandoerne i den opdaterede version. Mens disse ændringer er afspejlet i kommandoerne, forbliver billederne, der illustrerer resultaterne af disse kommandoer, uændrede. God fornøjelse med læsningen!
Hvis du bruger SSL/TLS-protokollen i din applikation, eller hvis du er ved at gøre det, anbefales det at holde OpenSSL opdateret. Dette gælder specielt ikke kun på grund af den rolle, det spiller i udstedelsen af certifikater, men også efter erfaringerne med Heartbleed.
Ubuntu 20.04.1 (den seneste 20.04-opdatering fra september 2020) leveres med “OpenSSL 1.1.1.1 31 Mar 2020” installeret og Ubuntu 18.04.03 (den seneste 18.04-opdatering fra august 2019) leveres med “OpenSSL 1.1.1.1 11 Sep 2018” leveret. I øjeblikket er OpenSSL 1.1.1-seriens seneste version “1.1.1.1g” afsendt den 6. august. 2020.
I denne historie vil jeg guide læseren til, hvordan han/hun kan fortsætte med denne opdatering uden at bryde interoperabiliteten med eksisterende applikationer, der er afhængige af OpenSSL.
Jeg antager, at læseren er bekendt med bash-kommandoer, og at opdateringen naturligvis skal foregå på en Ubuntu 20.04- eller 18.04-boks. Selv om jeg ikke kan se nogen grund til, at denne procedure ikke skulle virke på Ubuntu 16.04 (hvis du gør, så lad mig vide det), blev den ikke testet.
Den første ting du skal gøre er at kontrollere, hvilken version der er installeret:
$ openssl version
I mit tilfælde var resultatet “OpenSSL 1.1.1 20 Mar 2020”.
Stræk 1: Download openssl-1.1.1g herfra og gem den i ~/Downloads-mappen:
$ cd ~/Downloads
$ wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
Stræk 2: Kontroller for korruption ved at sammenligne SHA256-kontrolsummen herfra med den beregnede kontrolsum i den downloadede zip-fil:
$ 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
I billedet nedenfor er ovenstående kommandoer understreget med gult, og kontrolsumresultatet (OK i dette tilfælde) er understreget med grønt:
Stræk 3: Kontroller signaturen af den downloadede zip-fil
Hvor vi installerer indholdet af den downloadede zip-fil, vil vi verificere dens signatur ved hjælp af GnuPG, der leveres med Ubuntu (dette kan man stole på som nævnt på GnuPG).
På OpenSSL download-siden finder vi følgende oplysninger : “PGP-nøgler til signaturerne er tilgængelige fra OMC-siden. Aktuelle medlemmer, der underskriver udgivelser, omfatter Richard Levitte og Matt Caswell.” Hvis vi følger linket på OMC-siden, når vi frem til medlemmernes offentlige nøgler. Det næste skridt er således at hente de nødvendige nøgler (den ene i levitte.txt og den anden i caswell.txt) og importere dem i GnuPG-databasen. Ved hjælp af 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
For at kunne stole på disse signaturer er det god praksis at verificere domænets certifikat (nedenstående figur). Ved hjælp af Googles Chrome Security-fane i Developer tools kan man bekræfte, at udstederen ” Let’s Encrypt Authority X3″ (som browseren har tillid til) har udstedt certifikatet til domænet www.openssl.org, hvilket betyder, at der er tale om et Domain Validation-certifikat, som gør det muligt for alle at stole på de signaturer, der downloades.
Både nøgler er importeret og derefter opført som bellow:
$ gpg --import caswell.txt
$ gpg --import levitte.txt
$ gpg --list-keys
Den næste illustration indeholder resultatet af ovenstående kommandoer, der er understreget med gul: