Рекомендуемый способ использования тестовых сертификатов, если имя хоста не совпадает, - это вызвать 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();