日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

[原]SSL 开发简述(Delphi)

發(fā)布時間:2023/11/27 生活经验 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [原]SSL 开发简述(Delphi) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、??????????? 簡介

現(xiàn)在網(wǎng)上有關(guān)SSL的資料較多的是基于VC開發(fā),DelphiSSL開發(fā)資源很少。

本文主要使用OpenSSL為基礎(chǔ),講述SSL的有關(guān)開發(fā)流程。OpenSSL功能非常豐富,具體可以去她的官方網(wǎng)看看。可惜沒有中文說明。

OpenSSLhttp://www.openssl.org/

一.1、?????????? SSL協(xié)議是什么

SSL 是一個縮寫,代表的是 Secure Sockets Layer。它是支持在 Internet 上進行安全通信的標(biāo)準(zhǔn),并且將數(shù)據(jù)密碼術(shù)集成到了協(xié)議之中。數(shù)據(jù)在離開您的計算機之前就已經(jīng)被加密,然后只有到達它預(yù)定的目標(biāo)后才被解密。證書和密碼學(xué)算法支持了這一切的運轉(zhuǎn),使用 OpenSSL,您將有機會切身體會它們。

理論上,如果加密的數(shù)據(jù)在到達目標(biāo)之前被截取或竊聽,那些數(shù)據(jù)是不可能被破解的。不過,由于計算機的變化一年比一年快,而且密碼翻譯方法有了新的發(fā)展,因此,SSL 中使用的加密協(xié)議被破解的可能性也在增大。

可以將 SSL 和安全連接用于 Internet 上任何類型的協(xié)議,不管是 HTTPPOP3,還是 FTP。還可以用 SSL 來保護 Telnet 會話。雖然可以用 SSL 保護任何連接,但是不必對每一類連接都使用 SSL。如果連接傳輸敏感信息,則應(yīng)使用 SSL

一.2、?????????? 什么是 OpenSSL

OpenSSL 不僅僅是 SSL。它可以實現(xiàn)消息摘要、文件的加密和解密、數(shù)字證書、數(shù)字簽名和隨機數(shù)字。關(guān)于 OpenSSL 庫的內(nèi)容非常多,遠不是一篇文章可以容納的。

OpenSSL 不只是 API,它還是一個命令行工具。命令行工具可以完成與 API 同樣的工作,而且更進一步,可以測試 SSL 服務(wù)器和客戶機。它還讓開發(fā)人員對 OpenSSL 的能力有一個認識。

二、??????????? CA概念描述

CA是證書的簽發(fā)機構(gòu),它是PKI的核心。CA是負責(zé)簽發(fā)證書、認證證書、管理已頒發(fā)證書的機關(guān)。它要制定政策和具體步驟來驗證、識別用戶身份,并對用戶證書進行簽名,以確保證書持有者的身份和公鑰的擁有權(quán)。

CA 也擁有一個證書(內(nèi)含公鑰)和私鑰。網(wǎng)上的公眾用戶通過驗證 CA 的簽字從而信任 CA ,任何人都可以得到 CA 的證書(含公鑰),用以驗證它所簽發(fā)的證書。

如果用戶想得到一份屬于自己的證書,他應(yīng)先向 CA 提出申請。在 CA 判明申請者的身份后,便為他分配一個公鑰,并且 CA 將該公鑰與申請者的身份信息綁在一起,并為之簽字后,便形成證書發(fā)給申請者。

如果一個用戶想鑒別另一個證書的真?zhèn)?#xff0c;他就用 CA 的公鑰對那個證書上的簽字進行驗證,一旦驗證通過,該證書就被認為是有效的。

二.1、?????????? 證書

證書實際是由證書簽證機關(guān)(CA)簽發(fā)的對用戶的公鑰的認證。

證書的內(nèi)容包括:電子簽證機關(guān)的信息、公鑰用戶信息、公鑰、權(quán)威機構(gòu)的簽字和有效期等等。目前,證書的格式和驗證方法普遍遵循X509 國際標(biāo)準(zhǔn)。

如何在電子文檔上實現(xiàn)簽名的目的呢?我們可以使用數(shù)字簽名。RSA公鑰體制可實現(xiàn)對數(shù)字信息的數(shù)字簽名,方法如下:

