1
15
16 package software.amazon.awssdk.http;
17
18 import static software.amazon.awssdk.utils.JavaSystemSetting.SSL_KEY_STORE;
19 import static software.amazon.awssdk.utils.JavaSystemSetting.SSL_KEY_STORE_PASSWORD;
20 import static software.amazon.awssdk.utils.JavaSystemSetting.SSL_KEY_STORE_TYPE;
21
22 import java.nio.file.Path;
23 import java.nio.file.Paths;
24 import java.security.KeyStore;
25 import java.util.Optional;
26 import javax.net.ssl.KeyManager;
27 import software.amazon.awssdk.annotations.SdkPublicApi;
28 import software.amazon.awssdk.internal.http.AbstractFileStoreTlsKeyManagersProvider;
29 import software.amazon.awssdk.utils.Logger;
30 import software.amazon.awssdk.utils.internal.SystemSettingUtils;
31
32
41 @SdkPublicApi
42 public final class SystemPropertyTlsKeyManagersProvider extends AbstractFileStoreTlsKeyManagersProvider {
43 private static final Logger log = Logger.loggerFor(SystemPropertyTlsKeyManagersProvider.class);
44
45 private SystemPropertyTlsKeyManagersProvider() {
46 }
47
48 @Override
49 public KeyManager[] keyManagers() {
50 return getKeyStore().map(p -> {
51 Path path = Paths.get(p);
52 String type = getKeyStoreType();
53 char[] password = getKeyStorePassword().map(String::toCharArray).orElse(null);
54 try {
55 return createKeyManagers(path, type, password);
56 } catch (Exception e) {
57 log.warn(() -> String.format("Unable to create KeyManagers from %s property value '%s'",
58 SSL_KEY_STORE.property(), p), e);
59 return null;
60 }
61 }).orElse(null);
62 }
63
64 public static SystemPropertyTlsKeyManagersProvider create() {
65 return new SystemPropertyTlsKeyManagersProvider();
66 }
67
68 private static Optional<String> getKeyStore() {
69 return SystemSettingUtils.resolveSetting(SSL_KEY_STORE);
70 }
71
72 private static String getKeyStoreType() {
73 return SystemSettingUtils.resolveSetting(SSL_KEY_STORE_TYPE)
74 .orElse(KeyStore.getDefaultType());
75 }
76
77 private static Optional<String> getKeyStorePassword() {
78 return SystemSettingUtils.resolveSetting(SSL_KEY_STORE_PASSWORD);
79 }
80 }
81