Man*_*iz 6 java macos ssl ssl-certificate java-web-start
我是 Java Web Start 的新手,目前我正在为专用服务器开发的小程序上遇到一些奇怪的行为。
我正在尝试在下载之前动态检查是否忽略服务器的 SSL 证书。为此,我正在使用
public class TrustModifier {
private static SSLSocketFactory factory;
private static final HostnameVerifier TRUSTING_HOSTNAME_VERIFIER = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
};
public TrustModifier() {
}
public static void relaxHostChecking(URLConnection conn) {
if (conn instanceof HttpsURLConnection) {
try {
HttpsURLConnection httpsConnection = (HttpsURLConnection)conn;
httpsConnection.setSSLSocketFactory(getFactory());
httpsConnection.setHostnameVerifier(TRUSTING_HOSTNAME_VERIFIER);
} catch (Exception var2) {
}
}
}
private static synchronized SSLSocketFactory getFactory() throws Exception {
if (factory == null) {
SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init((KeyManager[])null, new X509TrustManager[]{new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
}
public X509Certificate[] getAcceptedIssuers() {
return null;
}
}}, (SecureRandom)null);
factory = ctx.getSocketFactory();
}
return factory;
}
}
Run Code Online (Sandbox Code Playgroud)
当我试图忽略证书时小程序工作正常,但是当我不想忽略它们时,即使服务器具有不受信任的(自签名)证书,下载仍然发生。
做了一些研究,我发现 Java 有可能将其受信任的证书与 MacOS 的受信任证书绑定,但无法验证这一点。我的 Mac 设置为Always trust我服务器的证书。有谁知道 Java 可信证书在 MacOS 中是如何准确处理的,这是否可能是即使服务器使用自签名证书仍会发生下载的原因?
| 归档时间: |
|
| 查看次数: |
148 次 |
| 最近记录: |