2010-04-13 75 views
5

我試圖弄清楚如何使用m2crypto驗證從X509證書的公鑰版本返回到一個信任鏈當一系列已知根CA的鏈可能任意長時。 SSL.Context模塊看起來很有希望,除了我沒有在SSL連接的上下文中執行此操作,並且我無法看到如何使用傳遞給load_verify_locations的信息。如何使用m2crypto驗證非SSL設置中的X509證書鏈

從本質上講,我正在尋找這相當於接口: OpenSSL的核實pub_key_x509_cert

是否有類似的東西在m2crypto?

謝謝。

+0

相關的http://計算器。 com/q/4403012/4279 – jfs 2010-12-16 05:31:11

回答

1

有一個patch可能需要稍微更新,它需要單元測試來檢查它。貢獻值得歡迎!

另一個令人費解的方式是在驗證過程中創建內存中的SSL會話。 Twisted wrapper有效地這樣工作;扭曲的行爲作爲愚蠢的網絡管道而不知道數據,M2Crypto加密/解密內存中的數據,在側面進行證書驗證。

2

我已經修改了一個不同的M2Crypto補丁,並且通過這個我們可以驗證對CA鏈的X509證書,再加上它允許使用證書撤銷列表(CRL)。

允許使用M2Crypto進行鏈驗證的核心是在X509_Store_Context上公開「verify_cert()」。 基本流程是:

  1. 添加您的CA/CRL來一個X509_Store
  2. 使用X509_Store_Context驗證感興趣的證書

我的貼片提高CRL的支持,以及允許鏈式驗證。 https://bugzilla.osafoundation.org/show_bug.cgi?id=12954#c2

我們使用這個補丁作爲紙漿的一部分,我們有下面這股對我們是如何用鎖鏈做驗證一些更多的信息維基頁面: https://fedorahosted.org/pulp/wiki/CertChainVerification

+0

此外,我們有一組unittests顯示下面的基本鏈驗證: http://git.fedorahosted.org/git/?p=pulp.git;a=blob;f=playpen/certs /chain_example/test_chain_verify.py;hb=HEAD 設置測試數據的腳本位於: http://git.fedorahosted.org/git/?p=pulp.git;a=tree;f=playpen/certs/chain_examp le; hb = HEAD – 2012-01-25 18:06:18

+0

看來你的補丁不適用於openssl 0.9.8e。 – 2012-10-22 08:10:38