BAEL-4415 get a list of trusted certificates in Java
This commit is contained in:
parent
26c7ec551d
commit
4503d5c3f7
|
@ -0,0 +1,94 @@
|
||||||
|
package certificates;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import javax.net.ssl.TrustManager;
|
||||||
|
import javax.net.ssl.TrustManagerFactory;
|
||||||
|
import javax.net.ssl.X509TrustManager;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.security.KeyStore;
|
||||||
|
import java.security.KeyStoreException;
|
||||||
|
import java.security.NoSuchAlgorithmException;
|
||||||
|
import java.security.cert.Certificate;
|
||||||
|
import java.security.cert.CertificateException;
|
||||||
|
import java.security.cert.PKIXParameters;
|
||||||
|
import java.security.cert.TrustAnchor;
|
||||||
|
import java.security.cert.X509Certificate;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Enumeration;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertFalse;
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
public class CertificatesUnitTest {
|
||||||
|
|
||||||
|
private static final String GODADDY_CA_ALIAS = "godaddyrootg2ca [jdk]";
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenLoadingCacertsKeyStore_thenCertificatesArePresent() throws Exception {
|
||||||
|
KeyStore keyStore = loadKeyStore();
|
||||||
|
PKIXParameters params = new PKIXParameters(keyStore);
|
||||||
|
|
||||||
|
Set<TrustAnchor> trustAnchors = params.getTrustAnchors();
|
||||||
|
List<Certificate> certificates = trustAnchors.stream()
|
||||||
|
.map(TrustAnchor::getTrustedCert)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
assertFalse(certificates.isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenLoadingDefaultKeyStore_thenCertificatesArePresent() throws Exception {
|
||||||
|
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
|
||||||
|
trustManagerFactory.init((KeyStore)null);
|
||||||
|
|
||||||
|
List<TrustManager> trustManagers = Arrays.asList(trustManagerFactory.getTrustManagers());
|
||||||
|
List<X509Certificate> certificates = trustManagers.stream()
|
||||||
|
.filter(X509TrustManager.class::isInstance)
|
||||||
|
.map(X509TrustManager.class::cast)
|
||||||
|
.map(trustManager -> Arrays.asList(trustManager.getAcceptedIssuers()))
|
||||||
|
.flatMap(Collection::stream)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
assertFalse(certificates.isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenLoadingKeyStore_thenGoDaddyCALabelIsPresent() throws Exception {
|
||||||
|
KeyStore keyStore = loadKeyStore();
|
||||||
|
|
||||||
|
Enumeration<String> aliasEnumeration = keyStore.aliases();
|
||||||
|
List<String> aliases = Collections.list(aliasEnumeration);
|
||||||
|
|
||||||
|
assertTrue(aliases.contains(GODADDY_CA_ALIAS));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenLoadingKeyStore_thenGoDaddyCertificateIsPresent() throws Exception {
|
||||||
|
KeyStore keyStore = loadKeyStore();
|
||||||
|
|
||||||
|
Certificate goDaddyCertificate = keyStore.getCertificate(GODADDY_CA_ALIAS);
|
||||||
|
|
||||||
|
assertNotNull(goDaddyCertificate);
|
||||||
|
}
|
||||||
|
|
||||||
|
private KeyStore loadKeyStore() throws CertificateException, NoSuchAlgorithmException, IOException, KeyStoreException {
|
||||||
|
String relativeCacertsPath = "/lib/security/cacerts".replace("/", File.separator);
|
||||||
|
String filename = System.getProperty("java.home") + relativeCacertsPath;
|
||||||
|
FileInputStream is = new FileInputStream(filename);
|
||||||
|
|
||||||
|
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
|
||||||
|
String password = "changeit";
|
||||||
|
keystore.load(is, password.toCharArray());
|
||||||
|
|
||||||
|
return keystore;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue