Загрузка данных


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")
            )
    );
}