Java 9+ JarSigner API میں ٹائم اسٹیمپ درخواستوں کے لیے پراکسی سیٹنگز
اندرونی کمانڈ کلاسز کی بجائے پراکسی درخواست کنندہ، میزبان اور پورٹ کی جانچ کے ساتھ Java 9+ کی عوامی JarSigner ترتیب استعمال کریں۔
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 موجودہ KeyStore.PrivateKeyEntry ہے۔ پراکسی اکاؤنٹ کی قدریں ایپلیکیشن کے اسناد کے ماخذ سے فراہم کریں، پھر اس دستخط کنندہ کو اس کے معمول کے ZipFile اور آؤٹ پٹ اسٹریم ورک فلو میں استعمال کریں۔
درخواست کنندہ کی قسم کی شرط پراکسی اور منزل کی توثیق کو الگ رکھتی ہے، منزل کے چیلنج کو پراکسی پاس ورڈ ملنے سے روکتی ہے؛ میزبان اور پورٹ درمیانی کو محدود کرتے ہیں۔
سسٹم خصوصیات اور طے شدہ Authenticator پورے JVM پر اثر ڈالتے ہیں۔ بیک وقت چلنے والے کاموں کے گرد انہیں بدلنے کی بجائے آغاز پر ان کی مدت متعین کریں۔
عوامی jdk.security.jarsigner API sun.security.tools.jarsigner.Main اور پرانے tools.jar ترتیبوں سے بچتا ہے۔ مثال HTTP TSA استعمال کرتی ہے؛ HTTPS TSA کو بھی اپنا HTTPS راستہ اور معمول کی تصدیق و توثیق کی پالیسی درکار ہے۔