亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Linux服務器 > 正文

linux openssl基礎介紹

2024-09-05 23:02:18
字體:
來源:轉載
供稿:網友

    現行網上銀行和電子商務等大型的網上交易系統普遍采用HTTP和SSL相結合的方式。服務器端采用支持SSL的Web服務器,用戶端采用支持SSL的瀏覽器實現安全通信。 
    SSL是Secure Socket Layer(安全套接層協議)的縮寫,可以在Internet上提供秘密性傳輸。Netscape公司在推出第一個Web瀏覽器的同時,提出了SSL協議標準,目前已有3.0版本。SSL采用公開密鑰技術。其目標是保證兩個應用間通信的保密性和可靠性,可在服務器端和用戶端同時實現支持。目前,利用公開密鑰技術的SSL協議,已成為Internet上保密通訊的工業標準。本文著重在SSL協議和SSL程序設計兩方面談談作者對SSL的理解。 
SSL協議初步介紹 
    安全套接層協議能使用戶/服務器應用之間的通信不被攻擊者竊聽,并且始終對服務器進行認證,還可選擇對用戶進行認證。SSL協議要求建立在可靠的傳輸層協議(TCP)之上。SSL協議的優勢在于它是與應用層協議獨立無關的,高層的應用層協議(例如:HTTP,FTP,TELNET等)能透明地建立于SSL協議之上。SSL協議在應用層協議通信之前就已經完成加密算法、通信密鑰的協商及服務器認證工作。在此之后應用層協議所傳送的數據都會被加密,從而保證通信的私密性。 
通過以上敘述,SSL協議提供的安全信道有以下三個特性: 
1.數據的保密性 
信息加密就是把明碼的輸入文件用加密算法轉換成加密的文件以實現數據的保密。加密的過程需要用到密匙來加密數據然后再解密。沒有了密鑰,就無法解開加密的數據。數據加密之后,只有密匙要用一個安全的方法傳送。加密過的數據可以公開地傳送。 
2.數據的一致性 
加密也能保證數據的一致性。例如:消息驗證碼(MAC),能夠校驗用戶提供的加密信息,接收者可以用MAC來校驗加密數據,保證數據在傳輸過程中沒有被篡改過。 
3.安全驗證 
加密的另外一個用途是用來作為個人的標識,用戶的密匙可以作為他的安全驗證的標識。 
    SSL是利用公開密鑰的加密技術(RSA)來作為用戶端與服務器端在傳送機密資料時的加密通訊協定。目前,大部分的Web 服務器及瀏覽器都廣泛支持SSL 技術。當瀏覽器試圖連接一個具有SSL認證加密的服務器時,就會喚醒一個SSL會話,瀏覽器檢查認證,必須具備下面三個條件: 
1)有一個權威機構發放證書,當然可以創建自我簽訂的證書(x509 結構)。 
2)證書不能過期。 
3)證書是屬于它所連接的服務器的。 
    只有全部具備了這三個條件,瀏覽器才能成功完成認證。通過這三個條件,用戶能確認其瀏覽器連接到正確的服務器,而不是連接到一些想盜取用戶密碼等重要信息的虛假的服務器上。 
    在當今的電子商務中還有一項被廣泛使用的安全協議是SET協議。SET(Secure Electronic Transaction,安全電子交易)協議是由VISA和MasterCard兩大信用卡公司于1997年5月聯合推出的規范。SET能在電子交易環節上提供更大的信任度、更完整的交易信息、更高的安全性和更少受欺詐的可能性。SET交易分三個階段進行:用戶向商家購物并確定支付;商家與銀行核實;銀行向商家支付貨款。每個階段都涉及到RSA對數據加密,以及RSA數字簽名。使用SET協議,在一次交易中,要完成多次加密與解密操作,故有很高的安全性,但SET協議比SSL協議復雜,商家和銀行都需要改造系統以實現互操作。 
在Linux 下,比較流行支持SSL認證的是OpenSSL服務器。OpenSSL項目是一個合作的項目,開發一個健壯的、商業等級的、完整的開放源代碼的工具包,用強大的加密算法來實現安全的Socket層(Secure Sockets Layer,SSL v2/v3)和傳輸層的安全性(Transport Layer Security,TLS v1)。這個項目是由全世界的志愿者管理和開發OpenSSL工具包和相關文檔。 
     如何在Linux下配置OpenSSL服務器,首先從OpenSSL的主頁()上下載openssl-version.tar.gz軟件包來編譯安裝,與Apache服務器配合可以建立支持SSL的Web服務器,并可以使用自我簽訂的證書做認證,關于如何編譯、安裝OpenSSL服務器,可以參考一下OpenSSL HOWTO文檔。 
SSL 程序設計初步介紹 
    SSL 通訊模型為標準的C/S 結構,除了在 TCP 層之上進行傳輸之外,與一般的通訊沒有什么明顯的區別。在這里,我們主要介紹如何使用OpenSSL進行安全通訊的程序設計。關于OpenSSL 的一些詳細的信息請參考OpenSSL的官方主頁 。 
在使用OpenSSL前,必須先對OpenSSL 進行初始化,以下的三個函數任選其一: 
SSL_library_init(void); 
OpenSSL_add_ssl_algorithms(); 
SSLeay_add_ssl_algorithms(); 
事實上 后面的兩個函數只是第一個函數的宏。 
如果要使用OpenSSL的出錯信息,使用SSL_load_error_strings (void)進行錯誤信息的初始化。以后可以使用void ERR_print_errors_fp(FILE *fp) 打印SSL的錯誤信息。 
一次SSL連接會話一般要先申請一個SSL 環境,基本的過程是: 
1. SSL_METHOD* meth = TLSv1_client_method(); 創建本次會話連接所使用的協議,如果是客戶端可以使用 
SSL_METHOD* TLSv1_client_method(void); TLSv1.0 協議 
SSL_METHOD* SSLv2_client_method(void); SSLv2 協議 
SSL_METHOD* SSLv3_client_method(void); SSLv3 協議 
SSL_METHOD* SSLv23_client_method(void); SSLv2/v3 協議 
服務器同樣需要創建本次會話所使用的協議: 
SSL_METHOD *TLSv1_server_method(void); 
SSL_METHOD *SSLv2_server_method(void); 
SSL_METHOD *SSLv3_server_method(void); 
SSL_METHOD *SSLv23_server_method(void); 
需要注意的是客戶端和服務器需要使用相同的協議。 
2.申請SSL會話的環境 CTX,使用不同的協議進行會話,其環境也是不同的。申請SSL會話環境的OpenSSL函數是 
SSLK_CTX* SSL_CTX_new (SSL_METHOD*); 參數就是前面我們申請的 SSL通訊方式。返回當前的SSL 連接環境的指針。 
然后根據自己的需要設置CTX的屬性,典型的是設置SSL 握手階段證書的驗證方式和加載自己的證書。 
void SSL_CTX_set_verify (SSL_CTX* , int , int* (int, X509_STORE_CTX*) ) 
設置證書驗證的方式。 
第一個參數是當前的CTX 指針,第二個是驗證方式,如果是要驗證對方的話,就使用 SSL_VERIFY_PEER。不需要的話,使用SSL_VERIFY_NONE.一般情況下,客戶端需要驗證對方,而服務器不需要。第三個參數是處理驗證的回調函數,如果沒有特殊的需要,使用空指針就可以了。 
void SSL_CTX_load_verify_locations(SSL_CTX*, const char* , const char*); 
加載證書; 
第一個參數同上,參數二是證書文件的名稱,參數三是證書文件的路徑; 
int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, int type); 
加載本地的證書;type 指明證書文件的結構類型;失敗返回-1 
int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type); 
加載自己的私鑰;type 參數指明私鑰文件的結構類型;失敗返回-1 
加載了證書和文件之后,就可以驗證私鑰和證書是否相符: 
BOOl SSL_CTX_check_private_key (SSL_CTX*); 
3.既然SSL 使用TCP 協議,當然需要把SSL attach 到已經連接的套接字上了: 
SSL* SSL_new (SSL_CTX*); 申請一個SSL 套節字; 
int SSL_set_rfd (SSL*); 綁定只讀套接字 
int SSL_set_wfd (SSL*); 綁定只寫套接字 
int SSL_set_fd ( SSL*); 綁定讀寫套接字 
綁定成功返回 1, 失敗返回0; 
4. 接下來就是SSL 握手的動作了 
int SSL_connect (SSL*); 失敗返回 -1 
5. 握手成功之后,就可以進行通訊了,使用SSL_read 和SS_write 讀寫SSL 套接字代替傳統的read 、write 
int SSL_read (SSL *ssl, char *buf, int num ); 
int SSL_write (SSL *ssl, char *buf, int num); 
如果是服務器,則使用 SSL_accept 代替傳統的 accept 調用 
int SSL_accept(SSL *ssl); 
6. 通訊結束,需要釋放前面申請的 SSL資源 
int SSL_shutdown(SSL *ssl); 關閉SSL套接字; 
void SSL_free (ssl); 釋放SSL套接字; 
void SSL_CTX_free (ctx); 釋放SSL環境; 
    OpenSSL 雖然已經發展到了0.9.96版本,但是它的文檔還很少,甚至連最基本的man 函數手冊都沒有完成。所以,本文緊緊是講述了使用OpenSSL 進行程序設計的框架。更加詳細的資料可以參考OpenSSL 的文檔或者 Apache mod_ssl 的文檔。 
    通過以上的介紹,我想讀者對SSL協議已經有了一定的了解,作者有機會將會繼續給大家介紹SSL協議的其他方面的內容。 
(作者:張云帆)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性videos高清精品| 精品久久久久久国产| 精品国产乱码久久久久久婷婷| 精品成人国产在线观看男人呻吟| 欧美乱大交xxxxx另类电影| 亚洲第一综合天堂另类专| 色哟哟亚洲精品一区二区| 亚洲新声在线观看| 久久久久久久香蕉网| 一区二区三区天堂av| 日韩av影院在线观看| 精品国内自产拍在线观看| 国产精品国产亚洲伊人久久| 成人字幕网zmw| 国产精品91久久久| 欧美性生交xxxxx久久久| 国外成人在线直播| 欧美一区视频在线| 久久久日本电影| 久久久久一本一区二区青青蜜月| 亚洲第一视频网站| 在线播放日韩欧美| 国产精品观看在线亚洲人成网| 亚洲男人天堂九九视频| 国产精品久久久久秋霞鲁丝| 亚洲欧美精品一区二区| 国产丝袜高跟一区| 国产91精品在线播放| 欧美在线日韩在线| 欧美成人免费视频| 亚洲欧美日韩爽爽影院| 一区国产精品视频| 亚洲最新中文字幕| 在线精品播放av| 久久久国产一区二区| 国产美女搞久久| 亚洲欧美国产日韩中文字幕| 成人av.网址在线网站| 国产欧美一区二区三区在线看| 日韩精品一区二区三区第95| 成人有码视频在线播放| 久久欧美在线电影| 日韩视频―中文字幕| 欧美黑人性视频| 欧美极品少妇xxxxx| 97涩涩爰在线观看亚洲| 宅男66日本亚洲欧美视频| 欧美性理论片在线观看片免费| 国产亚洲成精品久久| 国产99视频在线观看| 亚洲电影成人av99爱色| 97久久超碰福利国产精品…| 欧美激情三级免费| 国产精品丝袜久久久久久不卡| 国产日韩在线观看av| 国产成人精品999| 亚洲精品一区中文| 精品电影在线观看| 中文字幕精品一区久久久久| 欧美日韩国产成人在线| 视频一区视频二区国产精品| 疯狂做受xxxx高潮欧美日本| 国产美女精品视频免费观看| 69av成年福利视频| 亚洲性夜色噜噜噜7777| 国产精品成人免费电影| 欧美日韩一区二区在线播放| 亚洲精品美女免费| 亚洲tv在线观看| 亚洲欧美日韩直播| 九九久久国产精品| 国产一区二中文字幕在线看| 红桃视频成人在线观看| 欧美在线观看一区二区三区| 国产手机视频精品| 亚洲欧美日韩直播| 亚洲精品视频播放| 97热在线精品视频在线观看| 日韩精品999| 久久久人成影片一区二区三区| 成人av番号网| 欧美午夜xxx| 日本精品久久久久久久| 欧美视频在线免费看| 亚洲最大的免费| 欧美激情va永久在线播放| 欧美激情手机在线视频| 青青久久av北条麻妃黑人| 久久久国产精品亚洲一区| 国产精品综合不卡av| 精品福利在线看| 亚洲女人天堂av| 久久久久国产精品www| 黄色成人在线播放| 国产精品海角社区在线观看| 久久九九免费视频| 亚洲一区二区中文字幕| 久久精品国产成人精品| 国内久久久精品| 欧美激情视频在线免费观看 欧美视频免费一| 97国产在线观看| 欧美一级高清免费播放| 日韩高清av一区二区三区| 欧美一区二区影院| 668精品在线视频| 久久久久久久久国产| 亚洲区bt下载| 另类少妇人与禽zozz0性伦| 欧美夜福利tv在线| 亚洲视频axxx| 97久久国产精品| 欧美精品成人91久久久久久久| 九九精品在线播放| 中文字幕久久亚洲| 8x拔播拔播x8国产精品| 国产精品自拍视频| 日韩精品在线播放| 一区二区三区视频在线| 亚洲欧美福利视频| 欧美成人精品一区二区三区| 日韩av网站在线| 色综合久久久久久中文网| 国产成人精品久久二区二区| 久久久久久久久久av| 日韩成人在线观看| 国产精品久久久久久久久久小说| 久久久久久国产精品美女| 九九热r在线视频精品| 欧美大片在线看免费观看| 欧美巨猛xxxx猛交黑人97人| 日韩电影中文字幕av| 成人激情春色网| 91精品国产99| 久久久久久久久综合| 91大神在线播放精品| 亚洲自拍av在线| 欧美性jizz18性欧美| 国产成人免费av电影| 久久男人的天堂| 欧美国产在线视频| 国产suv精品一区二区| 国产一区二区三区四区福利| 91中文在线视频| 国产精品三级网站| 国产欧美va欧美va香蕉在| 91精品在线看| 在线一区二区日韩| 欧美性xxxx极品高清hd直播| 国产精品久久久久久久久久新婚| 亚洲精品wwww| 91在线直播亚洲| 成人国产精品日本在线| 国模私拍视频一区| 欧美精品免费在线观看| 日韩精品久久久久久久玫瑰园| 国产精品福利网站| 91中文字幕在线观看| 日韩一区二区在线视频| 久久人91精品久久久久久不卡| 国产在线精品自拍| 成人免费高清完整版在线观看| 国产午夜精品全部视频播放| 日韩高清a**址| 国产精品电影网|