2012-07-26 57 views

回答

5

有兩種主要情況。我會在這裏介紹。

請注意,我假定您使用的是C++。你選擇的平臺,如果它是理智的,應該有這些功能的綁定。


在第一種情況下,您的證書文件是所謂的PEM格式。如果你在文本編輯器中打開一個證書,並看到一些Base64編碼的數據和可讀的頭文件,那就是一個PEM文件。在這種情況下,你想要的功能有簽名

X509 *PEM_read_X509(FILE *fp, X509 **x, pem_password_cb *cb, void *u); 

的第一個參數是指向由fopen()返回一個文件對象。您可以將最後三個參數保留爲NULL。該函數返回一個指向創建的X509對象的指針,或者返回一個指向NULL的指針。


在第二種情況下,您的證書文件是所謂的DER格式。如果你在文本編輯器中打開一個證書並看到一些垃圾,那可能是一個DER文件。在這種情況下,你想要的功能有簽名

X509 *d2i_X509_fp(FILE *fp, X509 **x); 

你應該能夠離開第二個參數NULL。該函數返回一個指向創建的對象X509的指針,或者返回NULL錯誤。


正式的OpenSSL文檔是不完整的。如果您正在尋找一本很好的參考手冊,我可以推薦O'Reilly的「OpenSSL網絡安全」(ISBN 978-0-596-00270-1)。它是爲OpenSSL 0.9.6/0.9.7編寫的,並且沒有完整覆蓋某些主題(例如CRL),但涵蓋了所有重要的要點並提供了示例代碼。如果有的話,它會幫助你減少丟失:)

+0

謝謝!非常好的答案,正是我需要的。 – 2012-07-26 23:48:21