public final class CertificateUtils {
private CertificateUtils() {
}
public static X509Certificate loadCertificate(String path, String password) {
try (InputStream is = Files.newInputStream(Paths.get(path))) {
KeyStore keyStore = KeyStore.getInstance("PKCS12");
keyStore.load(is, password.toCharArray());
Enumeration<String> aliases = keyStore.aliases();
while (aliases.hasMoreElements()) {
String alias = aliases.nextElement();
if (keyStore.isKeyEntry(alias)) {
Certificate cert = keyStore.getCertificate(alias);
if (cert instanceof X509Certificate x509) {
return x509;
}
}
}
throw new IllegalStateException("В PKCS12 не найден X509 сертификат");
} catch (Exception e) {
throw new RuntimeException("Не удалось прочитать сертификат", e);
}
}
}
public final class CertificateSelectorFactory {
private CertificateSelectorFactory() {
}
public static String fromP12(
String pattern,
String path,
String password) {
X509Certificate certificate =
CertificateUtils.loadCertificate(path, password);
return CertificateSelector
.certificateSelector()
.pattern(pattern)
.cert(certificate)
.build();
}
}
@Override
public List<String> autoSelectCertificates() {
return List.of(
CertificateSelectorFactory.fromP12(
"https://auth-dmz-ift.sigma.sbrf.ru",
System.getenv("KEYSTORE_FILE"),
System.getenv("KEYSTORE_STRING")
)
);
}