java - 如何将 .cer 证书导入 java keystore ?

标签 java certificate keystore

在开发 Java Web 服务客户端期间,我遇到了一个问题。 Web 服务的身份验证使用客户端证书、用户名和密码。我从 Web 服务背后的公司收到的客户端证书是 .cer 格式的。当我使用文本编辑器检查文件时,它具有以下内容:

-----BEGIN CERTIFICATE-----
[Some base64 encoded data]
-----END CERTIFICATE-----

我可以在 Internet Explorer 中将此文件作为证书导入(无需输入密码!)并使用它来验证网络服务。

我能够通过首先剥离第一行和最后一行、转换为 unix 换行符并运行 base64-decode 来将此证书导入 keystore 。生成的文件可以导入到 keystore 中(使用 keytool 命令)。当我列出 keystore 中的条目时,该条目的类型是 trustedCertEntry。由于此条目类型 (?),我无法使用此证书对 Web 服务进行身份验证。我开始认为提供的证书是用于身份验证的公共(public)证书...

我发现的一种解决方法是在 IE 中导入证书并将其导出为 .pfx 文件。该文件可以作为 keystore 加载,并可用于向 Web 服务进行身份验证。但是,我不能指望我的客户每次收到新证书时都执行这些步骤。所以我想将 .cer 文件直接加载到 Java 中。有什么想法吗?

附加信息:网络服务背后的公司告诉我,应该向 PC 和稍后导入证书的用户请求证书(使用 IE 和网站)。

最佳答案

  • 如果您想进行身份验证,则需要私钥 - 没有其他选择。
  • 证书是具有额外属性(如公司名称、国家/地区...)的公钥,由某些证书颁发机构签署,以保证所附属性是真实的。
  • .CER 文件是证书,没有私钥。私钥通常与 .PFX keystore 文件一起提供。 如果你真的认证是因为你已经导入了私钥。
  • 您通常可以导入 .CER 证书而没有任何问题

    keytool -importcert -file certificate.cer -keystore keystore.jks -alias "Alias" 
    

关于java - 如何将 .cer 证书导入 java keystore ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4325263/

相关文章:

java - 如何将私钥和公钥(pvk、spc)和证书(cer)导入 keystore ?

java - KeyStore.load 在空 .jks 文件上抛出 IOException

java - 存储 AES key

java - Spring RESTful 最佳实践 - 需要示例/教程

Android应用证书有效期

java - 调用 Arraylist 方法并在 if 语句条件下调用它

java - 如何在JAVA Spring中将证书发送给客户端

java - 如何让 WMQ Explorer 与 WMQ AMS 配合使用

java - 如何创建带有 'title' 的框架,而不显式创建 JFrame 类的实例?

java - Eclipse 无法识别显示对象