gRPC SSL Отсутствуют альтернативные имена субъектов - PullRequest
0 голосов
/ 07 февраля 2019

Как отключить функцию hostnameverfifier в gRPC, чтобы избежать исключения ниже?

java.security.cert.CertificateException: No subject alternative names present

1 Ответ

0 голосов
/ 08 февраля 2019

Рекомендуемый способ использования тестовых сертификатов, если имя хоста не совпадает, - это вызвать ManagedChannelBuilder.overrideAuthority("test-hostname").Функционально это похоже на добавление имени хоста test к /etc/hosts.Это позволяет вам выбирать разные IP / имена DNS с forAddress() / forTarget() без отключения защиты.

Но все равно кажется, что ваш сертификат немного сломан.Требуется альтернативное имя субъекта;Использование предмета сертификата устарело в течение десятилетий.

Вас также может заинтересовать использование сертификатов gRPC .Мы предоставляем TlsTesting для их загрузки.

server = ServerBuilder.forPort(0)
    // Use test cert on server-side
    .useTransportSecurity(
        TlsTesting.loadCert("server1.pem"),
        TlsTesting.loadCert("server1.key"))
    // ...
    .build().start();

channel = NettyChannelBuilder
    .forAddress("localhost", server.getPort())
    // Trust test CA on client-side
    .sslContext(
        GrpcSslContexts.forClient()
            .trustManager(TlsTesting.loadCert("ca.pem"))
            .build())
    // Change hostname to match certificate
    .overrideAuthority("foo.test.google.fr")
    .build();
...