虽然我熟悉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和相互认证,或者这在服务器端是错误的配置。

谁能提供建议或将我指向可能有助于我解决这个问题的资源?

有帮助吗?

解决方案

密钥库持有您的私钥和关联的证书。 TrustStore持有您信任的证书,因此可以用于证书路径构建和验证。

以下是一些可能有用的链接:

java.lang.exception:输入不是X.509证书

将私钥和证书导入到Java密钥商店

配置密钥店和信托店

其他提示

确保您的证书文件在这些文件之前和之后没有任何内容。

-----开始证书--------------

-----结束证书---------------

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top