Ubuntu

如何在 Ubuntu 伺服器上將 libcurl SSL 後端從 gnutls 更改為 openssl

  • August 5, 2015

在處理 Google OpenID SSL 響應時,我的 Tornado 網路伺服器中出現 gnutls 特定錯誤。我從 Tornado 郵件列表中得到的建議之一是嘗試使用 OpenSSL 後端而不是 gnutls。但在 Ubuntu 伺服器(11.10)上似乎並不簡單。

在 Ubuntu 伺服器上,gnutlslibcurl3-gnutlspackage 提供,openssl curl 支持由libcurl4-openssl-devpackage 提供。(我不知道為什麼後者被命名為4and dev,但我在 apt-cache 搜尋中找不到任何其他的 openssl+curl 包)。

libcurl3-gnutls預設安裝了,但沒有libcurl4-openssl-dev。所以我安裝了後者並重新啟動了 Torando 實例。但這似乎不起作用。我仍然遇到相同的 gnutls 錯誤。

我在 curl 郵件列表上發現了關於支持 libcurl 的不同 SSL 後端的問題的舊討論,但沒有找到今天它是如何完成的。到目前為止,我的猜測是 openssl 內置在 libcurl 中,而 gnutls 是通過單獨的包提供的(這將解釋為什麼沒有 libcurl3-openssl)。但是如何讓 libcurl 選擇 openssl 後端而不是 gnutls?libcurl/pycurl API 中是否有一些選項可以做到這一點?

我嘗試解除安裝libcurl3-gnutls,但 apt-get 提示它也會隨之刪除python-pycurl。所以那不行。

這些-dev包是開發包,它們包含庫標頭檔,用於開發和編譯使用該庫的程序。應用程序二進制包(已經編譯)通常不需要它們。安裝libcurl4-openssl-dev不足以使針對libcurl3-gnutls使用 OpenSSL 而建構的二進制包。它僅對您針對它重新編譯的應用程序有用。

python-pycurl直接依賴libcurl3-gnutlslibgnutls26

除非在替代儲存庫中有針對 OpenSSL 而不是 GnuTLS 編譯的基於 cURL 的 Ubuntu 包,否則您可能不得不自己建構它們。

這原則上可以通過下載原始碼(apt-get source python-pycurl和相關包)來完成。您必須進入 Debian 打包配置文件並更改選項(通常傳遞給在編譯前configure也配置Makefiles 的腳本),以便更改編譯選項,改為使用 OpenSSL。您可能還需要更改包描述以限制對其他包的干擾,也許通過使用provide:指令說您的包可以替換由 Ubuntu 打包的包。

引用自:https://serverfault.com/questions/348815