Java 9+ JarSigner API အတွက် အချိန်တံဆိပ် တောင်းဆိုမှုများတွင် ပရောက်စီ ဆက်တင်များ
အတွင်းပိုင်း command class များအစား ပရောက်စီ တောင်းခံသူ၊ ဟိုစ့် နှင့် ပေါက်တို့ကို စစ်ဆေးသည့် 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 နှင့် output stream အလုပ်အသွားအလာတွင် အသုံးပြုပါ။
တောင်းခံသူ အမျိုးအစား သတ်မှတ်ချက်သည် ပရောက်စီ နှင့် ပန်းတိုင် အတည်ပြုခြင်း ကို သီးခြားထားပြီး ပန်းတိုင်မှ စိန်ခေါ်မှုသည် ပရောက်စီ စကားဝှက်ကို မရရှိစေရန် တားဆီးသည်၊ ဟိုစ့် နှင့် ပေါက်တို့က ကြားခံကို ကန့်သတ်သည်။
စနစ် ဂုဏ်သတ္တိများ နှင့် မူရင်း Authenticator သည် JVM တစ်ခုလုံးကို သက်ရောက်သည်။ ပြိုင်တူအလုပ်များ ပတ်လည်တွင် ၎င်းတို့ကို လဲလှယ်မည့်အစား စတင်ချိန်တွင် ၎င်းတို့၏ သက်တမ်းကို သတ်မှတ်ပါ။
အများသုံး jdk.security.jarsigner API သည် sun.security.tools.jarsigner.Main နှင့် ဟောင်းနွမ်းသော tools.jar အပြင်အဆင်များကို ရှောင်ကြဉ်သည်။ ဥပမာက HTTP TSA ကို အသုံးပြုသည်၊ HTTPS TSA သည်လည်း ၎င်း၏ HTTPS လမ်းကြောင်း နှင့် ပုံမှန် စစ်ဆေးအတည်ပြု မူဝါဒ လိုအပ်သည်။