证书到java密钥库

时间:2017-12-11 08:15:39

标签: java ssl

我获得了证书并被要求使用它通过我的应用程序进行http调用(我使用的是基于Java的Mule)。

我获得的证书是.cer文件。它是我公司特有的证书,我认为这意味着它具有该服务器的公钥。

给我CER文件的公司给了我一个密码。例如ABC1234

要使用它,我首先运行命令,如下所示......

keytool -importcert -file myCert.cer -keystore keystore.ks -alias 1

然后我将它插入我的代码中,如下所示......

<http:request-config name="HTTP_Request_Configuration" protocol="HTTPS" host="hostname.com" port="443" doc:name="HTTP Request Configuration">
    <tls:context>          
        <tls:key-store type="jks" path="keystore.ks" alias="1" keyPassword="changeit" password="changeit"/>
    </tls:context>
</http:request-config>

当我在我的应用程序中调用该端点时,我得到'错误403:缺少身份验证'。

我从来没有在这个过程中的任何地方输入密码'abc1234',我想这就是为什么我得到了403.需要提供密码的地方在哪里?

感谢

3 个答案:

答案 0 :(得分:1)

感谢大家的反馈。这里的所有答案和评论肯定对我有帮助。

最后我发现证书没有密码(如评论中所述),并且列出的密码不相关。

我最终发现403是由SSL握手错误引起的,并且没有找到CA证书。

我只能通过打开SSL握手日志找到它。

答案 1 :(得分:-1)

证书文件没有密码保护。重点商店是。因此,他们发送给您的信息可能不是证书,而是完整的密钥库。这样的密钥存储可能是为了支持使用密钥对而不是密码进行TLS客户端身份验证身份验证。

证书带有一半密钥对。要将其用于身份验证,还需要私钥。通常,要获取自己的证书,您需要自己生成密钥对,并将公钥发送给某人,并将您的身份绑定在一起作为证书。发送公钥的标准格式称为CSR或证书签名请求。

Java keytool允许您生成密钥对和该密钥的CSR,然后,您可以导入完全签名的证书。你做过这些步骤了吗?有人也可以为你做这个过程,并发送一个完整的密钥库,但他们也知道“你的”私钥。

或者,您收到的证书可能是您的客户端可以对服务器进行身份验证,密码是您在连接后用于验证客户端的密码,并且根本不保护文件。但是,如果证书确实具有您的身份,正如您所说,这没有任何意义。

答案 2 :(得分:-1)

您应该将它添加到您的信任库,而不是您的密钥库。它是值得信任的证书,不能用作您自己的证书。这不是你自己的证书。