У меня есть (приватная) установка репозитория apt на сервере. Я только разрешаю доступ к этому репозиторию через SSL и только с сертификатом клиента. Я проверил соединение с помощью curl:
$ curl --cacert /opt/CA.crt --cert /opt/user.crt --key /opt/user.key
https://example.com/dists/lucid/main/binary-amd64/Packages.gz. Содержимое загружается, как ожидалось.
Я создал файл в /etc/apt/apt.conf.d/45example-com с
Debug::Acquire::https "true";
Acquire::https::example.com {
Verify-Peer "false";
Verify-Host "false";
CaInfo "/opt/CA.crt";
SslCert "/opt/user.crt";
SslKey "/opt/user.key";
};
Я добавил файл в /etc/apt/sources.list .d / example.com.list с:
deb https://example.com/ lucid mainКажется, что проблема с сертификатом CA, когда я пытаюсь update Я получаю следующее:
> apt-get update
> * Connected to example.com (8.0.0.8) port 443 (#0)
> * found 1 certificates in /opt/CA.crt
> * error reading X.509 key or certificate file
> * Closing connection #0
Журналы сервера на example.com показывают, что никакого запроса не было, поэтому я думаю, что apt-get не работает, прежде чем пытаться отправить запрос (что соответствует тому, что log говорит).
Мне было трудно найти какую-либо документацию по apt-get с ssl на interwebs и даже не удалось найти исходный код.
У кого-нибудь есть идеи?
В основном это происходит с проблемой разрешений на каталоги, apt-get очень осознает, какое разрешение задано для ключей и файла cert, поэтому установка простого 777 или 644 никогда не будет работать.
в https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1668944 было очень полезно сузить эту проблему.
Я сделал следующие шаги, чтобы решить эту проблему,
Добавить _подключить пользователя к группе ssl-cert~# usermod -G ssl-cert _apt
Добавить _подключить пользователя к группе ssl-cert~# chgrp ssl-cert /opt/CA.crt /opt/user.crt /opt/user.key
Исправьте права доступа к файлам~# chmod 655 /opt/CA.crt /opt/user.crt /opt/user.key
Также, если это не работает для вас, вы можете su как _apt и попробуйте прочитать ваши файлы сертификатов и ключей, если вы можете попробовать с сертификатом клиента работать как ожидалось.
Чтобы убедиться, что вы используете самоподписанный сертификат, убедитесь, что вы запустили
~# sudo update-ca-certificates
после переноса сертификата ca / usr / local / share / ca-certificate /
В основном это происходит с проблемой разрешений на каталоги, apt-get очень осознает, какое разрешение задано для ключей и файла cert, поэтому установка простого 777 или 644 никогда не будет работать.
в https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1668944 было очень полезно сузить эту проблему.
Я сделал следующие шаги, чтобы решить эту проблему,
Добавить _подключить пользователя к группе ssl-cert~# usermod -G ssl-cert _apt
Добавить _подключить пользователя к группе ssl-cert~# chgrp ssl-cert /opt/CA.crt /opt/user.crt /opt/user.key
Исправьте права доступа к файлам~# chmod 655 /opt/CA.crt /opt/user.crt /opt/user.key
Также, если это не работает для вас, вы можете su как _apt и попробуйте прочитать ваши файлы сертификатов и ключей, если вы можете попробовать с сертификатом клиента работать как ожидалось.
Чтобы убедиться, что вы используете самоподписанный сертификат, убедитесь, что вы запустили
~# sudo update-ca-certificates
после переноса сертификата ca / usr / local / share / ca-certificate /