Ubuntu
無法獲得本地頒發者證書
我有一個對 *.example.com 有效的 SSL 證書。我已經能夠在 IIS 上為 subdomain.example.com 正確設置此 SSL 證書。
但是我在 ubuntu 16.04 伺服器和 nginx 上遇到了問題。
我使用 pfx 文件中的開放 SSL 創建了密鑰和證書文件。然後將範例站點添加到 nginx。這是我的 nginx 配置。
server { listen 443 ssl; server_name subdomain2.example.com subdomain2.example.com; ssl_certificate /etc/nginx/cert.crt; ssl_certificate_key /etc/nginx/cert.rsa; root /subdomain2/test; index index.html; include /etc/nginx/mime.types; }
它在瀏覽器上執行良好。但是,當我嘗試使用 curl 或使用 python 請求庫發出請求時,出現以下錯誤
無法獲得本地頒發者證書
如果我在 python 請求庫上禁用 ssl 驗證,我會得到正確的響應,但我不想禁用此驗證。
我究竟做錯了什麼?
您應該在伺服器證書文件中連接中間證書。在此處查看有關此問題的 Q/A
正如@Martin 指出的那樣,文件中證書的順序很重要。用於 TLS 1.1 的 RFC 4346 指出:
這是 X.509v3 證書的序列(鏈)。發件人的證書必須排在列表的首位。後面的每個證書必須直接證明它前面的證書。
因此順序是:
1. Your domain's certificate 2. Vendor's intermediate certificate that certifies (1) 3. Vendor's intermediate certificate that certifies (2) ... n. Vendor's root certificate that certifies (n-1). Optional, because it should be contained in client's CA store.
還要檢查這個 RFC以獲得精確的定義