Fix ssl hostname verification

Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
Mario Danic 2017-10-29 13:13:20 +01:00
parent 7225bf82a9
commit 49c8baabe3

View File

@ -95,21 +95,26 @@ public class MagicTrustManager implements X509TrustManager {
systemTrustManager.checkServerTrusted(new X509Certificate[]{x509Certificate}, "generic"); systemTrustManager.checkServerTrusted(new X509Certificate[]{x509Certificate}, "generic");
return true; return true;
} catch (CertificateException e) { } catch (CertificateException e) {
if (trustedKeyStore != null) { return isCertInMagicTrustStore(x509Certificate);
try {
if (trustedKeyStore.getCertificateAlias(x509Certificate) != null) {
return true;
}
} catch (KeyStoreException exception) {
return false;
}
}
} }
} }
return false; return false;
} }
private boolean isCertInMagicTrustStore(X509Certificate x509Certificate) {
if (trustedKeyStore != null) {
try {
if (trustedKeyStore.getCertificateAlias(x509Certificate) != null) {
return true;
}
} catch (KeyStoreException exception) {
return false;
}
}
return false;
}
public void addCertInTrustStore(X509Certificate x509Certificate) { public void addCertInTrustStore(X509Certificate x509Certificate) {
if (trustedKeyStore != null) { if (trustedKeyStore != null) {
try { try {
@ -157,7 +162,7 @@ public class MagicTrustManager implements X509TrustManager {
try { try {
X509Certificate[] certificates = (X509Certificate[]) sslSession.getPeerCertificates(); X509Certificate[] certificates = (X509Certificate[]) sslSession.getPeerCertificates();
if (certificates.length > 0 && certificates[0] != null) { if (certificates.length > 0 && certificates[0] != null && isCertInMagicTrustStore(certificates[0])) {
return true; return true;
} }
} catch (SSLPeerUnverifiedException e) { } catch (SSLPeerUnverifiedException e) {