Skip to content

Commit 1c616f3

Browse files
authored
Merge pull request #2009 from rrayst/master
support certificate chain when reading client certificate(s)
2 parents af4e94b + 9db5997 commit 1c616f3

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

util/src/main/java/io/kubernetes/client/util/SSLUtils.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,14 @@
2828
import java.security.PrivateKey;
2929
import java.security.Security;
3030
import java.security.UnrecoverableKeyException;
31+
import java.security.cert.Certificate;
3132
import java.security.cert.CertificateException;
3233
import java.security.cert.CertificateFactory;
3334
import java.security.cert.X509Certificate;
3435
import java.security.spec.InvalidKeySpecException;
3536
import java.security.spec.PKCS8EncodedKeySpec;
3637
import java.security.spec.RSAPrivateCrtKeySpec;
38+
import java.util.Collection;
3739
import javax.net.ssl.KeyManager;
3840
import javax.net.ssl.KeyManagerFactory;
3941
import org.apache.commons.codec.binary.Base64;
@@ -175,7 +177,7 @@ public static KeyStore createKeyStore(
175177
throws IOException, CertificateException, NoSuchAlgorithmException, InvalidKeySpecException,
176178
KeyStoreException {
177179
CertificateFactory certFactory = CertificateFactory.getInstance("X509");
178-
X509Certificate cert = (X509Certificate) certFactory.generateCertificate(certInputStream);
180+
Collection<? extends Certificate> certs = certFactory.generateCertificates(certInputStream);
179181

180182
PrivateKey privateKey = loadKey(keyInputStream, clientKeyAlgo);
181183

@@ -195,8 +197,10 @@ public static KeyStore createKeyStore(
195197
loadDefaultKeyStoreFile(keyStore, keyStorePassphrase);
196198
}
197199

198-
String alias = cert.getSubjectX500Principal().getName();
199-
keyStore.setKeyEntry(alias, privateKey, clientKeyPassphrase, new X509Certificate[] {cert});
200+
String alias =
201+
((X509Certificate) certs.stream().findFirst().get()).getSubjectX500Principal().getName();
202+
keyStore.setKeyEntry(
203+
alias, privateKey, clientKeyPassphrase, certs.toArray(new X509Certificate[certs.size()]));
200204

201205
return keyStore;
202206
}

0 commit comments

Comments
 (0)