Ubuntu kann das Sectigo-Zertifikat nicht verifizieren

Ubuntu kann das Sectigo-Zertifikat nicht verifizieren

Auf einem Server, den wir für einen Kunden verwalten, kann keine Anwendung auf bestimmte HTTPS-URLs zugreifen, zum Beispiel:

$ wget https://open-data.bielefeld.de/sites/default/files/alters_und_geschlechtsstruktur_ende2011bismitte2022.csv
--2022-12-21 15:59:58--  https://open-data.bielefeld.de/sites/default/files/alters_und_geschlechtsstruktur_ende2011bismitte2022.csv
Resolving open-data.bielefeld.de (open-data.bielefeld.de)... 194.8.223.72
Connecting to open-data.bielefeld.de (open-data.bielefeld.de)|194.8.223.72|:443... connected.
ERROR: cannot verify open-data.bielefeld.de's certificate, issued by ‘CN=Sectigo RSA Domain Validation Secure Server CA,O=Sectigo Limited,L=Salford,ST=Greater Manchester,C=GB’:
  Unable to locally verify the issuer's authority.
To connect to open-data.bielefeld.de insecurely, use `--no-check-certificate'.

Mehrere Programme (einschließlich R- und Python-Skripte) haben dieses Problem, aber ich kann die URL problemlos von meinem Desktop-Browser aus aufrufen. Ich gehe davon aus, dass ein Problem mit den Stammzertifikaten oder der Zertifikatskette vorliegt. Auf dem Server läuft Ubuntu 20.04 LTS und alle Pakete sind auf dem neuesten Stand. Was könnte die Ursache für dieses Problem sein und gibt es eine Möglichkeit, es (sicher und einfach) auf meiner Seite zu beheben?

Antwort1

Tatsächlich fehlte ein Zertifikat, kein Stammzertifikat, sondern ein Zwischenzertifikat. HTTPS-Server sollten alle Zertifikate in der Kette (abzüglich des Stammzertifikats) mit ihrer Antwort senden, aber einige Server tun dies nicht. Webbrowser können damit umgehen, indem sie eine Technik namens AIA (Authority Information Access) chasing* verwenden, viele andere Clients implementieren dies jedoch nicht.

Wie Steffen Ulrich in seinem Kommentar erwähnt hat, können Sie das fehlende Zertifikat finden und auf Ihrem System installieren.

Holen Sie sich zuerst das Zertifikat. Sie können dies manuell tun, indem Sie die Site aufSSLLabs, und googeln Sie den Fingerabdruck des fehlenden Zertifikats. Das Zertifikat sollte im PEM-Format vorliegen (base64-codiert mit BEGIN und END CERTIFICATE). Ich habe auch ein Skript geschrieben, um das Zertifikat über AIA abzurufen, bevor mir klar wurde, dass man das auch manuell machen kann:https://github.com/jdmansour/fetch-intermediate-certs

Um das Zertifikat dann in Ubuntu/Debian zu importieren, platzieren Sie es in /usr/share/ca-certificates/extra(erstellen Sie das Verzeichnis, falls nötig) und führen Sie es aus sudo dpkg-reconfigure ca-certificates. Sie werden gefragt, ob neuen Zertifikaten bei Systemupdates vertraut werden soll – wählen Sie eine beliebige Option, ich glaube, „ja“ ist die Standardeinstellung. Im nächsten Bildschirm können Sie Ihr neues Zertifikat aktivieren. Es sollte von den meisten Tools, die OpenSSL verwenden, sofort erkannt werden.


*) Soweit ich weiß, implementiert Firefox AIA nicht, aber es funktioniert dort irgendwie auch.

verwandte Informationen