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

Applet 與 Java Web Start 數位簽名全流程:突破沙箱限制訪問本地/網路資源

     編輯:Java 相關知識

未簽名的 Applet/JWS 運行於嚴格沙箱:禁止訪問本地檔案、網路連線僅限同源。透過數位簽名並獲用戶授權,可提權至「全許可權」。本文演示從金鑰生成、JAR 簽名、HTML/JNLP 部署到用戶授權的完整流程。

環境準備

  • JDK 1.4+(含 keytool、jarsigner)
  • 瀏覽器安裝 Java Plugin(舊版 IE/FF)或 JRE 支援 JWS

1. 生成密鑰對與自簽名證書

keytool -genkey -alias mykey -keystore mystore
# 依提示輸入:keystore 密碼、姓名、組織、城市、省份、國家代碼 (CN)
# 輸入 key 密碼(可同 keystore 密碼)

產生 mystore 檔案,包含私鑰與自簽名公開鑰證書。

2. 簽名 JAR 檔

jarsigner -keystore mystore test.jar mykey
# 輸入 keystore 密碼、key 密碼

3. 部署 Applet(HTML)

<applet code="test.TestApplet.class"
        archive="test.jar"
        width="400" height="300">
</applet>

瀏覽器載入時彈出安全對話框,顯示「發行者未經驗證」,用戶選「授權於會話」或「總是授權」即可獲得權限。

4. 部署 Java Web Start (JNLP)

在 .jnlp 根元素下加入:

<security>
  <all-permissions/>
</security>

首次啟動彈出信任對話框,用戶選「啟動」後後續不再提示(相當於本地安裝)。

安全性警示與最佳實踐

  • 自簽名證書不可信:生產環境**必須**向受信 CA(DigiCert、GlobalSign、Let's Encrypt 等)購買代碼簽名證書(Code Signing Certificate)。
  • Applet 技術**已被瀏覽器廠商棄用**(Chrome 45+、Firefox 52+、Edge 全版本均移除 NPAPI 支援),**新專案嚴禁使用 Applet**。
  • JWS 自 Java 11 起從 JDK 移出,維護模式由 Adoptium 社群維護,建議遷移至:
    — 桌面端:jpackage (JDK 14+) 打包原生安裝包
    — Web 端:WebAssembly + Java (CheerpJ、TeaVM) 或重寫為前後端分離架構。

歷史代碼維護建議

  1. 若必須維護舊 Applet/JWS,請在受控內網環境部署,配置 deployment.properties 白名單降低提示頻率。
  2. 制定遷移時間表,優先重寫核心業務邏輯為 REST API + 現代前端。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved