Skip to content

Commit 0436cf9

Browse files
committed
support certificate chain when reading client certificate
1 parent 73ae39a commit 0436cf9

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

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

Lines changed: 5 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,8 @@ 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 = ((X509Certificate) certs.stream().findFirst().get()).getSubjectX500Principal().getName();
201+
keyStore.setKeyEntry(alias, privateKey, clientKeyPassphrase, certs.toArray(new X509Certificate[certs.size()]));
200202

201203
return keyStore;
202204
}

0 commit comments

Comments
 (0)