信息發(fā)送者用其私鑰對從所傳報文中提取出的特征數(shù)據(jù)(或稱數(shù)字指紋)進行RSA算法操作,以保證發(fā)信人無法抵賴曾發(fā)過該信息(即不可抵賴性),同時也確保信息報文在傳遞過程中未被篡改(即完整性)。當(dāng)信息接收者收到報文后,就可以用發(fā)送者的公鑰對數(shù)字簽名進行驗證。

在數(shù)字簽名中有重要作用的數(shù)字指紋是通過一類特殊的散列函數(shù)(HASH函數(shù)) 生成的。對這些HASH函數(shù)的特殊要求是:

1.接受的輸入報文數(shù)據(jù)沒有長度限制;

2.對任何輸入報文數(shù)據(jù)生成固定長度的摘要(數(shù)字指紋)輸出;

3.從報文能方便地算出摘要;

4.難以對指定的摘要生成一個報文,而由該報文可以算出該指定的摘要;

5.難以生成兩個不同的報文具有相同的摘要。

驗證:

收方在收到信息后用如下的步驟驗證您的簽名:

1.使用自己的私鑰將信息轉(zhuǎn)為明文;

2.使用發(fā)信方的公鑰從數(shù)字簽名部分得到原摘要;

3.收方對您所發(fā)送的源信息進行hash運算,也產(chǎn)生一個摘要;

4.收方比較兩個摘要,如果兩者相同,則可以證明信息簽名者的身份。

如果兩摘要內(nèi)容不符,會說明什么原因呢?

可能對摘要進行簽名所用的私鑰不是簽名者的私鑰,這就表明信息的簽名者不可信;也可能收到的信息根本就不是簽名者發(fā)送的信息,信息在傳輸過程中已經(jīng)遭到破壞或篡改。

二.2、?????????? 數(shù)字證書

數(shù)字證書為實現(xiàn)雙方安全通信提供了電子認證。在因特網(wǎng)、公司內(nèi)部網(wǎng)或外部網(wǎng)中,使用數(shù)字證書實現(xiàn)身份識別和電子信息加密。數(shù)字證書中含有密鑰對(公鑰和私鑰)所有者的識別信息,通過驗證識別信息的真?zhèn)螌崿F(xiàn)對證書持有者身份的認證。

二.3、?????????? 使用數(shù)字證書能做什么?

數(shù)字證書在用戶公鑰后附加了用戶信息及CA的簽名。公鑰是密鑰對的一部分,另一部分是私鑰。公鑰公之于眾,誰都可以使用。私鑰只有自己知道。由公鑰加密的信息只能由與之相對應(yīng)的私鑰解密。為確保只有某個人才能閱讀自己的信件,發(fā)送者要用收件人的公鑰加密信件;收件人便可用自己的私鑰解密信件。同樣,為證實發(fā)件人的身份,發(fā)送者要用自己的私鑰對信件進行簽名;收件人可使用發(fā)送者的公鑰對簽名進行驗證,以確認發(fā)送者的身份。

在線交易中您可使用數(shù)字證書驗證對方身份。用數(shù)字證書加密信息,可以確保只有接收者才能解密、閱讀原文,信息在傳遞過程中的保密性和完整性。有了數(shù)字證書網(wǎng)上安全才得以實現(xiàn),電子郵件、在線交易和信用卡購物的安全才能得到保證。

二.4、?????????? 認證、數(shù)字證書和PKI解決的幾個問題

l???????? 保密性 - 只有收件人才能閱讀信息。

l???????? 認證性 - 確認信息發(fā)送者的身份。

l???????? 完整性 - 信息在傳遞過程中不會被篡改。

l???????? 不可抵賴性 - 發(fā)送者不能否認已發(fā)送的信息。

三、??????????? 搭建SSL工作流程

