Такого алгоритма нет: TLS для провайдера SunPKCS11

Мне нужно использовать модуль HMS для аутентификации TLS на стороне клиента. Приложение представляет собой приложение Spring Boot, работающее как внутренний API, но в этом контексте мы являемся клиентом (наш API вызывает другой API).

Текущий код выглядит так:

String configArg = "--" +
                    "name=myprovider\n" +
                    "library=" + nativeLibraryPath + "\n" +
                    "slot = 3";
var provider = Security.getProvider("SunPKCS11").configure(configArg);
Security.addProvider(provider);

var keyStore = KeyStore.getInstance("PKCS11", provider);
keyStore.load(null, "mypassword".toCharArray());


var kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(keyStore, "mypassword".toCharArray());

var httpClient = HttpClient.create()
    .wiretap(true)
    .secure(sslContextSpec -> 
        sslContextSpec.sslContext(
            SslContextBuilder.forClient()
                .sslContextProvider(provider)
                .keyManager(kmf)
                .build(); // fails here
        )
    );

// use httpClient to do the call.

Когда запрос отправляется и вызывается SslContextBuilder.build(), я получаю исключение, в котором говорится No such algorithm: TLS for provider SunPKCS11-myprovider. Я пробовал поискать в Google, но, видимо, я единственный в Интернете, у кого возникает эта ошибка. Что я делаю неправильно?

У ребят, которые сделали HSM, есть Java SDK с классом Provider, но этот класс не поддерживает TLS, и когда мы поговорили с их службой поддержки, они сказали, что провайдер SunPKCS11 должен работать.

0 ответов

Другие вопросы по тегам