Aktualisiert (2. September 2020)
Ein Jahr ist vergangen, seit ich diesen Artikel veröffentlicht habe. Seitdem ist Ubuntu 20.04 erschienen und die neueste Version von OpenSSL wurde am 6. August 2020 veröffentlicht. Das Einzige, was ich in diesem Artikel geändert habe, war der Buchstabe, der auf die OpenSSL 1.1.1-Serie verweist, d.h. ich habe den Buchstaben „c“ in der ursprünglichen Version durch den Buchstaben „g“ in den Befehlen der aktualisierten Version ersetzt. Während sich diese Änderungen in den Befehlen widerspiegeln, bleiben die Bilder, die die Ergebnisse dieser Befehle veranschaulichen, unangetastet. Viel Spaß bei der Lektüre!
Wenn Sie das SSL/TLS-Protokoll in Ihrer Anwendung verwenden oder dies in Kürze tun werden, empfehlen wir Ihnen, OpenSSL auf dem neuesten Stand zu halten. Dies gilt insbesondere nicht nur wegen der Rolle, die es bei der Ausstellung von Zertifikaten spielt, sondern auch nach den Lehren, die man aus Heartbleed gezogen hat.
Ubuntu 20.04.1 (das neueste 20.04-Update ab September 2020) wird mit „OpenSSL 1.1.1 31 Mar 2020“ installiert und Ubuntu 18.04.03 (das neueste 18.04-Update ab August 2019) wird mit „OpenSSL 1.1.1 11 Sep 2018“ ausgeliefert. Im Moment ist die neueste Version der OpenSSL 1.1.1-Serie „1.1.1g“, die am 6. August ausgeliefert wurde. 2020.
In diesem Artikel werde ich den Leser anleiten, wie er mit diesem Update vorgehen kann, ohne die Interoperabilität mit bestehenden Anwendungen zu verletzen, die von OpenSSL abhängen.
Ich gehe davon aus, dass der Leser mit Bash-Befehlen vertraut ist und das Update natürlich auf einer Ubuntu 20.04 oder 18.04 Box durchgeführt wird. Ich sehe zwar keinen Grund, warum diese Prozedur unter Ubuntu 16.04 nicht funktionieren sollte (falls doch, lassen Sie es mich bitte wissen), aber ich habe es nicht getestet.
Das erste, was zu tun ist, ist zu überprüfen, welche Version installiert ist:
$ openssl version
In meinem Fall war „OpenSSL 1.1.1 20 Mar 2020“ das Ergebnis.
Schritt 1: Laden Sie openssl-1.1.1g von hier herunter und speichere es im Verzeichnis ~/Downloads:
$ cd ~/Downloads
$ wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
Schritt 2: Überprüfe, ob die Datei beschädigt ist, indem du die SHA256-Prüfsumme von hier mit der berechneten Prüfsumme der heruntergeladenen Zip-Datei vergleichst:
$ 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
In der Abbildung unten sind die oben genannten Befehle gelb unterstrichen und das Ergebnis der Prüfsumme (in diesem Fall OK) ist grün unterstrichen:
Schritt 3: Überprüfen der Signatur der heruntergeladenen Zip-Datei
Bevor wir den Inhalt der heruntergeladenen Zip-Datei installieren, überprüfen wir ihre Signatur mit Hilfe von GnuPG, das mit Ubuntu ausgeliefert wird (dies ist vertrauenswürdig, wie bei GnuPG erwähnt).
Auf der OpenSSL-Download-Seite finden wir folgende Informationen: „PGP-Schlüssel für die Signaturen sind auf der OMC-Seite verfügbar. Zu den aktuellen Mitgliedern, die Releases signieren, gehören Richard Levitte und Matt Caswell.“ Wenn man dem Link auf der OMC-Seite folgt, gelangt man zu den öffentlichen Schlüsseln der Mitglieder. Der nächste Schritt besteht also darin, die benötigten Schlüssel (einer in levitte.txt und der andere in caswell.txt) herunterzuladen und sie in die GnuPG-Datenbank zu importieren. Mit 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
Um diesen Signaturen zu vertrauen, empfiehlt es sich, das Zertifikat der Domain zu überprüfen (siehe Abbildung unten). Über die Registerkarte „Sicherheit“ von Google Chrome in den Entwicklertools kann man überprüfen, ob der Aussteller „Let’s Encrypt Authority X3“ (dem der Browser vertraut) das Zertifikat für die Domain www.openssl.org ausgestellt hat, was bedeutet, dass es sich um ein Domain-Validierungszertifikat handelt, das es jedem ermöglicht, den heruntergeladenen Signaturen zu vertrauen.
Die beiden Schlüssel werden importiert und dann wie folgt aufgelistet:
$ gpg --import caswell.txt
$ gpg --import levitte.txt
$ gpg --list-keys
Die nächste Abbildung zeigt das Ergebnis der oben genannten Befehle, die gelb unterstrichen sind: