ugort
January 13, 2023, 10:13am
1
We need to access IMAP servers with self signed certificates using Aspose Email for Java?
What is your suggested way?
setSocketsLayerVersion2DisableSSLCertificateValidation is deprecated in version 22.11. I could not find any documentation about the exact effect it has.
The constructor parameter RemoteCertificateValidationCallback is obfuscated. How could that one be used? Referenced here:
Hello @ugort ,
You can ignore certificate validation using custom SSLSocketFactory:
import java.security.cert.CertificateException;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
public static SSLSocketFactory getSSLSocketFactory() {
TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
}
public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
}
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return new java.security.cert.X509Certificate[]{};
}
}};
try {
SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
return sslContext.getSocketFactory();
} catch (java.lang.Exception e) {
throw new RuntimeException(e);
}
}
public final void test() {
System.setProperty("javax.net.debug", "all");
EmailClient.setSocketsLayerVersion2SSLSocketFactory(getSSLSocketFactory());
ImapClient imapClient = new ImapClient(host, port, username, password);
imapClient.setTimeout(10000);
imapClient.setSecurityOptions(SecurityOptions.Auto);
imapClient.setSupportedEncryption(EncryptionProtocols.Tls12);
}
ugort
January 13, 2023, 12:06pm
3
Perfect. Thank you for the quick response.