繁体   English   中英

Java密钥库证书

[英]Certificate to java keystore

我已经获得了证书,并被要求使用它通过我的应用程序进行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的原因。需要在哪里提供该密码?

谢谢

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

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

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

我只能通过打开SSL握手日志来发现这一点。

证书文件不受密码保护。 重点商店。 因此,他们发送给您的内容可能不是证书,而是完整的密钥库。 这样的密钥存储可能旨在支持TLS客户端身份验证(使用密钥对进行身份验证)而不是密码。

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

Java keytool允许您生成密钥对以及该密钥的CSR,然后,您可以导入完全签名的证书。 您是否执行了以下任何步骤? 有人也可以为您执行此过程,并发送完整的密钥存储,但随后他们也知道“您的”私钥。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM