Skip to content

Commit d6941ba

Browse files
authored
Merge pull request docker-java#936 from jamesnetherton/922-ssl-config
Fixes docker-java#922. Remove dependency on Jersey for SSLContext configuration
2 parents 97f4827 + 9f13cc5 commit d6941ba

1 file changed

Lines changed: 26 additions & 7 deletions

File tree

src/main/java/com/github/dockerjava/core/LocalDirectorySSLConfig.java

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,15 @@
66
import java.io.Serializable;
77
import java.nio.file.Files;
88
import java.nio.file.Paths;
9+
import java.security.AccessController;
10+
import java.security.PrivilegedAction;
911
import java.security.Security;
1012

13+
import javax.net.ssl.KeyManagerFactory;
1114
import javax.net.ssl.SSLContext;
15+
import javax.net.ssl.TrustManagerFactory;
1216

1317
import org.bouncycastle.jce.provider.BouncyCastleProvider;
14-
import org.glassfish.jersey.SslConfigurator;
1518

1619
import com.github.dockerjava.api.exception.DockerClientException;
1720
import com.github.dockerjava.core.util.CertificateUtils;
@@ -53,13 +56,20 @@ public SSLContext getSSLContext() {
5356
String certpem = new String(Files.readAllBytes(Paths.get(certPemPath)));
5457
String capem = new String(Files.readAllBytes(Paths.get(caPemPath)));
5558

56-
SslConfigurator sslConfig = SslConfigurator.newInstance(true);
57-
sslConfig.securityProtocol("TLSv1.2");
58-
sslConfig.keyStore(CertificateUtils.createKeyStore(keypem, certpem));
59-
sslConfig.keyStorePassword("docker");
60-
sslConfig.trustStore(CertificateUtils.createTrustStore(capem));
59+
String kmfAlgorithm = AccessController.doPrivileged(getSystemProperty("ssl.keyManagerFactory.algorithm",
60+
KeyManagerFactory.getDefaultAlgorithm()));
61+
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(kmfAlgorithm);
62+
keyManagerFactory.init(CertificateUtils.createKeyStore(keypem, certpem), "docker".toCharArray());
6163

62-
return sslConfig.createSSLContext();
64+
String tmfAlgorithm = AccessController.doPrivileged(getSystemProperty("ssl.trustManagerFactory.algorithm",
65+
TrustManagerFactory.getDefaultAlgorithm()));
66+
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(tmfAlgorithm);
67+
trustManagerFactory.init(CertificateUtils.createTrustStore(capem));
68+
69+
SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
70+
sslContext.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(), null);
71+
72+
return sslContext;
6373

6474
} catch (Exception e) {
6575
throw new DockerClientException(e.getMessage(), e);
@@ -71,6 +81,15 @@ public SSLContext getSSLContext() {
7181

7282
}
7383

84+
private PrivilegedAction<String> getSystemProperty(final String name, final String def) {
85+
return new PrivilegedAction<String>() {
86+
@Override
87+
public String run() {
88+
return System.getProperty(name, def);
89+
}
90+
};
91+
}
92+
7493
@Override
7594
public boolean equals(Object o) {
7695
if (this == o) {

0 commit comments

Comments
 (0)