2
2
3
3
import java .io .IOException ;
4
4
import java .io .InputStream ;
5
+ import java .nio .charset .StandardCharsets ;
5
6
import java .security .KeyStore ;
6
7
import java .security .KeyStoreException ;
7
8
import java .security .NoSuchAlgorithmException ;
16
17
import javax .net .ssl .TrustManagerFactory ;
17
18
import javax .net .ssl .X509TrustManager ;
18
19
20
+ import com .google .common .io .ByteStreams ;
21
+ import org .slf4j .Logger ;
22
+ import org .slf4j .LoggerFactory ;
23
+
19
24
final 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" ;
22
29
23
30
private final TrustManager [] trustManagers ;
24
31
@@ -41,6 +48,7 @@ private YandexTrustManagersProvider() {
41
48
trustManagers = allTrustManagers .toArray (new TrustManager [0 ]);
42
49
} catch (NoSuchAlgorithmException | KeyStoreException | CertificateException | IOException e ) {
43
50
String msg = "Can't init yandex root CA setting" ;
51
+ logger .debug (msg , e );
44
52
throw new RuntimeException (msg , e );
45
53
}
46
54
}
@@ -49,11 +57,14 @@ private List<TrustManager> getDefaultTrustManagers() throws NoSuchAlgorithmExcep
49
57
return getTrustManagersFromKeyStore (null );
50
58
}
51
59
52
- private List <TrustManager > getCustomTrustManagers ()
53
- throws KeyStoreException , IOException , NoSuchAlgorithmException , CertificateException {
60
+ private List <TrustManager > getCustomTrustManagers () throws KeyStoreException , IOException , NoSuchAlgorithmException ,
61
+ CertificateException {
54
62
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
+ }
57
68
}
58
69
return getTrustManagersFromKeyStore (keyStore );
59
70
}
0 commit comments