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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

[原]SSL 开发简述(Delphi)

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

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

現在網上有關SSL的資料較多的是基于VC開發,DelphiSSL開發資源很少。

本文主要使用OpenSSL為基礎,講述SSL的有關開發流程。OpenSSL功能非常豐富,具體可以去她的官方網看看。可惜沒有中文說明。

OpenSSLhttp://www.openssl.org/

一.1、?????????? SSL協議是什么

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

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

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

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

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

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

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

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

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

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

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

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

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

證書的內容包括:電子簽證機關的信息、公鑰用戶信息、公鑰、權威機構的簽字和有效期等等。目前,證書的格式和驗證方法普遍遵循X509 國際標準。

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

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

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

1.接受的輸入報文數據沒有長度限制;

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

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

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

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

驗證:

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

1.使用自己的私鑰將信息轉為明文;

2.使用發信方的公鑰從數字簽名部分得到原摘要;

3.收方對您所發送的源信息進行hash運算,也產生一個摘要;

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

如果兩摘要內容不符,會說明什么原因呢?

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

二.2、?????????? 數字證書

數字證書為實現雙方安全通信提供了電子認證。在因特網、公司內部網或外部網中,使用數字證書實現身份識別和電子信息加密。數字證書中含有密鑰對(公鑰和私鑰)所有者的識別信息,通過驗證識別信息的真偽實現對證書持有者身份的認證。

二.3、?????????? 使用數字證書能做什么?

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

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

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

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

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

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

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

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

(搭建OpenSSL

(根證書獲取方法圖)

四、??????????? 開發

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

四.1.1、??? 搭建準備工作

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

2、?標準C編譯器(可以用VC,這里使用的是VC),編譯動態庫。

3、?Perl5編譯環境,OpenSSL編譯需要Perl環境。官網有的下。

四.1.2、??? 編譯動態庫

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

1、?進入VC命令行編譯環境

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

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

4、?創建Makefile文件:?ms"do_ms

5、?編譯動態庫:nmake –f ms"ntdll.mak

6、?測試動態庫:nmake –f ms"ntdll.mak test

7、?安裝動態庫:nmake –f ms"ntdll.mak install

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

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

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

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

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

openssl genrsa -des3 -out serverkey 1024

運行時會提示輸入密碼,此密碼用于加密key文件(參數des3便是指加密算法,當然也可以選用其他你認為安全的算法。),以后每當需讀取此文件(通過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簽名后形成服務端自己的證書。屏幕上將有提示,依照其指示一步一步輸入要求的個人信息即可。

四.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的簽名才可形成證書,可將此文件發送到verisign等地方由它驗證。CA驗證需要服務費,做測試使用可以自己生成。

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動態庫我們現行可以直接加載使用。另外Indy組件封裝了OpenSSL的功能模塊,可以引用uIdSSLOpenSSLHeaders.pas單元文進行開發。

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

具體的開發應用可以看Source中的代碼。

四.3.1、??? 服務器端調用流程

四.3.2、??? 客戶段調用流程

轉載于:https://www.cnblogs.com/gleam/archive/2008/05/09/1190205.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。