Câu hỏi Apt với chứng chỉ ứng dụng khách và HTTPS


Tôi có một thiết lập kho lưu trữ apt (riêng) trên một máy chủ. Tôi chỉ cho phép truy cập vào kho lưu trữ này qua SSL và chỉ với chứng chỉ ứng dụng khách. Tôi đã thử nghiệm kết nối bằng cách sử dụng curl:

$ curl --cacert /opt/CA.crt --cert /opt/user.crt --key /opt/user.key

https://example.com/dists/lucid/main/binary-amd64/Packages.gz Nội dung được tải xuống như mong đợi.

Tôi đã tạo một tệp trong /etc/apt/apt.conf.d/45example-com với

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

Tôi đã thêm một tệp tại /etc/apt/sources.list.d/example.com.list với:

deb https://example.com/ sáng suốt

Dường như có sự cố với chứng chỉ CA, khi tôi thử cập nhật, tôi nhận được thông tin sau:

> 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

Các bản ghi máy chủ trên example.com cho thấy rằng không có yêu cầu nào ở đó, vì vậy tôi đoán rằng apt-get bị lỗi trước khi cố gắng gửi yêu cầu (khớp với những gì nhật ký nói).

Tôi đã có một thời gian khó khăn tìm kiếm bất kỳ tài liệu hướng dẫn về apt-get với ssl trên interwebs, và thậm chí không thể tìm thấy mã nguồn.

Có ai có ý tưởng nào?


3
2018-05-25 21:29


gốc


Tùy chọn / Giải pháp được thảo luận trong chuỗi askubuntu.com/questions/166215/… isnt giúp đỡ nhiều, tôi vẫn gặp phải các lỗi tương tự. - davidls
các quyền của tệp trên /opt/CA.crt là gì? Bạn đang chạy selinux? - cleary
Tôi đã thử gần như mọi kết hợp có thể, từ 755, 744, đến 444 ngay bây giờ là 755 và không tôi không chạy selinux - davidls
Để thêm vào, tôi có thể kết nối thành công với gnutls-cli và curl. - davidls


Các câu trả lời:


Điều này chủ yếu xảy ra với một vấn đề cho phép thư mục, apt-get là rất ý thức về những gì sự cho phép được thiết lập cho các phím và tập tin cert, do đó, thiết lập một chỉ 777 hoặc 644 sẽ không bao giờ làm việc.

Các bước được mô tả trong https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1668944 rất hữu ích để thu hẹp vấn đề này.

Tôi đã thực hiện các bước sau để giải quyết vấn đề này,

  1. thêm _apt người dùng vào nhóm ssl-cert

~# usermod -G ssl-cert _apt

  1. Thay đổi nhóm thư mục certs

~# chgrp ssl-cert /opt/CA.crt /opt/user.crt /opt/user.key

  1. Sửa các quyền của tệp

~# chmod 655 /opt/CA.crt /opt/user.crt /opt/user.key

Ngoài ra nếu điều này không làm việc cho bạn, bạn có thể su như _apt và cố gắng đọc các tệp tin cert và key của bạn, nếu bạn có thể apt với cert của máy khách nên hoạt động như mong đợi.

Chỉ để đảm bảo rằng bạn đang sử dụng chứng chỉ tự ký, hãy đảm bảo bạn chạy

~# sudo update-ca-certificates

khi bạn chuyển chứng chỉ ca / ​​usr / local / share / ca-certificates /


1
2018-05-26 17:34