Hyperledger Fabric-sdk-java не может подключиться к заказчику (не найдено альтернативное DNS-имя субъекта, соответствующее локальному хосту)

Я использую образец переноса баланса для запуска сети Fabric. Образец сгенерировал криптоматериал. Я использую те же ссылки artifact folder и network-config.yaml в своей интеграции Fabric-SDK-JAVA.

Я могу регистрировать/регистрировать пользователей, запрашивать код цепочки, и даже все транзакции успешно подтверждаются всеми одноранговыми узлами канала.

Но транзакция отправляется заказчику для фиксации с ошибкой:

Caused by: java.security.cert.CertificateException: No subject alternative DNS name matching localhost found.
at sun.security.util.HostnameChecker.matchDNS(HostnameChecker.java:214) ~[na:1.8.0_181]
at sun.security.util.HostnameChecker.match(HostnameChecker.java:96) ~[na:1.8.0_181]
at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:455) ~[na:1.8.0_181]
at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:436) ~[na:1.8.0_181]
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:252) ~[na:1.8.0_181]
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:136) ~[na:1.8.0_181]
at io.netty.handler.ssl.OpenSslTlsv13X509ExtendedTrustManager.checkServerTrusted(OpenSslTlsv13X509ExtendedTrustManager.java:239) ~[netty-handler-4.1.36.Final.jar:4.1.36.Final]
at io.netty.handler.ssl.ReferenceCountedOpenSslClientContext$ExtendedTrustManagerVerifyCallback.verify(ReferenceCountedOpenSslClientContext.java:247) ~[netty-handler-4.1.36.Final.jar:4.1.36.Final]
at io.netty.handler.ssl.ReferenceCountedOpenSslContext$AbstractCertificateVerifier.verify(ReferenceCountedOpenSslContext.java:697) ~[netty-handler-4.1.36.Final.jar:4.1.36.Final]
at io.netty.internal.tcnative.SSL.readFromSSL(Native Method) ~[netty-tcnative-boringssl-static-2.0.25.Final.jar:2.0.25.Final]
at io.netty.handler.ssl.ReferenceCountedOpenSslEngine.readPlaintextData(ReferenceCountedOpenSslEngine.java:570) ~[netty-handler-4.1.36.Final.jar:4.1.36.Final]
at io.netty.handler.ssl.ReferenceCountedOpenSslEngine.unwrap(ReferenceCountedOpenSslEngine.java:1146) ~[netty-handler-4.1.36.Final.jar:4.1.36.Final]
... 25 common frames omitted

Странно то, что эта же сеть прекрасно работает с Node SDK. Я не уверен, что мне не хватает какой-то необходимой конфигурации для работы с SSL (поскольку он включен по умолчанию в примере сети с переводом баланса).

Я добавил записи хоста в свой файл хоста.


person Nitish Bhardwaj    schedule 03.06.2019    source источник
comment
Вы должны выяснить, для каких имен хостов подходит ваш сертификат, и вместо этого использовать одно из этих имен, если это «localhost».   -  person Lorinczy Zsigmond    schedule 03.06.2019
comment
@LorinczyZsigmond Спасибо за предложение. Оно работало завораживающе. Пожалуйста, добавьте это к ответу.   -  person Nitish Bhardwaj    schedule 03.06.2019


Ответы (1)


Даже если это локальный хост, вы должны использовать имя хоста, на которое распространяется сертификат (т. е. это одно из альтернативных имен субъекта). (В более сложных случаях можно использовать собственный javax.net.ssl.hostnameVerifier, но сейчас он не нужен.)

person Lorinczy Zsigmond    schedule 03.06.2019
comment
Согласовано. Спасибо за отзыв. Я не знал, что localhost не используется для создания сертификата вместе с hostName. - person Nitish Bhardwaj; 04.06.2019