- 適用於 JDK 23 的 GraalVM (最新版本)
- 適用於 JDK 24 的 GraalVM (搶先體驗版)
- 適用於 JDK 21 的 GraalVM
- 適用於 JDK 17 的 GraalVM
- 封存
- 開發版本
Native Image 中的憑證管理
Native Image 提供多種方式來指定用於定義預設信任儲存區的憑證檔案。在以下章節中,我們將說明可用的建置時和執行時選項。注意:native-image
的預設行為是從建置時主機環境擷取並使用預設信任儲存區。
建置時選項 #
在映像檔建置過程中,native-image
建置器會擷取主機環境的預設信任儲存區,並將其嵌入至原生執行檔中。預設情況下,此信任儲存區是從 JDK 中提供的根憑證檔案建立,但可以透過設定建置時系統屬性 javax.net.ssl.trustStore
來變更為使用不同的憑證檔案 (請參閱 屬性 以了解如何操作)。
由於建置時憑證檔案的內容會嵌入至原生執行檔中,因此檔案本身不需要存在於目標環境中。
執行時選項 #
也可以透過設定 javax.net.ssl.trustStore\*
系統屬性,在執行時動態變更憑證檔案。
如果在映像檔執行期間設定了以下任何系統屬性,則 native-image
也會要求設定 javax.net.ssl.trustStore
,並使其指向可存取的憑證檔案
javax.net.ssl.trustStore
javax.net.ssl.trustStoreType
javax.net.ssl.trustStoreProvider
javax.net.ssl.trustStorePassword
如果設定了這些屬性中的任何一個,且 javax.net.ssl.trustStore
未指向可存取的檔案,則會擲回 UnsupportedFeatureError
。
請注意,此行為與 OpenJDK 不同。當 javax.net.ssl.trustStore
系統屬性未設定或無效時,OpenJDK 會回退使用 JDK 中隨附的憑證檔案。但是,此類檔案不會與映像檔執行檔一起存在,因此無法用作回退。
在執行期間,也可以動態變更 javax.net.ssl.trustStore\*
屬性,並據此更新預設信任儲存區。
最後,每當未設定上述所有 javax.net.ssl.trustStore\*
系統屬性時,預設信任儲存區將是建置時擷取的信任儲存區,如前一節所述。
不受信任的憑證 #
在映像檔建置過程中,會從檔案 <java.home>/lib/security/blacklisted.certs
載入不受信任的憑證清單。此檔案用於在建置時和執行時驗證憑證。換句話說,當透過設定 javax.net.ssl.trustStore\*
系統屬性在執行時指定新的憑證檔案時,仍會根據映像檔建置時載入的 <java.home>/lib/security/blacklisted.certs
來檢查新憑證。