Litle API jar 的 SSL 问题 - 证书中的主机名不匹配:<208.70.177.61> != <prelive.litle.com>



我正在尝试与Vantiv Litle网关集成。我从他们的服务器下载了集成 jar 文件。尝试使用这些罐子会抛出以下错误:

Exception in thread "main" com.litle.sdk.LitleOnlineException: Exception connection to Litle
at com.litle.sdk.Communication.requestToServer(Communication.java:75)
at com.litle.sdk.LitleOnline.sendToLitle(LitleOnline.java:679)
at com.litle.sdk.LitleOnline.authorize(LitleOnline.java:153)
at com.litle.sdk.LitleOnline.authorize(LitleOnline.java:145)
at com.example.LitleAuthUnedited.main(LitleAuthUnedited.java:82)
Caused by: javax.net.ssl.SSLException: hostname in certificate didn't match: <208.70.177.61> != <prelive.litle.com>
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:220)
at org.apache.http.conn.ssl.BrowserCompatHostnameVerifier.verify(BrowserCompatHostnameVerifier.java:54)
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:149)
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:130)
at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:399)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:143)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:108)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:415)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554)
at com.litle.sdk.Communication.requestToServer(Communication.java:64)
... 4 more

经过一些研究,我明白这与证书问题有关。我试图将 Litle 的证书安装到 jdk 中的"jssecacerts"文件中,但这并没有解决问题。

另外,我尝试添加带有ip和dns名称映射的主机文件条目,但没有解决。

我能够通过编辑 Litle 的 jar 文件并在发布期间添加"allow_all_hostname_verifier"来使其工作。但是,我不能遵循这一点,因为我必须编辑 jar 文件,也不建议使用这种方法。

任何人都可以建议我需要如何解决这个问题吗?

谢谢哈里卡

异常中的这一行:

Caused by: javax.net.ssl.SSLException: hostname in certificate didn't match: <208.70.177.61>

似乎暗示您正在尝试使用如下所示的 URL 访问服务器:

https://208.70.177.61/

SSL 证书通常绑定到域,通常带有主机名。尝试使用真实的主机名,例如:

https://prelive.litle.com/

你的问题似乎是这样的:

hostname in certificate didn't match: <208.70.177.61> != <prelive.litle.com>

听起来证书列出了站点的实际域名(prelive.litle.com),而您却尝试直接连接到站点的IP(208.70.177.61),反之亦然。这就解释了为什么当您编辑 jar 以允许所有主机名时它会起作用。

最新更新