[英]validating X.509 certificate on linux
我剛開始使用X.509證書。 誰能告訴我如何在linux上驗證證書? 用例是我的應用程序已經在之前的會話中下載了證書,我必須在開始新會話之前檢查它是否仍然有效(即,在存儲之后沒有過期或撤銷)。 我理解這里不可能有完整的樣本,但任何指針都會有用。
編輯:進一步調查顯示另一個稱為網絡安全服務(NSS)的實用程序。 在可用性方面,這與OpenSSL相比如何? 此外,我正在尋找程序化解決方案,因為我將無法啟動命令行實用程序。
正如其他人提到的,您可以使用openssl verify
。 根據文檔 ,它還檢查有效期。
從程序上來說,它可能意味着數小時搜索有點不好(或丟失)的文檔,在整個網絡上閱讀代碼示例,並且可能令人頭疼。
要正確驗證證書,您需要通知所有中間證書。 通常你也會通知撤銷列表(CRL),但這不是必需的。
那么,這就是你需要做的代碼(OpenSSL):
X509_STORE_new
- 創建證書存儲區; X509_STORE_CTX_new
- 創建商店上下文; X509_STORE_add_cert
- 將CA(和所有中間)證書添加到證書存儲的可信列表中(注意:有一個查找/加載列表的函數); X509_STORE_add_crl
- 將撤銷的證書添加到證書庫的CRL中(注意:與上面相同); X509_STORE_CTX_init
- 初始化您的商店上下文,通知您的證書商店; X509_STORE_CTX_set_purpose
- 如果需要,定義目的; X509_STORE_CTX_set_cert
- 告訴上下文您要驗證哪個證書; X509_verify_cert
- 最后,驗證它; X509_STORE_CTX_cleanup
- 如果要重用上下文來驗證另一個證書,請將其清理並跳回(5); 或者,可以使用X509_verify
進行快速驗證。 但請注意,它僅對簽名進行比較。
當我需要它時,花了我一整天的搜索,閱讀和測試。 然后我發現我需要的一切都在OpenSSL源代碼中。 因此,如果您需要一個示例,請直接訪問openssl-xxx / apps / verify.c 。
重要提示:永遠不要使用MD5。 要了解原因,請閱讀創建流氓CA證書 。
如果你想要一個簡單的工具, openssl verify
會做你想做的事情:
從跑步:
cd /usr/share/ca-certificates
find . -type f -exec openssl -verify {} \;
這是一個輸出選擇:
./telesec.de/deutsche-telekom-root-ca-2.crt: OK
./brasil.gov.br/brasil.gov.br.crt: OK
./cacert.org/cacert.org.crt: OK
./spi-inc.org/spi-ca-2003.crt: /C=US/ST=Indiana/L=Indianapolis/O=Software in the Public Interest/OU=hostmaster/CN=Certification Authority/emailAddress=hostmaster@spi-inc.org
error 10 at 0 depth lookup:certificate has expired
OK
./spi-inc.org/spi-cacert-2008.crt: OK
./signet.pl/signet_ocspklasa3_pem.crt: /C=PL/O=TP Internet Sp. z o.o./CN=CC Signet - CA Klasa 3/serialNumber=Numer wpisu: 4
error 2 at 1 depth lookup:unable to get issuer certificate
./signet.pl/signet_ca3_pem.crt: /C=PL/O=TP Internet Sp. z o.o./CN=CC Signet - CA Klasa 3/serialNumber=Numer wpisu: 4
error 20 at 0 depth lookup:unable to get local issuer certificate
如果您希望將結果放在更大的程序中,那么gnutls_x509_crt_verify(3)
, gnutls_x509_crt_get_key_usage(3)
, gnutls_x509_crt_check_revocation(3)
接口比OpenSSL更容易使用。 (我從來沒有用過GNUTLS,但我已經使用OpenSSL的。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.