66import java .io .Serializable ;
77import java .nio .file .Files ;
88import java .nio .file .Paths ;
9+ import java .security .AccessController ;
10+ import java .security .PrivilegedAction ;
911import java .security .Security ;
1012
13+ import javax .net .ssl .KeyManagerFactory ;
1114import javax .net .ssl .SSLContext ;
15+ import javax .net .ssl .TrustManagerFactory ;
1216
1317import org .bouncycastle .jce .provider .BouncyCastleProvider ;
14- import org .glassfish .jersey .SslConfigurator ;
1518
1619import com .github .dockerjava .api .exception .DockerClientException ;
1720import 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