ฉันยังคงมีปัญหาเดิม ไม่มีคำตอบใดข้างต้นที่ช่วยแก้ปัญหาได้ ฉันมี Ubuntu 16.04 และฉันทำตามขั้นตอนที่อธิบายไว้ในhttps://docs.docker.com/install/linux/docker-ce/ubuntu/
ฉันสงสัยว่ามันเกี่ยวข้องกับapt-get
บั๊กเกี่ยวกับ https ข้อมูลที่พิมพ์โดยapt-get
ทำให้เข้าใจผิด
ฉันคิดว่าFailed to fetch..
สามารถแปลเป็น:problem accessing resource from within an https connection
ฉันได้ข้อสรุปนี้อย่างไร:
ก่อนอื่นฉันอยู่หลังพร็อกซีขององค์กรดังนั้นฉันจึงตั้งค่าการกำหนดค่าต่อไปนี้:
/etc/apt/apt.conf
Acquire::http::proxy "http://squidproxy:8080/";
Acquire::https::proxy "http://squidproxy:8080/";
Acquire::ftp::proxy "ftp://squidproxy:8080/";
Acquire::https::CaInfo "/etc/ssl/certs/ca-certificates.pem";
/etc/apt/apt.conf.d/99proxy
Acquire::http::Proxy {
localhost DIRECT;
localhost:9020 DIRECT;
localhost:9021 DIRECT;
};
ฉันทำการทดสอบต่อไปนี้ด้วยรายการที่แตกต่างกันใน sources.list
รายการทดสอบ 1:
deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable
sudo apt-get update
W: The repository 'https://download.docker.com/linux/ubuntu xenial Release' does not have a Release file.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
E: Failed to fetch https://download.docker.com/linux/ubuntu/dists/xenial/stable/binary-amd64/Packages
E: Some index files failed to download. They have been ignored, or old ones used instead.
ความล้มเหลว
รายการทดสอบ 2:
deb [arch=amd64] http://localhost:9020/linux/ubuntu xenial stable
/etc/apache2/sites-enabled/apt-proxy.conf
# http to https reverse proxy configuration.
Listen 9020
<VirtualHost *:9020>
SSLProxyEngine On
# pass from squid proxy
ProxyRemote https://download.docker.com/ http://squidproxy:8080
ProxyPass / https://download.docker.com/
ProxyPassReverse / https://download.docker.com/
ErrorLog ${APACHE_LOG_DIR}/apt-proxy-error.log
CustomLog ${APACHE_LOG_DIR}/apt-proxy-access.log combined
</VirtualHost>
sudo apt-get update
Hit:1 ..
Hit:2 ..
...
Hit:7 http://localhost:9020/linux/ubuntu xenial InRelease
Get:8 ...
Fetched 323 kB in 0s (419 kB/s)
Reading package lists... Done
ประสบความสำเร็จ
รายการทดสอบ 3:
deb [arch=amd64] https://localhost:9021/linux/ubuntu xenial stable
/etc/apache2/sites-enabled/apt-proxy.conf
# https to https revere proxy
Listen 9021
<VirtualHost *:9021>
# serve on https
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
SSLProxyEngine On
# pass from squid proxy
ProxyRemote https://download.docker.com/ http://squidproxy:8080
ProxyPass / https://download.docker.com/
ProxyPassReverse / https://download.docker.com/
ErrorLog ${APACHE_LOG_DIR}/apt-proxy-error.log
CustomLog ${APACHE_LOG_DIR}/apt-proxy-access.log combined
</VirtualHost>
sudo apt-get update
W: The repository 'https://localhost:9021/linux/ubuntu xenial Release' does not have a Release file.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
E: Failed to fetch https://localhost:9021/linux/ubuntu/dists/xenial/stable/binary-amd64/Packages
E: Some index files failed to download. They have been ignored, or old ones used instead.
ความล้มเหลว
ในกรณีข้างต้น url ที่ apt-get Failed to fetch
และRelease
ไฟล์สามารถเข้าถึงได้จริงจากbrowser
/ wget
/ curl
โดยใช้การกำหนดค่าพร็อกซีเดียวกัน
ความจริงที่ว่าapt-get
ทำงานเพียงด้วย http URL พร็อกซีย้อนกลับแสดงให้เห็นว่ามีบางปัญหาการเข้าถึงทรัพยากรจากภายในการเชื่อมต่อ https
ฉันไม่รู้ว่าปัญหานี้คืออะไร แต่apt-get
ควรแสดงข้อความที่ให้ข้อมูลมากกว่านี้ ( apt
เป็นข้อมูลที่ละเอียดกว่า)
หมายเหตุ: wireharking case 1 แสดงให้เห็นว่า proxy CONNECT
ทำได้สำเร็จและไม่มีการส่ง RST แต่แน่นอนว่าไฟล์ไม่สามารถอ่านได้