2

使用 http 请求连接到 Solr 服务器非常简单。但是当我尝试使用 https 请求进行连接时,我遇到了错误。

Solr服务器:https://localhost:8443/solr/#/

我尝试在 java 中使用 solr api 通过以下代码连接到服务器:

SolrServer server = new HttpSolrServer("https://localhost:8443/solr/#/");

但我得到了以下例外:

Exception in thread "main" org.apache.solr.client.solrj.SolrServerException: IOException occured when talking to server at: https://localhost:8443/solr/#
at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:413)
at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:181)
at org.apache.solr.client.solrj.request.QueryRequest.process(QueryRequest.java:90)
at org.apache.solr.client.solrj.SolrServer.query(SolrServer.java:301)
at app.SolrQuerying.main(SolrQuerying.java:45)
Caused by: javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
at com.sun.net.ssl.internal.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:352)
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128)
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:397)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:148)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:150)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:121)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:575)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:425)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:732)
at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:352)
... 4 more

如果有人对此有任何解决方案,请分享。

4

1 回答 1

1

您的错误显示在此处的日志中:

引起:javax.net.ssl.SSLPeerUnverifiedException

这就是说您的 SSL 证书未由证书颁发机构验证,我猜您创建了一个自签名证书?默认情况下,Java 将检查由证书颁发机构验证的证书,如果没有则出错。这样做的原因是安全性。

了解如何通过 Java 连接使用自签名证书。

于 2013-01-29T03:29:19.923 回答