我正在使用libcurl進行小型c應用程序。該項目使用https並需要驗證服務器證書和客戶端證書。由於我在不安全的環境中工作,因此我無法使用選項來取消驗證。用於libcurl的內聯證書而不是使用外部捆綁包?
我目前正在嘗試驗證服務器端證書。第一次嘗試給了我一個預期的錯誤:
Peer certificate cannot be authenticated with given CA certificates
正如所說的預期錯誤,我明白什麼是消息的含義。我挖入了libcurl的文檔,發現它支持「證書包」,並且年輕版本不是附帶一個包。我發現的所有選項(以及所有解釋)都是指在運行時讀取的證書文件,顯然建議在本地軟件包中包含所需的CA證書。
相反,我寧願有一個證書直列到應用程序中,因此編譯。這有一定道理的這種特殊情況下,由於應用程序僅試圖訪問一個單一的,硬編碼的URL,所以服務器。我接受如果服務器證書發生更改,我將不得不更換所有已部署的應用程序副本。但是我沒有在文檔中找到任何選項。我更喜歡這個策略,因爲它允許應用程序更加緊湊的部署:單個文件而不是結構和運行時配置。
所以我的問題是:libcurl是否提供在編譯時包含一個CA證書,可以在運行時使用,而不必依賴外部包?
另一個很有特色的例子是「內存中的CA證書」:http://curl.haxx.se/libcurl/c/cacertinmem.html –
目前看起來不錯,我會試試看。由於我對c不完全熟悉,因此需要一點時間。但我會回報。 – arkascha