Apt-get SSL-сертификат клиента не работает 16.04 (ошибка при чтении файла)

Я перенес тот же рабочий ключ / сертификат клиента SSL и правило /etc/apt/apt.conf.d/01_https_client_cert с (работающей) 14.04 ВМ на новую установку 16.04.

Я могу использовать сертификат клиента SSL для доступа к репозиторию apt через curl, но apt-get update жалуется на эту ошибку:

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 одинаково на обоих systems:

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";

Разрешения одинаковы на обеих машинах:

ubuntu@ubuntu:~$ 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

Общая информация:

  1. Удаление Правило 01_ssl_client_auth возвращает ожидаемый 403 запрещенный ответ (поскольку для репо требуется сертификат клиента)

  2. curl работает очень хорошо, например:

    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. И, конечно, apt-get и curl оба работают на исходной системе с одинаковыми apt.conf.d и сертификатами ...


Что-нибудь еще, на что я должен смотреть? Были ли какие-то изменения от crt / key до pem в apt-get или как-то еще?

3
задан 18 May 2016 в 04:43

2 ответа

Кв. очень старается отбросить полномочия и работать как _apt пользователь. Я не помню, когда тот переключатель произошел, но это было довольно недавним (т.е. вероятно быть после 14.04). Так, решив мою подобную проблему тем же путем Вы сделали (т.е. удостоверился, что a+rx было доступно на всем продвижении каталогов до сертификата, который я хотел _apt использовать), я думаю, смело можно сказать, что Вы определили проблему правильно.

0
ответ дан 18 May 2016 в 14:43
  • 1
    Можно отформатировать подкачку снова с GParted от живого CD Ubuntu (не от установленной ОС), Выделяют 2 ГБ, чтобы подкачать и отформатировать остающихся 10 ГБ как NTFS. Можно использовать раздел NTFS для того, чтобы хранить документы, и медиа и свободный располагают с интервалами от системы. Не возможный увеличить системный размер раздела без форматирования. Его лучшее, чтобы переустановить, но уменьшить размер подкачки в следующий раз. Ubuntu' s установщик позволяет делать это от GUI:) – sziraqui 24 November 2017 в 03:26

Необходимо смочь, находят больше деталей от https://, настройки wiki.ubuntu.com/XenialXerus/ReleaseNotes#Apt_1.2

Recommend являются копией сертификат и ключи к другому каталогу, и измените полномочия пользователя на

_apt:nogroup

и настройте

установка apt_transport_https

для использования нового пути.

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"";
0
ответ дан 17 April 2019 в 03:33

Другие вопросы по тегам:

Похожие вопросы: