2828import java .security .PrivateKey ;
2929import java .security .Security ;
3030import java .security .UnrecoverableKeyException ;
31+ import java .security .cert .Certificate ;
3132import java .security .cert .CertificateException ;
3233import java .security .cert .CertificateFactory ;
3334import java .security .cert .X509Certificate ;
3435import java .security .spec .InvalidKeySpecException ;
3536import java .security .spec .PKCS8EncodedKeySpec ;
3637import java .security .spec .RSAPrivateCrtKeySpec ;
38+ import java .util .Collection ;
3739import javax .net .ssl .KeyManager ;
3840import javax .net .ssl .KeyManagerFactory ;
3941import 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