古詩詞大全網 - 個性簽名 - openssl 如何使用

openssl 如何使用

為壹個基於密碼學的安全開發包,OpenSSL提供的功能相當強大和全面,囊括了主要的密碼算法、常用的密鑰和證書封裝管理功能以及SSL協議,並提供了豐富的應用程序供測試或其它目的使用。

1.對稱加密算法

OpenSSL壹***提供了8種對稱加密算法,其中7種是分組加密算法,僅有的壹種流加密算法是RC4。這7種分組加密算法分別是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持電子密碼本模式(ECB)、加密分組鏈接模式(CBC)、加密反饋模式(CFB)和輸出反饋模式(OFB)四種常用的分組密碼加密模式。其中,AES使用的加密反饋模式(CFB)和輸出反饋模式(OFB)分組長度是128位,其它算法使用的則是64位。事實上,DES算法裏面不僅僅是常用的DES算法,還支持三個密鑰和兩個密鑰3DES算法。

2.非對稱加密算法

OpenSSL壹***實現了4種非對稱加密算法,包括DH算法、RSA算法、DSA算法和橢圓曲線算法(EC)。DH算法壹般用戶密鑰交換。RSA算法既可以用於密鑰交換,也可以用於數字簽名,當然,如果妳能夠忍受其緩慢的速度,那麽也可以用於數據加密。DSA算法則壹般只用於數字簽名。

3.信息摘要算法

OpenSSL實現了5種信息摘要算法,分別是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA算法事實上包括了SHA和SHA1兩種信息摘要算法,此外,OpenSSL還實現了DSS標準中規定的兩種信息摘要算法DSS和DSS1。

4.密鑰和證書管理

密鑰和證書管理是PKI的壹個重要組成部分,OpenSSL為之提供了豐富的功能,支持多種標準。

首先,OpenSSL實現了ASN.1的證書和密鑰相關標準,提供了對證書、公鑰、私鑰、證書請求以及CRL等數據對象的DER、PEM和BASE64的編解碼功能。OpenSSL提供了產生各種公開密鑰對和對稱密鑰的方法、函數和應用程序,同時提供了對公鑰和私鑰的DER編解碼功能。並實現了私鑰的PKCS#12和PKCS#8的編解碼功能。OpenSSL在標準中提供了對私鑰的加密保護功能,使得密鑰可以安全地進行存儲和分發。

在此基礎上,OpenSSL實現了對證書的X.509標準編解碼、PKCS#12格式的編解碼以及PKCS#7的編解碼功能。並提供了壹種文本數據庫,支持證書的管理功能,包括證書密鑰產生、請求產生、證書簽發、吊銷和驗證等功能。

事實上,OpenSSL提供的CA應用程序就是壹個小型的證書管理中心(CA),實現了證書簽發的整個流程和證書管理的大部分機制。

5.SSL和TLS協議

OpenSSL實現了SSL協議的SSLv2和SSLv3,支持了其中絕大部分算法協議。OpenSSL也實現了TLSv1.0,TLS是SSLv3的標準化版,雖然區別不大,但畢竟有很多細節不盡相同。

雖然已經有眾多的軟件實現了OpenSSL的功能,但是OpenSSL裏面實現的SSL協議能夠讓我們對SSL協議有壹個更加清楚的認識,因為至少存在兩點:壹是OpenSSL實現的SSL協議是開放源代碼的,我們可以追究SSL協議實現的每壹個細節;二是OpenSSL實現的SSL協議是純粹的SSL協議,沒有跟其它協議(如HTTP)協議結合在壹起,澄清了SSL協議的本來面目。

6.應用程序

OpenSSL的應用程序已經成為了OpenSSL重要的壹個組成部分,其重要性恐怕是OpenSSL的開發者開始沒有想到的。現在OpenSSL的應用中,很多都是基於OpenSSL的應用程序而不是其API的,如OpenCA,就是完全使用OpenSSL的應用程序實現的。OpenSSL的應用程序是基於OpenSSL的密碼算法庫和SSL協議庫寫成的,所以也是壹些非常好的OpenSSL的API使用範例,讀懂所有這些範例,妳對OpenSSL的API使用了解就比較全面了,當然,這也是壹項鍛煉妳的意誌力的工作。

OpenSSL的應用程序提供了相對全面的功能,在相當多的人看來,OpenSSL已經為自己做好了壹切,不需要再做更多的開發工作了,所以,他們也把這些應用程序成為OpenSSL的指令。OpenSSL的應用程序主要包括密鑰生成、證書管理、格式轉換、數據加密和簽名、SSL測試以及其它輔助配置功能。

7.Engine機制 Engine機制的出現是在OpenSSL的0.9.6版的事情,開始的時候是將普通版本跟支持Engine的版本分開的,到了OpenSSL的0.9.7版,Engine機制集成到了OpenSSL的內核中,成為了OpenSSL不可缺少的壹部分。 Engine機制目的是為了使OpenSSL能夠透明地使用第三方提供的軟件加密庫或者硬件加密設備進行加密。OpenSSL的Engine機制成功地達到了這個目的,這使得OpenSSL已經不僅僅使壹個加密庫,而是提供了壹個通用地加密接口,能夠與絕大部分加密庫或者加密設備協調工作。當然,要使特定加密庫或加密設備更OpenSSL協調工作,需要寫少量的接口代碼,但是這樣的工作量並不大,雖然還是需要壹點密碼學的知識。Engine機制的功能跟Windows提供的CSP功能目標是基本相同的。目前,OpenSSL的0.9.7版本支持的內嵌第三方加密設備有8種,包括:CryptoSwift、nCipher、Atalla、Nuron、UBSEC、Aep、SureWare以及IBM 4758 CCA的硬件加密設備。現在還出現了支持PKCS#11接口的Engine接口,支持微軟CryptoAPI的接口也有人進行開發。當然,所有上述Engine接口支持不壹定很全面,比如,可能支持其中壹兩種公開密鑰算法。

8.輔助功能

BIO機制是OpenSSL提供的壹種高層IO接口,該接口封裝了幾乎所有類型的IO接口,如內存訪問、文件訪問以及Socket等。這使得代碼的重用性大幅度提高,OpenSSL提供API的復雜性也降低了很多。

OpenSSL對於隨機數的生成和管理也提供了壹整套的解決方法和支持API函數。隨機數的好壞是決定壹個密鑰是否安全的重要前提。

OpenSSL還提供了其它的壹些輔助功能,如從口令生成密鑰的API,證書簽發和管理中的配置文件機制等等。如果妳有足夠的耐心,將會在深入使用OpenSSL的過程慢慢發現很多這樣的小功能,讓妳不斷有新的驚喜。