首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 加密技術(九):SSL 協議實戰——自簽名證書構建 HTTPS 服務與客戶端驗證

     編輯:Java 相關知識

本文深度剖析現有安全網絡通信基石——SSL,使用上篇生成的自簽名證書 zlex.cer 完成證書導入、域名映射、Tomcat SSL 配置,並編寫 Java 客戶端通過 HttpsURLConnection 實現 HTTPS 訪問,驗證 SSL 雙向認證流程。

準備工作

  1. 導入證書到客戶端密鑰庫:
    keytool -import -alias www.zlex.org -file d:/zlex.cer -keystore d:/zlex-client.keystore
    密碼 654321,信任證書。
  2. 域名映射:hosts 綁定 127.0.0.1 www.zlex.org。
  3. Tomcat 配置(server.xml):
    <Connector
        SSLEnabled="true"
        URIEncoding="UTF-8"
        clientAuth="false"
        keystoreFile="conf/zlex.keystore"
        keystorePass="123456"
        maxThreads="150"
        port="443"
        protocol="HTTP/1.1"
        scheme="https"
        secure="true"
        sslProtocol="TLS" />
    clientAuth="false" 測試階段建議關閉,生產環境開啟。啟動 Tomcat,訪問 https://www.zlex.org/,瀏覽器提示證書不受信(自簽名),手動安裝 zlex.cer 為受信根證書後顯示小鎖圖標。

CertificateCoder 核心實現

抽象類 CertificateCoder 封裝:

  • 密鑰庫操作(getKeyStore、getPrivateKey、getCertificate)
  • 公私鑰加解密(encryptByPublicKey/decryptByPrivateKey、encryptByPrivateKey/decryptByPublicKey)
  • 證書驗證(verifyCertificate 檢查有效期)
  • 數字簽名(sign/verify 基於 Signature)
  • SSL Socket Factory 配置(configSSLSocketFactory 初始化 KeyManagerFactory、TrustManagerFactory、SSLContext)

關鍵點:未配置 SSLSocketFactory 前,HttpsURLConnection.getContentLength() 永遠返回 -1。

測試驗證

CertificateCoderTest 三測試方法:

  1. test():公鑰加密/私鑰解密 + 證書有效性驗證
  2. testSign():私鑰加密/公鑰解密 + 私鑰簽名/公鑰驗證簽名
  3. testHttps():配置 SSLSocketFactory 後訪問 https://www.zlex.org/examples/,控制台輸出 Tomcat Examples 頁面 HTML

雙方通過 Tomcat 配置有效 SSL 服務,可簡化代碼完全通過證書配置完成 SSL 雙向認證。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved