首頁 > 文章中心 > 正文

          小議電子商務的CA認證實踐

          前言:本站為你精心整理了小議電子商務的CA認證實踐范文,希望能為你的創作提供參考價值,我們的客服老師可以幫助你提供個性化的參考范文,歡迎咨詢。

          小議電子商務的CA認證實踐

          摘要:本文主要介紹了使用公開源代碼的工具OpenSSL來完成數字證書的簽署,實現電子商務中的ca認證的過程。

          關鍵詞:電子商務;OpenSSL;CA認證

          1.前言

          作為電子商務的安全核心SSL協議在電子商務安全性方面扮演了重要的角色。本文就是從安全技術角度介紹了以公開源代碼的工具OpenSSL來實現電子商務中的安全認證過程。

          2.SSL(SecureSocketLayer)協議及其主要技術

          1996年由美國Netscape公司開發和倡導的SSL協議,它是目前安全電子商務交易中使用最多的協議之一,它被許多世界知名廠商的Intranet和Internet網絡產品所支持。

          SSL應用在Client和Server間安全的WebHTTP通信,URL以https開始替代http,并使用443端口進行通信。它主要使用加密機制、數字簽名、數字摘要、身份認證、CA認證技術提供Client和Server之間的秘密性、完整性、認證性三種基本的安全服務。

          3.用OpenSSL工具實現安全認證

          目前,國外主流的電子商務安全協議在核心密碼算法上都有出口限制,如只允許40位或56位的RC4和512位的RSA算法出口等。這樣的算法強度引進后無法滿足我國電子商務實際應用當中的安全需求。但是,完全自主定義和開發一套安全標準體系不是一蹴而就的事情,需要人、財、物的長期投入。

          因此,如何對國外主流的電子商務安全協議的安全模塊進行改造,用國內先進的密碼算法替換其相應的安全強度不夠的算法,變為國產的強安全協議,這樣就能較好地提高我國電子商務安全技術水平。

          在SSL未提供源代碼的情況下,由澳大利亞軟件工程師EricYoung與TimHudson聯合開發的OpenSSL恰好解決了這一難題。它不僅能實現SSL的所有功能,支持目前所有基于SSLV2/V3和TSLV1的應用軟件,而且由于源代碼公開和提供了各種加密算法,完全可以滿足國外安全協議引進后的本地化改造需求。

          下面就用OpenSSL提供的強大功能在FreeBSD平臺下進行手工簽署證書的過程。

          ⑴先建立一個CA的證書,首先為CA創建一個RSA私用密鑰:

          #OpenSSLgenrsa-des3-outca.key1024

          該指令中genras表示生成RSA私有密鑰文件。

          -des3表示用DES3加密該文件。

          -outca.key表示生成文件ca.key。

          1024是我們的RSAkey的長度。

          生成server.key的時候會要你輸入一個密碼,這個密鑰用來保護你的ca.key文件,這樣即使人家偷走你的ca.key文件,也打不開,拿不到你的私有密鑰。

          運行該指令后系統提示輸入PEMpassphrase,也就是ca.key文件的加密密碼,這里設為12345678。

          ⑵用下列命令查看它的內容:

          #OpenSSLrsa-noout-text-inca.key

          該指令中rsa表示對RSA私有密鑰的處理。

          -noout表示不打印出key的編碼版本信息。

          -text表示打印出私有密鑰的各個組成部分。

          -inca.key表示對ca.key文件的處理

          對RSA算法進行分析可以知道,RSA的私有密鑰其實就是三個數字,其中兩個是質數primenumbers。產生RSA私有密鑰的關鍵就是產生這兩個質數。還有一些其他的參數,引導著整個私有密鑰產生的過程。

          ⑶利用CA的RSA密鑰創建一個自簽署的CA證書

          #OpenSSLreq-new-x509-days365-keyca.key-outca.crt

          該指令中req用來創建和處理CA證書,它還能夠建立自簽名證書,做RootCA。

          -new產生一個新的CSR,它會要輸入創建證書請求CSR的一些必須的信息。

          -x509將產生自簽名的證書,一般用來做測試用,或者自己做個RootCA用。

          -days365指定我們自己的CA給人家簽證書的有效期為365天。

          -keyca.key指明我們的私有密鑰文件名為ca.key。

          -outca.crt指出輸出的文件名為ca.crt。

          執行該指令時系統要求用戶輸入一些用戶的信息,如下所示:(框內為輸入的內容)

          Usingconfigurationfrom/etc/ssl/f

          EnterPEMpassphrase:12345678

          Youareabouttobeaskedtoenterinformationthatwillbeincorporated

          intoyourcertificaterequest.

          WhatyouareabouttoenteriswhatiscalledaDistinguishedNameoraDN.

          Therearequiteafewfieldsbutyoucanleavesomeblank

          Forsomefieldstherewillbeadefaultvalue,

          Ifyouenter''''.'''',thefieldwillbeleftblank.

          -----

          CountryName(2lettercode)[AU]:CN(兩個字母的國家代號)

          StateorProvinceName(fullname)[Some-State]:JIANGSU(省份名稱)

          LocalityName(eg,city)[]:ZHANGJIAGANG(城市名稱)

          OrganizationName(eg,company)[InternetWidgitsPtyLtd]:FAMILYNETWORK(公司名稱)

          OrganizationalUnitName(eg,section)[]:HOME(部門名稱)

          CommonName(eg,YOURname)[]:TJL(你的姓名)

          EmailAddress[]:TJL@(Email地址)

          ⑷用下列命令查看生成證書的內容:

          #OpenSSLx509-noout-text-inca.crt

          該指令中x509表示證書處理工具。

          -noout表示不打印出key的編碼版本信息。

          -text表示以文本方式顯示內容。

          -inca.crt表示對ca.crt文件進行處理

          系統顯示證書內容為:

          Certificate:

          Data:

          Version:3(0x2)

          SerialNumber:0(0x0)

          SignatureAlgorithm:md5WithRSAEncryption

          Issuer:C=CN,ST=JIANGSU,L=ZHANGJIAGANG,O=FAMILYNETWORK,OU=HOME,CN=TJL/Email=TJL@WX88.NE

          Validity

          NotBefore:Feb2414:49:272003GMT

          NotAfter:Feb2114:49:272013GMT

          Subject:C=CN,ST=JIANGSU,L=ZHANGJIAGANG,O=FAMILYNETWORK,OU=HOME,CN=TJL/Email=TJL@

          SubjectPublicKeyInfo:

          PublicKeyAlgorithm:rsaEncryption

          RSAPublicKey:(1024bit)

          Modulus(1024bit):

          00:da:20:09:11:19:1f:12:f0:98:0c:fc:91:ac:3e:

          ……

          22:e1:ca:04:0f:dc:e9:bd:9f

          Exponent:65537(0x10001)

          X509v3extensions:

          X509v3SubjectKeyIdentifier:

          03:B0:14:8C:5D:C6:F8:F4:B0:96:A0:CC:7C:8F:9B:00:BB:78:E6:A6

          X509v3AuthorityKeyIdentifier:

          keyid:03:B0:14:8C:5D:C6:F8:F4:B0:96:A0:CC:7C:8F:9B:00:BB:78:E6:A6

          DirName:/C=CN/ST=JIANGSU/L=ZHANGJIAGANG/O=FAMILYNETWORK/OU=HOME/CN=TJL/Email=TJL@

          serial:00

          X509v3BasicConstraints:

          CA:TRUE

          SignatureAlgorithm:md5WithRSAEncryption

          8d:e8:46:82:40:b4:18:a2:12:9f:7a:66:e5:fc:0c:3f:77:5a:

          ……

          04:13

          從上面的輸出內容可以看出這個證書基本包含了X.509數字證書的內容,從發行者Issuer和接受者Subject的信息也可以看出是個自簽署的證書。

          下面創建服務器證書簽署請求(使用指令和系統顯示信息基本和以上類似):

          ⑸首先為Apache創建一個RSA私用密鑰:

          #OpenSSLgenrsa-des3-outserver.key1024

          這里也要設定口令passphrase,生成server.key文件。

          ⑹用下列命令查看它的內容:

          #OpenSSLrsa-noout-text-inserver.key

          ⑺用server.key生成證書簽署請求CSR:

          #OpenSSLreq-new-keyserver.key-outserver.csr

          這里也要輸入一些請求證書的信息,和上面的內容類似。

          ⑻生成證書請求后,下面可以簽署證書了,需要用到OpenSSL源代碼中的一個腳本sign.sh,簽署后就可以得到數字證書server.crt。

          #sign.shserver.csr

          ⑼啟動安全Web服務

          最后在apache服務器中進行ca認證設置,拷貝server.crt和server.key到/usr/local/apache/conf

          修改httpd.conf將下面的參數改為:

          SSLCertificateFILE/usr/local/apache/conf/server.crt

          SSLCertificateKeyFile/usr/local/apache/conf/server.key

          可以啟動帶安全連接的Apache試一下了。

          #/usr/local/apache/bin/apachectlstartssl

          提示輸入passphrase(就是前面為服務器設置的口令)

          ⑽進行安全連接

          通過另一臺電腦(IP地址為192.168.0.1)的IE瀏覽器與這臺Apache服務器(IP地址為192.168.0.2)連接并且選擇https協議,即:https://192.168.0.2:443。出現安全連接警告窗口,因為我的服務器證書是自己手工簽署的,不是經過真正的CA頒發的證書,是個無效證書,所以按確定后出現安全證書無效的警告窗口。按“是”繼續,出現如圖1所示:

          注意這里瀏覽器地址欄內輸入的是https而不是http,另外此時在狀態欄內出現了一把小鎖,這說明SSL協議起作用了,服務器和瀏覽器之間建立了一個安全連接這樣我們使用開放源代碼的工具OpenSSL來完成了電子商務的CA認證過程,同時這也只是使用現成的工具來完成的,在實際使用中還要分析它的源代碼,修改源代碼,來達到自己的安全需要。

          4.結束語

          SSL是目前國際上流行Web安全工具,它融合了多種安全技術,實現安全的Web通信,必將在國內的安全電子交易領域得到廣泛的應用。通過對公開源代碼的工具OpenSSL的使用和分析,可以使我們對SSL協議有很好的理解和應用,對研究電子商務中的安全問題有具有特別的理論價值和實用價值。

          參考文獻:

          [1]AlanOFreier,PhilipKarlton.TheSSLProtocolVersion3.0[J].NetscapeCommunications.1996

          [2]CCITT.RecommendationX.509:TheDirectory.AuthenticationFramework[R].1998

          [3]林楓主編.電子商務安全技術及應用北京:航空航天大學出版社

          [4]易江波,趙戰生,阮耀平.SSL及使用SSLeay實現證書的簽發和管理計算機應用研究2001

          [5]韋衛,王德杰等.基于SSL的完全WWW系統的研究與實現[J].計算機研究與發展1999

          [6]唐禮勇,陳鐘編寫.電子商務技術及其安全問題.計算機工程與應用2000