it-swarm.com.de

Apt-get SSL-Client-Zertifikat funktioniert nicht unter 16.04 (Fehler beim Lesen der Datei)

Ich habe den gleichen funktionierenden SSL-Clientschlüssel/-Zertifikat und die /etc/apt/apt.conf.d/01_https_client_cert -Regel von einer (funktionierenden) 14.04 VM auf eine neue 16.04-Installation portiert.

Ich kann das SSL-Client-Zertifikat verwenden, um über curl auf das Apt Repo zuzugreifen, aber apt-get update beklagt sich mit folgendem Fehler:

6% [Working]* Hostname example.com was found in DNS cache
*   Trying 11.22.33.44...
* Connected to example.com (11.22.33.44) port 443 (#29)
* found 173 certificates in /etc/ssl/certs/ca-certificates.crt
* found 697 certificates in /etc/ssl/certs
* ALPN, offering http/1.1
* error reading X.509 key or certificate file: Error while reading file.
* Closing connection 29
Ign:5 https://example.com/apt release/main all Packages

/etc/apt/apt.conf.d/01_ssl_client_auth ist auf beiden Systemen gleich:

Debug::Acquire::https "true";
Acquire::https::example.com::SslCert "/opt/example/keyring/ssl_client.crt";
Acquire::https::example.com::SslKey "/opt/example/keyring/ssl_client.key";

Die Berechtigungen sind auf beiden Computern gleich:

[email protected]:~$ namei -mo /opt/example/keyring/ssl_client.crt
f: /opt/example/keyring/ssl_client.crt
 drwxr-xr-x root    root    /
 drwxr-sr-x ubuntu ubuntu opt
 drwxrwsr-x ubuntu ubuntu example
 drwxrws--- ubuntu ubuntu keyring
 -rw-rw---- ubuntu ubuntu ssl_client.crt

Wissenswertes:

  1. Das Entfernen der 01_ssl_client_auth -Regel gibt die erwartete 403 verbotene Antwort zurück (da für das Repository ein Client-Zertifikat erforderlich ist).

  2. curl funktioniert gut so:

    curl --cert /opt/example/keyring/ssl_client.crt --key /opt/example/keyring/ssl_client.key https://example.com/apt/
    
    Connected to example.com (11.22.33.44) port 443 (#0)
    found 173 certificates in /etc/ssl/certs/ca-certificates.crt
    found 697 certificates in /etc/ssl/certs
    ALPN, offering http/1.1
    SSL connection using TLS1.2 / ECDHE_RSA_AES_128_GCM_SHA256
         server certificate verification OK
         server certificate status verification SKIPPED
         common name: *.example.com (matched)
         server certificate expiration date OK
         server certificate activation date OK
         certificate public key: RSA
           (snip)
    ALPN, server did not agree to a protocol
    GET /apt/ HTTP/1.1
    Host: example.com
    User-Agent: curl/7.47.0
    Accept: */*
    
    HTTP/1.1 200 OK
    Server: nginx/1.4.6 (Ubuntu)
    Date: Wed, 18 May 2016 01:18:30 GMT
    Content-Type: text/html
    Transfer-Encoding: chunked
    Connection: keep-alive
    
  3. Und natürlich funktionieren apt-get und curl beide auf dem ursprünglichen System mit demselben apt.conf.d und Zertifikat ...


Was sollte ich sonst noch anschauen? Gab es eine Änderung von crt/key zu pem in apt-get oder so?

3
summerhat83

Weitere Informationen finden Sie unter https://wiki.ubuntu.com/XenialXerus/ReleaseNotes#Apt_1.2

Zu den empfohlenen Einstellungen gehört, das Zertifikat und die Schlüssel in ein anderes Verzeichnis zu kopieren und die Benutzerberechtigungen in zu ändern

_apt: nogroup

und konfigurieren

apt_transport_https

setup, um den neuen Pfad zu verwenden.

Acquire::https::cdn-mirror.insnw.net::CaInfo "/new/path/ca.crt";
Acquire::https::cdn-mirror.insnw.net::SslCert "/new/path.crt";
Acquire::https::cdn-mirror.insnw.net::SslKey  "/new/path.key"";
1
davidls

Apt ist bemüht, Berechtigungen zu löschen und als Benutzer _apt auszuführen. Ich kann mich nicht erinnern, wann dieser Wechsel stattgefunden hat, aber er war ziemlich neu (d. H. Wahrscheinlich nach 14.04). Nachdem ich mein ähnliches Problem auf dieselbe Art und Weise behoben habe (dh sichergestellt habe, dass a+rx in allen Verzeichnissen verfügbar war, die zu dem Zertifikat führten, das ich verwenden wollte _apt), denke ich, dass es sicher ist, Sie zu sagen. ' habe das problem richtig erkannt.

1
frrisus