代码之家  ›  专栏  ›  技术社区  ›  Chris Cameron-Mills

将HttpClient与SSL和证书一起使用

  •  1
  • Chris Cameron-Mills  · 技术社区  · 14 年前

    虽然我已经熟悉了HTTPS和SSL的概念,但最近我开始了一些开发,发现自己有点困惑。

    我的要求是编写一个小型Java应用程序,在连接到扫描仪的机器上运行。当一个文件被扫描,这是拿起和文件(通常是PDF)发送到我们的应用服务器,然后将处理它通过互联网。我使用apachecommons库和HTTPClient编写了这个应用程序。

    构造函数可以获取密钥库、密钥库密码、信任库和信任库密码。作为初始测试,我们的DBA在我们的一个开发web服务器上启用了SSL,并为我提供了一个.p12文件,当我导入IE时,该文件允许我成功连接。

    我对keystores和truststores以及使用keytool需要采取的步骤有点困惑。我尝试将p12导入密钥库文件,但出现错误:

    keytool error: java.lang.Exception: Input not an X.509 certificate
    

    我遵循一个建议,将p12导入internetexplorer并导出为.cer,然后我可以成功地将其导入密钥库。当我把它作为AuthSSLProtocolSocketFactory的keystore参数提供时,我得到了一个毫无意义的错误,但是如果我把它作为一个信任库来尝试,它看起来读起来很好,但是最终我得到了一个错误

    Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: bad_certificate
    

    有没有人能给我提供一些建议或资源来帮助我解决这个问题?

    2 回复  |  直到 12 年前
        1
  •  3
  •   bignum    14 年前

    密钥库保存您的私钥和相关证书。信任库保存您信任的证书,因此可以用于证书路径构建和验证。

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

    java.lang.Exception: Input not an X.509 certificate

    Import private key and certificate into Java Key Store

    Configuring Keystores and Truststores

        2
  •  1
  •   rahul    12 年前

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

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