ValorVl
@ValorVl
DevOps

Java -> Nats Tls connection Extended key usage does not permit use for TLS server authentication от чего так?

Всем привет.

В общем есть у меня сервер Nats и мне нужно к нему прицепится, nats использует шифрование канала без авторизации клиентов по ключу.
Есть соответственно серверный ключ rootCA и приватный ключ, в лучших традициях java делаю keystore.jks и truststore.jks, в первый сую приватный и серверный сертификаты в последний RootCA
Ниже кусок кода для примера..

public void testReadKeystore(){

        final File keyStore = new File("/path/nats/keystore.jks");
        final File trustStore = new File("/path/nats/truststore.jks");

        KeyManagerFactory   kmf = null;
        TrustManagerFactory tmf = null;

        try {
            kmf = KeyManagerFactory.getInstance("SunX509", "SunJSSE");

            final char[] keyPassPhrase = "b596d6ecb46769bc52acdf0a38d5ee26168e44a0".toCharArray();
            final KeyStore ks = KeyStore.getInstance("JKS");
            ks.load(new FileInputStream(keyStore), keyPassPhrase);

            kmf.init(ks, keyPassPhrase);
        } catch (NoSuchAlgorithmException | CertificateException | KeyStoreException | UnrecoverableKeyException |
                NoSuchProviderException| IOException e){
            log.error("Error in opening keystore => " + e.getMessage());
        }

        //setup and load trust store

        try{
            final char[] trustPassPhrase = "b596d6ecb46769bc52acdf0a38d5ee26168e44a0".toCharArray();
            final KeyStore tks = KeyStore.getInstance("JKS");
            tks.load(new FileInputStream(trustStore), trustPassPhrase);
            tmf = TrustManagerFactory.getInstance("SunX509", "SunJSSE");
            tmf.init(tks);
        }catch (NoSuchAlgorithmException | CertificateException | KeyStoreException | NoSuchProviderException |
                IOException e){
            log.error("Error in opening truststore => " + e.getMessage());

        }

        // create context

        try {
            if (kmf != null && tmf != null){

                SSLContext sslContext = SSLContext.getInstance("TLS");
                sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), new SecureRandom());

                ConnectionFactory connectionFactory = new ConnectionFactory();
                //connectionFactory.setConnectionName(appName);
                //connectionFactory.setPingInterval(2000);
                connectionFactory.setSecure(true);
                connectionFactory.setTlsDebug(true);
                connectionFactory.setSSLContext(sslContext);
                //connectionFactory.setConnectionTimeout(2000);
                connectionFactory.setVerbose(true);
                connectionFactory.setServers("nats://key@host.com:4222");
                //connectionFactory.setReconnectBufSize(60000);
                //connectionFactory.setReconnectAllowed(true);
                connectionFactory.createConnection();
            } else {
                log.error("Keystore and trust store not initialized...");
            }

        } catch (NoSuchAlgorithmException | IOException | TimeoutException | KeyManagementException e) {
            log.error(e.getMessage());
        }

    }


В итоге получаем


11:06:50.330 [main] DEBUG io.nats.client.ConnectionImpl - Connecting to nats://key@host:4222
11:06:50.550 [main] DEBUG io.nats.client.ConnectionImpl - Connected to nats://key@host:4222
11:06:51.117 [main] ERROR SslTlsComplexTest - sun.security.validator.ValidatorException: Extended key usage does not permit use for TLS server authentication


Собственно вопрос. Extended key usage does not permit use for TLS server authentication <- как с этим бороться.

PS. Из того, что я понял есть трабла если TLS сертификат wildcard.

Я не силен в криптографии и разобрать абстрактные повествования о причине данной ошибки у меня не выходит. Может есть сведущий?
  • Вопрос задан
  • 428 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
04 мая 2024, в 22:32
2000 руб./за проект
04 мая 2024, в 22:10
2001 руб./за проект
04 мая 2024, в 21:12
10000 руб./за проект