利用 JSSE 和 JCE 程式設計介面來保護傳輸安全
您可以使用 Java™ Secure Socket Extension (JSSE) 和 Java Cryptography Extension (JCE) 程式設計介面,來進一步瞭解傳輸安全的詳細資訊。 在本主題內,有 IBM® 版 Java Cryptography Extension Federal Information Processing Standard (IBMJCEFIPS) 的說明。
Java Secure Socket Extension
JSSE 提供 WebSphere® Application Server的傳輸安全。 JSSE 提供應用程式設計介面 (API) 架構,以及 Secure Sockets Layer (SSL) 和傳輸層安全 (TLS) 通訊協定的 API 實作,包括資料加密、訊息完整性和鑑別的功能。
JSSE API 已整合至 Java 2 SDK Standard Edition (J2SDK) 第 5 版。 JSSE API 的 API 套件是 javax.net.ssl.*。 使用 JSSE API 的文件可在 J2SE 6 API 文件中找到,該文件位於 http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html。
WebSphere Application Server隨附的 Java 2 SDK 第 5 版隨附數個 JSSE 提供者。 IBMJSSE 提供者用於舊版 WebSphere Application Server 。
如需新 IBMJSSE2 提供者的相關資訊,請檢閱位於 https://www.ibm.com/developerworks/java/jdk/security/60/的說明文件。
自訂 Java Secure Socket Extension
| 可自訂的項目 | 預設值 | 如何自訂 |
|---|---|---|
| X509Certificate | IBM 中的 X509Certificate 實作 | cert.provider.x509v1 安全內容 |
| HTTP 通訊協定 | 來自 IBM 的實作 | java.protocol.handler.pkgs 系統內容 |
| 加密法套件提供者 | IBMJSSE2 | 安全內容檔中的 security.provider.n= 行。 請參閱說明。 |
| 預設金鑰儲存庫 | 無 | * javax.net.ssl.keyStore 系統內容 |
| 預設信任儲存庫 | jssecacerts (如果存在的話)。 否則, cacerts | * javax.net.ssl.trustStore 系統內容 |
| 預設金鑰管理程式 Factory | IbmX509 | ssl.KeyManagerFactory.algorithm 安全內容 |
| 預設信任管理程式 Factory | IbmX509 | ssl.TrustManagerFactory.algorithm 安全內容 |
對於您可以透過設定系統內容來自訂的層面,請使用 Java 指令的 -D 選項靜態設定系統內容。 您可以利用管理主控台來設定系統內容,或在程式碼中呼叫 java.lang.System.setProperty 方法來動態設定系統內容: System.setProperty(propertyName, "propertyValue")。
對於您可以透過設定 Java 安全內容來自訂的層面,請靜態指定 java.security 內容檔中的安全內容值。 安全內容是 propertyName=propertyValue。 透過呼叫 java.security.Security.setProperty 方法。
java.security 內容檔案位於下列目錄:
app_server_root/java/jre/lib/security 目錄。
app_server_root/properties 目錄。
profile_root/properties 目錄。
JSSE 的應用程式設計介面
- Socket 和 SSL Socket
- 用來建立 Socket 和 SSL Socket 的 Factory
- 安全 Socket 環境定義,作為安全 Socket Factory 的 Factory
- 金鑰和信任管理程式介面
- 安全 HTTP URL 連線類別
- 公開金鑰憑證 API
您可以在 Java SDK 文件中找到相關資訊。
使用 Java Secure Socket Extension 的範例
- 1.6 版
- 存取 https://www.ibm.com/developerworks/java/jdk/security/ 網站。
- 按一下 Java 1.6。
- Click jssedocs_samples.zip in the Java Secure Socket Extension (JSSE) Guide section.
| 檔案 | 說明 |
|---|---|
| ClientJsse.java | 使用 JSSE 示範簡單的用戶端與伺服器互動。 會使用所有已啟用的密碼組合。 |
| OldServerJsse.java | 前一層次範例 |
| ServerPKCS12Jsse.java | 示範使用 JSSE 搭配 PKCS12 金鑰儲存庫檔的簡式用戶端和伺服器互動。 會使用所有已啟用的密碼組合。 |
| ClientPKCS12Jsse.java | 示範使用 JSSE 搭配 PKCS12 金鑰儲存庫檔的簡式用戶端和伺服器互動。 會使用所有已啟用的密碼組合。 |
| UseHttps.java | 示範使用 com.ibm.net.ssl.www.protocol 類別的 Java 通訊協定處理程式來存取 SSL 或非 SSL Web 伺服器。 URL 是以 http 或 https 字首來指定。 會顯示從此網站傳回的 HTML。 |
Java 2 安全的許可權
- java.util.PropertyPermission "java.protocol.handler.pkgs" , "write"
- java.lang.RuntimePermission "writeFile描述子"
- java.lang.RuntimePermission "readFile描述子"
- java.lang.RuntimePermission "accessClassInPackage.sun.security.x509"
- java.io.FilePermission "${user.install.root}${/}等 ${/}.keystore" , "read"
- java.io.FilePermission "${user.install.root}${/}等 ${/}.truststore" , "read"
- java.security.SecurityPermission "putProviderProperty.IBMJSSE"
- java.security.SecurityPermission "insertProvider。IBMJSSE "
- java.security.SecurityPermission "putProviderProperty.SunJSSE"
- java.security.SecurityPermission "insertProvider.SunJSSE"
正在除錯
透過 javax.net.debug 系統內容來配置, JSSE 提供下列動態除錯追蹤: -Djavax.net.debug= true。
如果已安裝 JSSE 除錯版本, true 值會開啟追蹤機能。
true 值會開啟追蹤機能。 請利用管理主控台來設定系統內容,以便對應用程式伺服器進行除錯。
JSSE 的文件
如需 JSSE 的文件參照,請參閱 Security: Resources for learning 主題。
JCE
「Java 加密法延伸 (JCE)」提供 WebSphere Application Server的加密、金鑰和雜湊演算法。 JCE 提供加密、金鑰產生、金鑰合約及「訊息鑑別碼 (MAC)」演算法的架構及實作。 加密支援包括對稱、非對稱、區塊及串流密碼。
IBMJCE
- 密碼演算法 (AES、DES、 TripleDES、PBEs、Blowfish 等)
- 簽章演算法 (SHA1withRSA、 MD5withRSA、 SHA1withDSA)
- 訊息摘要演算法 (MD5、 MD2、 SHA1、 SHA-256、 SHA-384、 SHA-512)
- 訊息鑑別碼 (HmacSHA1、 HmacMD5)
- 金鑰協定演算法 (DiffieHellman)
- 亂數產生演算法 (IBMSecureRandom, SHA1PRNG)
- 金鑰儲存庫 (JKS、JCEKS、 PKCS12、JCERACFKS [僅限z/OS ])
如需進一步資訊,請參閱下列網站上的 JCE 相關資訊: https://www.ibm.com/developerworks/java/jdk/security/60/。
IBMJCEFIPS
- 簽章演算法 (SHA1withDSA、 SHA1withRSA)
- 密碼演算法 (AES、 TripleDES、RSA)
- 金鑰協定演算法 (DiffieHellman)
- 金鑰 (配對) 產生器 (DSA、AES、 TripleDES、 HmacSHA1、RSA、 DiffieHellman)
- 訊息鑑別碼 (MAC) (HmacSHA1)
- 訊息摘要 (MD5、 SHA-1、 SHA-256、 SHA-384、 SHA-512)
- 演算法參數產生器 (DiffieHellman, DSA)
- 演算法參數 (AES、 DiffieHellman、DES、 TripleDES、DSA)
- 金鑰 Factory (DiffieHellman、DSA、RSA)
- 秘密金鑰 Factory (AES , TripleDES)
- 憑證 (X.509)
- 安全隨機 (IBMSecureRandom)
JCE 的應用程式設計介面
- 對稱大量加密,例如 DES、 RC2及 IDEA
- 對稱串流加密,例如 RC4
- 非對稱加密,例如 RSA
- 密碼型加密 (PBE)
- 主要合約
- 訊息鑑別碼
https://www.ibm.com/developerworks/java/jdk/security/ 網站上記載了 JCE API 的相關資訊。
使用 Java Cryptography Extension 的範例
| 檔案 | 說明 |
|---|---|
| SampleDSASignature.java | 示範如何產生 DSA 金鑰 (公開金鑰和私密金鑰) 配對,並使用該金鑰來使用 SHA1withDSA 演算法以數位方式簽署訊息 |
| SampleMarsCrypto.java | 示範如何產生 Mars 秘密金鑰,以及如何執行 Mars 加密和解密 |
| SampleMessageDigests.java | 示範如何使用 MD2 和 MD5 演算法的訊息摘要 |
| SampleRSACrypto.java | 示範如何產生 RSA 金鑰組,以及如何執行 RSA 加密和解密 |
| SampleRSASignatures.java | 示範如何產生 RSA 金鑰配對 (公開金鑰和私密金鑰) ,並使用金鑰以數位方式使用 SHA1withRSA 演算法來簽署訊息 |
| SampleX509Verification.java | 示範如何驗證 X509 憑證 |