Ρυθμίσεις διαμεσολαβητή για αιτήματα χρονοσφραγίδας με το Java 9+ JarSigner API
Χρησιμοποιήστε τη δημόσια ρύθμιση JarSigner του Java 9+ με ελέγχους αιτούντος, κεντρικού υπολογιστή και θύρας του διαμεσολαβητή αντί για εσωτερικές κλάσεις εντολών.
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 και τη συνήθη πολιτική επαλήθευσης και πιστοποίησης.