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 માર્ગ અને સામાન્ય ચકાસણી અને પ્રમાણીકરણ નીતિ જોઈએ.