資源描述:
《java安全教程——創(chuàng)建ssl連接和證書-java開發(fā)java經(jīng)驗技巧》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、Java安全教程——創(chuàng)建SSL連接和證書本文illImportNew-hejiani翻譯自javacodegeekso歡迎加入翻譯小組。轉(zhuǎn)載請見文末要求。我們在關(guān)于JavaEE安全的系列文章屮,冇一篇也詳細介紹了如何在JavaEE應(yīng)用中創(chuàng)建SSL連接和證書。正如前面文章提到的,SSL(SecureSocketsLayer,安全套接層)/TLS(TransportLayerSecurity,傳輸層安全)保證了客戶端和web服務(wù)器的連接安全??蛻舳送ㄟ^HTTPS連接使用web資源。為創(chuàng)建與客戶端的安全連接,以加密格式發(fā)送/接受信息,J3V3提供了完善的安全體系A(chǔ)PI類庫。?JCA
2、(JavaCryptographyArchitecture,Java加密體系結(jié)構(gòu))?JCE(JavaCryptographicExtension,Java加密擴展包)?JSSE(JavaSecuredSocketExtension,Java安全套接字擴展包)SSL連接要求web服務(wù)器持冇數(shù)字證書,該證書使客戶端信任該web應(yīng)用的可靠性。需要發(fā)送加密信息的應(yīng)用從CA(CertificateAuthority,數(shù)字證書認證機構(gòu))申請數(shù)字證書。CA驗證應(yīng)用所冇者的詳細信息和英他身份信息,并簽發(fā)數(shù)字證書。在PKI(PublicKeyInfrastructure,公鑰基礎(chǔ)設(shè)施)體系中,
3、數(shù)字證書由CA簽發(fā),它包括識別名(DN,DistinguishedName)/所有者名稱/使用者(Subject),唯一識別證書的序列號,所有者公鑰,簽發(fā)日期,到期時間,CA識別名,簽發(fā)機構(gòu)(CA)的數(shù)字簽名,簽名的創(chuàng)建算法。CA簽發(fā)的數(shù)字證書發(fā)布在CA的注冊庫屮,這樣認證用戶就可以使用所有者的公鑰。瀏覽器如何確認擁有證書的應(yīng)用或網(wǎng)站的可靠性?所有的商業(yè)CA都與主流的瀏覽器有所關(guān)聯(lián),它們的根證書被嵌入在瀏覽器小。瀏覽器SSL兼容性可以通過證帖存儲區(qū)檢查,證帖存儲區(qū)提供了CA證帖的相關(guān)信息,CA證書保存在瀏覽器的存儲中。同時,CA網(wǎng)站也提供了瀏覽器SSL兼容性信息。下面的圖片展
4、示了示例網(wǎng)站http://abcgen.uk的證書的詳細信息。該證書保證所有者的可靠性已經(jīng)被驗證,數(shù)字證書簽發(fā)給ABCGenIdiotcchicpic,它的CommonName為www.abcgen.uk。說明:安全起見我們沒有引用任何真實的網(wǎng)站。本文的例子都是示例性的并且僅僅出于學(xué)習(xí)目的。本例中的證書由VerisignasClass3簽發(fā),表明Verisign執(zhí)行了對所有者的驗證和確認。這并不是一個規(guī)定的PKT標準。下一項為證書的冇效性。Fingerprints為編碼后的公鑰。數(shù)據(jù)使用密碼哈希函數(shù)SHA1和MD5來哈希。證書詳細信息卜?圖為證書層次結(jié)構(gòu)。第一項為根證書,第二
5、項為擴展驗證。認證機構(gòu)(CA)通過擴展驗證捉供了更高級的安金認證。所冇主流瀏覽器的密鑰存儲區(qū)都包含根和擴展驗證信息,這樣它們就可以認證特定應(yīng)用的可靠性。證書層次結(jié)構(gòu)希望你已經(jīng)了解了大概思路,現(xiàn)在來編碼實現(xiàn)吧。使用的產(chǎn)品?IDE:Netbeans7.2?JavaDevelopmentKit(JDK):Version6?Glassfishserver:3.1?認證機制:FonnBased認證?認證服務(wù)器:LDAPOpenDSv2.2目標web服務(wù)器與客戶端Z間創(chuàng)建SSL連接。第1步:在Glassfish服務(wù)器創(chuàng)建服務(wù)器證書打開windows中的命令行提示-〉進入{domaindi
6、r}/config目錄,{domain_dir}為Glassfishdomain路徑,比如C:NetBeans7.2configGF3domainlconfig笫2步:使用keytool命令生成證書。Keytool是JavaSE6提供的密鑰和證書管理工具。運行以下命令:>keytool-genkey-aliasserver-alias一key^lgRSA一keyp^sschangeit-storepasschangeit-keystorekeystore.jksThecommandwillaskforthefollowingdetails:Whatisyourfi
7、rstandlastname?[Unknown]:localhost〈〈Fortestingpurposesweneedtouselocalhostsinceitmapstotheapplicationserverhostname.Ideallyinproductionenvironmentsthisfieldshouldincludeapplicationserver"sname.>>Whatisthe[Unknown]:nameofyourorganizationalunit?idiotechieW