Tetapan proksi Java 9+ JarSigner API untuk permintaan cap masa
Gunakan persediaan JarSigner awam Java 9+ dengan semakan peminta, hos dan port proksi dan bukan kelas arahan dalaman.
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 ialah KeyStore.PrivateKeyEntry sedia ada. Berikan nilai akaun proksi daripada sumber kelayakan aplikasi, kemudian gunakan penandatangan ini dalam aliran kerja ZipFile dan aliran output biasa.
Predikat jenis peminta memisahkan pengesahan proksi dan destinasi, menghalang cabaran destinasi daripada menerima kata laluan proksi; hos dan port mengehadkan perantara.
Sifat sistem dan Authenticator lalai mempengaruhi seluruh JVM. Tetapkan jangka hayatnya semasa permulaan dan bukan menukarnya di sekeliling tugas serentak.
API jdk.security.jarsigner awam mengelakkan sun.security.tools.jarsigner.Main dan susun atur tools.jar lama. Contoh menggunakan HTTP TSA; TSA HTTPS juga memerlukan laluan HTTPSnya sendiri serta dasar pengesahan dan pengesahan identiti yang biasa.