【发布时间】:2020-10-23 08:45:36
【问题描述】:
我有一个 Jersey 应用程序,它基本上从 S3 检索图像文件并进行操作(调整大小等)以获取缩略图。最后,它将缩略图存储回同一个存储桶中。
如图所示禁用 SSL 时它可以正常工作。
@ApplicationPath("/*")
public class TarkshalaPhotoLibraryApplication extends Application {
@SneakyThrows
public TarkshalaPhotoLibraryApplication() {
// FIXME: 01/07/20 This is for sake of development, in production environment
// legitimate certificate issuers are needed to be supplied
disableSSLVerification();
}
private void disableSSLVerification() throws NoSuchAlgorithmException, KeyManagementException {
TrustManager[] trustAllCerts = new TrustManager[] {
new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
}
};
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
// Create all-trusting host name verifier
HostnameVerifier allHostsValid = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
};
HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
}
}
我是在 jersey 的应用类中做的。
我对上面的代码 sn-p 的理解是,我们基本上是在添加 TrustManager 来跳过检查 ssl 证书。理想情况下,我们的信任管理器应该检查我们必须指向正确的 SSL 提供者的证书。
我不知道的是,我在哪里可以获得 S3 使用的正确 SSL-Provider 以及在 Java 中检查 SSL 的正确方法。
任何帮助将不胜感激。
【问题讨论】:
-
我不知道 S3,但是要在 java 中使用 SSL 验证。您可以获得证书,创建一个信任库并将该信任库保存在类路径中。用户 JAVA_OPTS 指向证书 JAVA_OPTS -Djavax.net.ssl.trustStore=信任库的路径。即使您可以使用 System.setProperty("javax.net.ssl.trustStore","trust store path"); System.setProperty("javax.net.ssl.trustStorePassword","password");
标签: java security ssl amazon-s3 https