22
33import java .io .IOException ;
44import java .io .InputStream ;
5+ import java .nio .charset .StandardCharsets ;
56import java .security .KeyStore ;
67import java .security .KeyStoreException ;
78import java .security .NoSuchAlgorithmException ;
1617import javax .net .ssl .TrustManagerFactory ;
1718import javax .net .ssl .X509TrustManager ;
1819
20+ import com .google .common .io .ByteStreams ;
21+ import org .slf4j .Logger ;
22+ import org .slf4j .LoggerFactory ;
23+
1924final class YandexTrustManagersProvider {
20- private static final String YANDEX_CA_STORE = "certificates/YandexAllCAs.pkcs" ;
21- private static final String STORE_PASSWORD = "yandex" ;
25+ private static final Logger logger = LoggerFactory .getLogger (YandexTrustManagerFactory .class );
26+
27+ private static final String CA_STORE = "certificates/YandexAllCAs.pkcs" ;
28+ private static final String CA_KEYPHRASE = "certificates/YandexAllCAs.password" ;
2229
2330 private final TrustManager [] trustManagers ;
2431
@@ -41,6 +48,7 @@ private YandexTrustManagersProvider() {
4148 trustManagers = allTrustManagers .toArray (new TrustManager [0 ]);
4249 } catch (NoSuchAlgorithmException | KeyStoreException | CertificateException | IOException e ) {
4350 String msg = "Can't init yandex root CA setting" ;
51+ logger .debug (msg , e );
4452 throw new RuntimeException (msg , e );
4553 }
4654 }
@@ -49,11 +57,14 @@ private List<TrustManager> getDefaultTrustManagers() throws NoSuchAlgorithmExcep
4957 return getTrustManagersFromKeyStore (null );
5058 }
5159
52- private List <TrustManager > getCustomTrustManagers ()
53- throws KeyStoreException , IOException , NoSuchAlgorithmException , CertificateException {
60+ private List <TrustManager > getCustomTrustManagers () throws KeyStoreException , IOException , NoSuchAlgorithmException ,
61+ CertificateException {
5462 KeyStore keyStore = KeyStore .getInstance ("PKCS12" );
55- try (InputStream is = YandexTrustManagersProvider .class .getClassLoader ().getResourceAsStream (YANDEX_CA_STORE )) {
56- keyStore .load (is , STORE_PASSWORD .toCharArray ());
63+ try (InputStream pis = YandexTrustManagersProvider .class .getClassLoader ().getResourceAsStream (CA_KEYPHRASE )) {
64+ String passPhrase = new String (ByteStreams .toByteArray (pis ), StandardCharsets .UTF_8 );
65+ try (InputStream is = YandexTrustManagersProvider .class .getClassLoader ().getResourceAsStream (CA_STORE )) {
66+ keyStore .load (is , passPhrase .toCharArray ());
67+ }
5768 }
5869 return getTrustManagersFromKeyStore (keyStore );
5970 }
0 commit comments