2
憑證 x509 問題
Jeffery edited this page 2026-06-11 10:03:47 +08:00

簡介

當網路環境中有防火牆或代理(例如 Fortinet)對 HTTPS 連線做 SSL 攔截時,Ubuntu 會因為缺少對應的根憑證而出現 x509 憑證錯誤(例如 docker pull 失敗)。解決方式是把攔截端的憑證加入系統信任清單。

1. 查詢缺少的憑證

連線到目標站台並列出完整憑證鏈。

openssl s_client -connect registry-1.docker.io:443 -showcerts

複製憑證鏈中最後的憑證金鑰。以下內容請自行執行取得,因為憑證可能更新(以下金鑰複製於 2025/03/24):

-----BEGIN CERTIFICATE-----
MIID5jCCAs6gAwIBAgIIIXGGV4x82u0wDQYJKoZIhvcNAQELBQAwgakxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRIwEAYDVQQHDAlTdW5ueXZhbGUx
ETAPBgNVBAoMCEZvcnRpbmV0MR4wHAYDVQQLDBVDZXJ0aWZpY2F0ZSBBdXRob3Jp
dHkxGTAXBgNVBAMMEEZHNkgxRVRCMjE5MDAzMjcxIzAhBgkqhkiG9w0BCQEWFHN1
cHBvcnRAZm9ydGluZXQuY29tMB4XDTIxMDgyNjIyNTUwMFoXDTMxMDgyNzIyNTUw
MFowgakxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRIwEAYDVQQH
DAlTdW5ueXZhbGUxETAPBgNVBAoMCEZvcnRpbmV0MR4wHAYDVQQLDBVDZXJ0aWZp
Y2F0ZSBBdXRob3JpdHkxGTAXBgNVBAMMEEZHNkgxRVRCMjE5MDAzMjcxIzAhBgkq
hkiG9w0BCQEWFHN1cHBvcnRAZm9ydGluZXQuY29tMIIBIjANBgkqhkiG9w0BAQEF
AAOCAQ8AMIIBCgKCAQEAr36+xa3QAC3O3GYUghMwnwLY/oJL9S1fG7jHmxsdlhZX
k+4kGSnaFDDAgUM1D8WfM6eeojL2qK82TQF4eRRYGsb9Ls/lHT4O7iDOppF66h1E
wHuSC6WYT/axv3dyfRkC3/Ic+NGmfn1EOY+XtVdf4ZCSLL/MFAcD5A8Kjxa/wcN0
1xhJMBop5hEENXxoOnc5UJKlyEQYhnpBG4J8cdceRwWTGZmCGkNgUAeivI/amADh
Ma/StLLxGqKW4zneM4db3vQJexmI+pdeM+UoUDZ++hwWF75byevntNFfYzGYvQnZ
Y1sWyph3uhyVgkx8zylFOeJKGTyCL5gbw66AaTlmSQIDAQABoxAwDjAMBgNVHRME
BTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQATzLjdJALCzxafMZCAIGi/ZHMBUt3X
HV7jDmjvNGBWyaHR9n/VsfzIojg5Eju10FSB0tBOvRwJT2kzwzXlLVzRQKeKwWbx
VxMp+gdBxSaW58u5aJKQTW0FnZQQqUtdsLw+uCCpHIxZuGSOZDzXIm2Gyfq37oBu
VjWDXFP8RLqGMZFSIapN1i02yMOD2IHfUqBngbpMJxvZa4oHOoVTKW9BkgENyRh+
XBJuzcWXbsmPKucD5O7CP+n9flP4AAz1BIrHD93ychm5rqAl5gvYD5bGDAdshWnC
ng6AGIc94BzGo10X+Ly1YK3zpPiiMx6xx2LNX3XyLUDL3QKMqVJi0G8u
-----END CERTIFICATE-----

2. 查詢憑證存放的位置

確認系統信任憑證的存放路徑。

curl -k -v https://registry-1.docker.io/v2/

Ubuntu 24.04 存放於以下位置:

/etc/ssl/certs/ca-certificates.crt

將剛剛查詢到的憑證金鑰,貼到 ca-certificates.crt 檔案的最後即可。