使用SSL和证书的httpclient
-
03-10-2019 - |
题
虽然我熟悉HTTPS和SSL的概念,但我最近开始了一些发展,发现自己有些困惑。
要求是我编写了一个小型Java应用程序,该应用程序在连接到扫描仪的机器上运行。扫描文档时,将拾取此文件,并通过Internet发送到我们的应用程序服务器,然后将文件(通常是PDF)发送到我们的应用程序服务器。我已经使用Apache Commons库和HTTPCLIENT编写了该应用程序。
第二个要求是通过SSL连接,需要证书。遵循HTTPCLIENT页面的指南,我正在使用贡献页面中使用authsslprotocolsocketfactory。
构造函数可以使用密钥库,密钥库密码,TrustStore和TrustStore密码。作为初始测试,我们的DBA启用了我们的一个开发网络服务器的SSL,并为我提供了一个.p12文件,当我导入到IE中时,该文件允许我成功连接。
我在密钥库和信托店之间有些困惑,以及使用键盘需要采取哪些步骤。我尝试将p12导入到密钥库文件中,但获取错误:
keytool error: java.lang.Exception: Input not an X.509 certificate
我遵循了将P12导入Internet Explorer的建议,并将其作为.cer导出,然后可以成功将其导入到密钥库中。当我将其作为authsslprotococolsocketfactory的密钥库参数时,我会得到一个毫无意义的错误,但是如果我将其作为信托店尝试,似乎它看起来很好,但最终我得到了
Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: bad_certificate
我不确定我是否错过了一些步骤,我会完全误解SSL和相互认证,或者这在服务器端是错误的配置。
谁能提供建议或将我指向可能有助于我解决这个问题的资源?
解决方案
其他提示
确保您的证书文件在这些文件之前和之后没有任何内容。
-----开始证书--------------
-----结束证书---------------
不隶属于 StackOverflow