国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

在 WAS 中使用 Java 安全套接字擴展(圖)

2019-11-18 12:22:44
字體:
來源:轉載
供稿:網友

  本文提出了 IBM? JSSE(java? Secure Socket Extension,Java? 安全套接字擴展)的配置問題,探討了密鑰庫和信任庫,并且對于如何在 IBM WebSphere? application Server 環境下處理這些重要的 JSSE 元素提出了的建議。
  
  引言
  
  Java 安全套接字擴展(Java Secure Socket Extension,JSSE)是將低級編程接口封裝到安全套接字層(Secure Socket Layer,SSL)協議及其相應的標準傳輸層安全性(Transport Layer Security,TLS)協議中的 Java 標準。IBM JSSE 是 JSSE 框架的 Java 實現。它支持 SSL V2 和 V3 以及 TLS V1。將 JSSE 這樣架構以便其能夠提供兩套接口:一套被稱為服務提供方接口(Service PRovider Interface,SPI),而另一套是應用程序編程接口(Application Programming Interface,API)。
  
  那些提供特定實現的功能插件使用提供的程序接口(本質上,是接口中的插件)。通常,應用程序開發人員僅處理 API。他們可以編寫可移植的代碼,該代碼僅依靠于標準的公共 API 中公布的方法。IBM JSSE 實現也包括 IBM JSSE 加密提供方。
  
  重要的是,開發人員應該遵循最佳的編程實踐來啟用應用程序的可移植性。只要沒有將提供給用程序的特定信息的用法嵌入或強制編碼到應用程序中,JSSE API 就可以進行移植。IBM 沒有聲明與其它 JSSE 提供方的互操作性。IBM 開發實驗室沒有執行任何正式的測試。
  
  分離 API 和 SPI 接口的目的在于保護來源于程序提供者的應用程序,以便達到可移植性。但每個程序提供者所提供的功能可能不必與其它提供的功能相匹配。IBM JSSE 包括了 IBM 的提供方,而其他供給商擁有自己的提供方。當使用 WebSphere Application Server 時,例如,我們重在 IBM 自己的提供方。因此,應用程序代碼假設任何非凡的提供方都是不可移植的。一個公共實例是顯式地裝載了 com.sun.* 類的應用程序代碼。由于 com.sun.* 不是 JSSE(或者對于那種情況是 J2SE)的一部分,所以這樣的代碼是不可移植的。當您開發您的代碼時,應該盡量避免程序提供者所特有的依靠。我們此處的實例說明了這種方法。
  
  簡化 JSSE 編程很大程度上是由于高級別的抽象,它提供了關于標準套接字的編程接口。這使得在兩個希望使用 TCP/ip 協議上的傳輸層安全性來進行消息傳遞的終端之間建立網絡連接變得非常輕易。由 JSSE 提供的安全性服務是由傳輸層消息完整性、可靠性(加密)、服務器驗證、以及可選的客戶端驗證組成。
  
  在本文中,我們提出了 IBM JSSE 的配置問題,探討了密鑰庫和信任庫,并且推薦了在 WebSphere Application Server 環境下處理這些重要的 JSSE 元素的方法。隨后,我們給出了 JSSE 編程模型并且說明當訪問 HTTPS 上的可用資源時它是多么簡單。最后,我們說明了怎樣在單一應用程序中同時使用多重密鑰庫/信任庫。
  
  SSL 是由 Netscape Communications Corporation 于 1994 年開發的,而 TLS V1.0 是由 Internet Engineering Task Force(IETF)定義的標準,它基于 SSL V3.0,并且在使用的加密算法上與其有些許的不同。例如,SSL 使用 Message Authentication Code(MAC)算法來生成完整性校驗值,而 TLS 應用密鑰的 Hashing for Message Authentication Code(HMAC)算法。
  
  配置及安裝 IBM JSSE:我需要做什么嗎?
  
  WebSphere Application Server V5(以及后續的)和 WebSphere Studio V5 一起傳輸 ibmjsse.jar(支持 JSSE 1.0.3 版本)及其相關的 certpath.jar。因此,IBM JSSE 由運行在 WebSphere Application Server 環境下的應用程序自動地使用。重申,WebSphere Application Server 包括了 JSSE 并完全地未經優化的支持它。您的部分中無需進一步的安裝;事實上,禁止替換其他來源的 JSSE 或 JCE 實現。(您不能忽略核心的運行函數。當然,您可以擁有額外的提供方,但不能替換那里已存在的提供方)。您必須確保 JSSE 及其支持的 JAR 文件,例如 certpath.jar,在開發過程中位于您的類路徑上(在運行時它們經常位于類路徑上)。certpath.jar 是一個包,包含證書路徑結構及 JSSE 運行時需要的驗證功能,以便建立證書信任路徑。您無需對 certpath.jar API 編程來建立 SSL/TLS 通信通道,但 JSSE 將會使用它。
  
  IBM JSSE 提供了 JSSE 功能用于您的 WebSphere Application Server 環境以及部署過的應用程序。這是靜態地設置在 java.security 配置文件中的,該文件位于您的 WAS 安裝路徑下的 JDK 目錄中。下面是 Windows? 系統的 java.security 文件中未經優化的缺省提供方的清單。注重,不同平臺之間的提供方的名稱是一樣的;然而,排序可能是不同的。無論何種平臺,您的用于 WebSphere Application Sever 的未經優化的 JSSE 提供方都是 IBMJSSEProvider。
  
  #
  # List of providers and their preference orders
  #
  security.provider.1=sun.security.provider.Sun
  security.provider.2=com.ibm.crypto.provider.IBMJCE
  security.provider.3=com.ibm.jsse.IBMJSSEProvider
  security.provider.4=com.ibm.security.cert.IBMCertPath
  security.provider.5=com.ibm.crypto.pkcs11.provider.IBMPKCS11
  
  您無需更改其中的任一個。假如您很好奇,那么此處存在大量的提供方,大多數都與 JSSE 無關。與 JSSE 相關的提供方只是 IBMJSSEProvider、IBMJCE 以及 IBMCertPath。后兩者由 IBMJSSEProvider 隱含地使用來進行證書處理及加密操作。
  
  信任庫和密鑰庫:它們是什么以及我為何關注它們?
  
  SSL 協議基于公鑰密碼,加密密鑰成對地出現在公鑰密碼中,它們是在數學上是相關的,但無法由一個推知另一個。這對加密密鑰由私有密鑰和公有密鑰(私有,公共)組成的。私有密鑰一直處于其所屬實體的保護之下。注重,所有者確實擁有這對加密密鑰,但公共密鑰,如同它的名稱所示,可以為眾所周知,或至少自由地分散到與公共/私有密鑰對通信的實體中。公鑰密碼啟用的安全性服務是基于這樣的消息解密機制,即共有密鑰只能通過相應的私有密鑰才能解密,反之亦然。這樣,假如使用實體的公鑰加密消息,那么可以保證只有該實體能夠解密此消息。這時會在腦海中立即出現一個問題,即怎樣確保正在使用的公鑰的確被綁定到合法實體上而沒有綁定到其它實體上。在此 Public Key InfrastrUCtures(PKI)開始起作用了(請見參考資料)。
  
  
