2011-02-19 301 views
11

我正在使用OpenSSL來驗證服務器的證書。由於OpenSSL在沒有任何內置根CA的情況下發貨,我們必須使用我們的軟件(我們靜態鏈接OpenSSL)自行分發根CA證書。通常,執行此操作的方法是以PEM格式分發證書文件並調用SSL_CTX_load_verify_locations。C++/OpenSSL:從緩衝區而不是文件使用根CA(SSL_CTX_load_verify_locations)

但是,此功能需要文件/目錄路徑,並直接從文件系統讀取根證書文件。我們真的希望能夠將證書硬編碼到我們的二進制文件中,而不是將其保存到文件系統中。

換句話說,我們真的很想擁有像SSL_CTX_load_verify_locations這樣的函數,它需要X509 *而不是文件路徑。

是否有這樣的事情存在?還是有一種簡單的方法可以將它們自己拼湊起來?我們似乎無法找到關於此的很多信息。

非常感謝您的任何建議!

+0

什麼阻止您在調用SSL_CTX_load_verify_locations之前保存磁盤上的硬編碼根證書? –

+0

沒有什麼可以阻止它:然而,我們是一個安全應用程序,並擔心惡意干擾。特別是,如果很容易找到並覆蓋我們的根證書文件,那麼您可以阻止我們的任何SSLed事務。如果需要的話,我們會走這條路線,但能夠將根證書編譯到二進制文件本身是非常好的。 – DSII

+0

讓您的根CA硬編碼比保存在文件中更安全。 –

回答

18

功能SSL_CTX_get_cert_store()可以用來得到一個處理用於驗證(X509_STORE *)證書存儲和X509_STORE_add_cert()功能(在openssl/x509_vfy.h)然後可以用於直接添加證書,該證書存儲區。

+0

完美!非常感謝你;這件作品奇妙。正是我在找什麼。謝謝! – DSII

相關問題