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 मार्ग र सामान्य प्रमाणीकरण तथा प्रमाणीकरण नीति चाहिन्छ।