Thiết lập proxy cho yêu cầu dấu thời gian trong Java 9+ JarSigner API
Dùng cấu hình JarSigner công khai của Java 9+ với kiểm tra bên yêu cầu, máy chủ và cổng của proxy thay vì các lớp lệnh nội bộ.
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 là KeyStore.PrivateKeyEntry hiện có. Cung cấp giá trị tài khoản proxy từ nguồn thông tin xác thực của ứng dụng, sau đó dùng bộ ký này trong quy trình ZipFile và luồng đầu ra thông thường của nó.
Vị từ loại bên yêu cầu giữ xác thực proxy và đích tách biệt, ngăn thử thách từ đích nhận được mật khẩu proxy; máy chủ và cổng giới hạn bên trung gian.
Thuộc tính hệ thống và Authenticator mặc định ảnh hưởng toàn bộ JVM. Đặt vòng đời của chúng khi khởi động thay vì chuyển đổi chúng quanh các tác vụ đồng thời.
API jdk.security.jarsigner công khai tránh sun.security.tools.jarsigner.Main và các bố cục tools.jar cũ. Ví dụ dùng TSA qua HTTP; TSA qua HTTPS cũng cần tuyến HTTPS riêng và chính sách xác minh và xác thực thông thường.