(搭建OpenSSL

(根證書獲取方法圖)

四、??????????? 開發(fā)

四.1、?????????? 編譯OpenSSL

四.1.1、??? 搭建準(zhǔn)備工作

1、?OpenSSL源代碼,可以直接到官網(wǎng)下載最新代碼。

2、?標(biāo)準(zhǔn)C編譯器(可以用VC,這里使用的是VC),編譯動態(tài)庫。

3、?Perl5編譯環(huán)境,OpenSSL編譯需要Perl環(huán)境。官網(wǎng)有的下。

四.1.2、??? 編譯動態(tài)庫

OpenSSL源代碼庫路徑: c:"opensslsource

1、?進入VC命令行編譯環(huán)境

2、?進入OpenSSL源代碼目錄:?cd c:"opensslsource

3、?執(zhí)行configure perl Configure VC-WIN32 --prefix=c:/openssl

4、?創(chuàng)建Makefile文件:?ms"do_ms

5、?編譯動態(tài)庫:nmake –f ms"ntdll.mak

6、?測試動態(tài)庫:nmake –f ms"ntdll.mak test

7、?安裝動態(tài)庫:nmake –f ms"ntdll.mak install

8、?清除零時文件,以后便于重新編譯: nmake –f ms"ntdll.mak clean

說明:要生成VC的靜態(tài)庫只要編譯 ms"nt.mak make文件。

四.2、?????????? 生成證書

由于OpenSSL的命令繁多,這里不詳細說明。具體可以看:BBS水木清華站(FriNov102024102000) fordesign@21cn.com翻譯的內(nèi)容。已經(jīng)整理成文檔放在目錄中。

四.2.1、??? 生成服務(wù)器端的私鑰(key文件)

openssl genrsa -des3 -out serverkey 1024

運行時會提示輸入密碼,此密碼用于加密key文件(參數(shù)des3便是指加密算法,當(dāng)然也可以選用其他你認為安全的算法。),以后每當(dāng)需讀取此文件(通過openssl提供的命令或API)都需輸入口令。如果覺得不方便,也可以去除這個口令,但一定要采取其他的保護措施!

去除key文件口令的命令:

openssl rsa -in server.key -out server.key

四.2.2、??? 生成證書請求

openssl req -new -key server.key -out server.csr -config openssl.cnf

生成Certificate Signing RequestCSR),生成的csr文件交給CA簽名后形成服務(wù)端自己的證書。屏幕上將有提示,依照其指示一步一步輸入要求的個人信息即可。

四.2.3、??? 生成客戶keycsr文件

openssl genrsa -des3 -out client.key 1024

openssl req -new -key client.key -out client.csr -config openssl.cnf

四.2.4、??? CA證書簽證

CSR文件必須有CA的簽名才可形成證書,可將此文件發(fā)送到verisign等地方由它驗證。CA驗證需要服務(wù)費,做測試使用可以自己生成。

openssl req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf

四.2.5、??? 生成簽證文件

用生成的CA的證書為剛才生成的servercsrclientcsr文件簽名:

Openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf

Openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config openssl.cnf

四.2.6、??? 合成pem文件

Pem文件是 X.509 PAM 編碼(Base64)文件,是個文本文件。可以使用x.509命令進行合成,或直接拷貝粘貼。

上面生成的server文件和client文件合并成2pem文件。

server使用的文件有:ca.crtserver.crtserver.key

client使用的文件有:ca.crtclient.crtclient.key

.crt文件和.key文件合并到同一個文件.pem文件。

四.3、?????????? Delphi接入

上面生成OpenSSL動態(tài)庫我們現(xiàn)行可以直接加載使用。另外Indy組件封裝了OpenSSL的功能模塊,可以引用uIdSSLOpenSSLHeaders.pas單元文進行開發(fā)。

直接加載動態(tài)庫開發(fā)比較煩瑣,所以我們直接適用Indy提供的單元開發(fā)。Indy單元文件實現(xiàn)的版本比較老,因此新DLL加載會發(fā)生錯誤。在網(wǎng)上找到一個支持 0.9.7i OpenSSL較新動態(tài)庫的Indy單元文件。

具體的開發(fā)應(yīng)用可以看Source中的代碼。

四.3.1、??? 服務(wù)器端調(diào)用流程

四.3.2、??? 客戶段調(diào)用流程

轉(zhuǎn)載于:https://www.cnblogs.com/gleam/archive/2008/05/09/1190205.html

總結(jié)

以上是生活随笔為你收集整理的[原]SSL 开发简述(Delphi)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。