Ssl
將自簽名證書添加到“受信任列表”
我已經為我的建構伺服器生成了一個自簽名證書,並且我希望全域信任我機器上的證書,因為我自己創建了密鑰並且我厭倦了看到警告。
我在 Ubuntu 12.04 上。如何獲取證書並在全球範圍內信任它,以便瀏覽器(Google Chrome)、CLI 實用程序(wget、curl)和程式語言(Python、Java 等)無需詢問即可信任與https://mysite.com的連接問題?
對此的簡單回答是,幾乎每個應用程序都會以不同的方式處理它。
此外,OpenSSL 和 GNUTLS(用於處理簽名證書的最廣泛使用的證書處理庫)在處理證書時表現不同,這也使問題複雜化。作業系統也利用不同的機制來利用大多數網站使用的“根 CA”。
除此之外,以 Debian 為例。安裝
ca-certificates
包:apt-get install ca-certificates
然後,您將不受信任的 CA 證書的公共部分(用於簽署 CSR 的證書)複製到 CA 證書目錄(以 root 身份):
cp cacert.crt /usr/share/ca-certificates
*注意:*證書需要有
.crt
擴展才能被提取。並讓它重建包含您的證書的目錄,以root身份執行:
dpkg-reconfigure ca-certificates
並選擇
ask
選項,滾動到您的證書,將其標記為包含並選擇確定。大多數瀏覽器都使用自己的 CA 數據庫,因此
certutil
必須使用諸如此類的工具來修改其內容(在軟體包提供的 Debian 上libnss3-tools
)。例如,使用 Chrome,您可以執行以下內容:certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n "My Homemade CA" -i /path/to/CA/cert.file
Firefox 將允許您瀏覽到磁碟上的證書,將其辨識為證書文件,然後允許您將其導入根 CA 列表。
大多數其他命令,例如
curl
可用於指向 CA 的命令行開關,curl --cacert /path/to/CA/cert.file https://...
或完全放棄 SSL 驗證
curl --insecure https://...
ca-certificates
如果類似的技巧不能針對該特定應用程序對其進行排序,則其餘部分將需要單獨調查。