圖 1. 客戶端和服務器信任庫/密鑰庫間的關系
   在 WAS 中使用 Java 安全套接字擴展(圖)

  公有密鑰分布于名為公鑰證書(PKC)的容器中。這些是由某一簽名者(通常是 Certificate Authority,但公鑰可以是自簽名的)數字化地簽署的。數字簽名標志原始的真實性的驗證。要記住的一點是相信計算機安全一定能通過計算的方法驗證。為了驗證公鑰證書是合法的,我需要檢驗發出該簽名的簽名者。相反,這個過程是基于簽名者的公有密鑰的。
  
  在這里使用信任庫。當將 JSSE 用于 SSL 通信時,需要在本地存儲中維護一套信任的簽名者的證書,由此得名信任庫。例如,由 JSSE 運行時使用的客戶端信任庫為了驗證試圖連接到服務器的客戶端確實使用合法的證書(由信任的簽名者發出的)與服務器交互。因此,服務器證書的簽名者必須持有保存在客戶端信任庫中的 PKC。圖 1 闡明了客戶端和服務器信任庫/密鑰庫間的關系。
  
  出于同樣的機制,服務器必須本地保護它的私有密鑰并且使其能夠訪問 JSSE 運行時。在此處使用密鑰庫。密鑰庫與信任庫有相同的格式,它只包含了不同的密鑰。實際上,專業術語“密鑰庫”通常表示“信任庫或密鑰庫”。
  
  總之,信任庫包含了簽名者的證書,該簽名者在使用信任庫的環境中得到信任。另一方面,密鑰庫維護了實體的私有密鑰,及其相應的 PKC。例如,當服務器面向客戶端進行自身驗證時,它需要從其密鑰庫中檢索它的私有密鑰來與加入客戶端的 SSL 握手。所以,應該確實地重視信任什么簽名者;也就是說,使用信任庫的哪些內容。IBM 提供的缺省信任庫包括了一些公認的且廣泛信任的 Certificate Authorites(CA)。在這里一種好的實踐是周期性地瀏覽您的信任庫并且作出您關于其內容可信性的判定——可能刪除一些 CA。
  
  現在我們已經知道信任庫是什么以及密鑰庫是什么,讓我們來了解一下使用 IBM JSSE 在 WebSphere Application Server 環境中是如何定義它們的。
  
  如何指定密鑰庫和信任庫
  
  為了打開 JSSE 的連接,您必須在信任庫和密鑰庫中擁有合適的證書以及私有密鑰。您需要配置 JVM 來使用您的信任庫或密鑰庫。然而,假如您僅執行服務器驗證(就是說,客戶端使服務器的證書生效,但不答應反向),那么您只需要信任庫。
  
  假如您在沒有明確地指定信任庫或密鑰庫的情況下創建 SSL 連接,那么 JSSE 運行時將會使用“缺省”庫。對于 WebSphere Application Server 來說,意味著 cacerts 文件被用作缺省的信任庫(位于 WAS 安裝目錄下的 java/jre/lib/security 中)。
  
  假如您聯系的站點使用由公認的 CA 發出的證書,那么 IBM 提供的缺省證書很可能已經包含了您需要的信息。您可以使用 IBM 提供的 iKeyman 工具(WebSphere Application Server 安裝后自動可用)打開 cacerts 文件來確定 JDK 中包含什么證書。
  
  假如您訪問的站點沒有使用由 CA 發出的證書,CA 被包含在 WebSphere Application Server 中,那么您需要獲得它們的簽名證書并且將其添加到信任庫中。我們推薦您不要修改現有的 JDK 文件,而是使用 iKeyman 創建新的信任庫。然后您需要配置 WebSphere Application Server 運行時來使用該信用庫,。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 化州市| 资讯 | 常宁市| 平安县| 呼玛县| 凌源市| 历史| 揭西县| 乐陵市| 疏勒县| 牟定县| 凌海市| 武陟县| 嘉鱼县| 衡南县| 巴彦淖尔市| 平陆县| 右玉县| 天津市| 夏河县| 襄城县| 甘泉县| 青州市| 巨鹿县| 洪湖市| 永昌县| 密云县| 南昌市| 兴义市| 高碑店市| 乐平市| 友谊县| 汪清县| 克拉玛依市| 广东省| 牡丹江市| 新疆| 双流县| 永和县| 科尔| 乌拉特后旗|