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 маршрутун жана кадимки текшерүү жана аутентификация саясатын талап кылат.