28
28
import java .security .PrivateKey ;
29
29
import java .security .Security ;
30
30
import java .security .UnrecoverableKeyException ;
31
+ import java .security .cert .Certificate ;
31
32
import java .security .cert .CertificateException ;
32
33
import java .security .cert .CertificateFactory ;
33
34
import java .security .cert .X509Certificate ;
34
35
import java .security .spec .InvalidKeySpecException ;
35
36
import java .security .spec .PKCS8EncodedKeySpec ;
36
37
import java .security .spec .RSAPrivateCrtKeySpec ;
38
+ import java .util .Collection ;
37
39
import javax .net .ssl .KeyManager ;
38
40
import javax .net .ssl .KeyManagerFactory ;
39
41
import org .apache .commons .codec .binary .Base64 ;
@@ -175,7 +177,7 @@ public static KeyStore createKeyStore(
175
177
throws IOException , CertificateException , NoSuchAlgorithmException , InvalidKeySpecException ,
176
178
KeyStoreException {
177
179
CertificateFactory certFactory = CertificateFactory .getInstance ("X509" );
178
- X509Certificate cert = ( X509Certificate ) certFactory .generateCertificate (certInputStream );
180
+ Collection <? extends Certificate > certs = certFactory .generateCertificates (certInputStream );
179
181
180
182
PrivateKey privateKey = loadKey (keyInputStream , clientKeyAlgo );
181
183
@@ -195,8 +197,10 @@ public static KeyStore createKeyStore(
195
197
loadDefaultKeyStoreFile (keyStore , keyStorePassphrase );
196
198
}
197
199
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 ()]));
200
204
201
205
return keyStore ;
202
206
}
0 commit comments