Pengaturan proxy Java 9+ JarSigner API untuk permintaan stempel waktu
Gunakan penyiapan JarSigner publik Java 9+ dengan pemeriksaan peminta, host, dan port proxy alih-alih kelas perintah internal.
System.setProperty("http.proxyHost", "proxy.example");
System.setProperty("http.proxyPort", "8080");
java.net.Authenticator.setDefault(new java.net.Authenticator() {
@Override
protected java.net.PasswordAuthentication getPasswordAuthentication() {
if (getRequestorType() == RequestorType.PROXY
&& "proxy.example".equalsIgnoreCase(getRequestingHost())
&& getRequestingPort() == 8080) {
return new java.net.PasswordAuthentication(
proxyUser, proxyPassword.toCharArray());
}
return null;
}
});
var signer = new jdk.security.jarsigner.JarSigner.Builder(signingEntry)
.tsa(java.net.URI.create("http://tsa.example/"))
.build();signingEntry adalah KeyStore.PrivateKeyEntry yang sudah ada. Berikan nilai akun proxy dari sumber kredensial aplikasi, lalu gunakan penandatangan ini dalam alur kerja ZipFile dan aliran keluaran biasanya.
Predikat jenis peminta menjaga autentikasi proxy dan tujuan tetap terpisah, sehingga tantangan tujuan tidak menerima kata sandi proxy; host dan port membatasi perantara.
Properti sistem dan Authenticator bawaan memengaruhi seluruh JVM. Tetapkan masa hidupnya saat mulai, bukan menukarnya di sekitar tugas bersamaan.
API publik jdk.security.jarsigner menghindari sun.security.tools.jarsigner.Main dan tata letak tools.jar lama. Contoh memakai HTTP TSA; TSA HTTPS juga memerlukan rute HTTPS-nya sendiri dan kebijakan verifikasi serta autentikasi yang biasa.