尝试在我的客户端和服务器之间创建连接(ASP.Net Core 2.2 - SignalR)。服务器有一个自签名证书,但客户端拒绝:
主机名 XXX 未验证:
证书:XXX
DN:XXX,O=XXX,L=XXX,ST=XXX,C=XXX
主题替代名称:[] 在 io.reactivex.internal.util.ExceptionHelper.wrapOrThrow(ExceptionHelper.java:46) 在 io.reactivex.internal.observers.BlockingMultiObserver.blockingGet(BlockingMultiObserver.java:93) 在 io.reactivex.Completable.blockingAwait(Completable.java:1227)
有没有办法将我的无效证书添加为例外?显然它没有在 jre/lib/security 中使用我的 cacerts,因为在我的服务器上执行一个简单的 get 请求可以正常工作,没有任何问题。
我的 SignalR 客户端是如何构建的:
public Messenger(String address) {
h = HubConnectionBuilder.create(address+"/ChatHub").build();
h.on("Send", (message) -> {
System.out.println("New message: " + message);
}
}, String.class);
h.onClosed( (error) -> {
JOptionPane.showMessageDialog(null, "Connection to the server lost.", "Error", JOptionPane.ERROR_MESSAGE);
boolean connection = false;
while(!connection) {
//System.out.println("Trying to reconnect..");
h.start();
if( h.getConnectionState() == HubConnectionState.CONNECTED) {
connection = true;
JOptionPane.showMessageDialog(null, "Reconnected to the server.", "Success", JOptionPane.ERROR_MESSAGE);
}
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
h.start().blockingAwait();
}
对我有用的是使用
setHttpClientBuilderCallback
设置 OkHttpClient.Builder
接受任何具有特定证书指纹的“自签名证书”。
仅供参考,我正在使用 Signalr Java 客户端 8.0.1。