在开发Java web服务客户端期间,我遇到了一个问题。web服务的身份验证使用客户端证书、用户名和密码。我从webservice背后的公司收到的客户端证书是.cer
格式的。当我使用文本编辑器检查文件时,它有以下内容:
-----BEGIN CERTIFICATE-----
[Some base64 encoded data]
-----END CERTIFICATE-----
我可以在Internet Explorer中导入该文件作为证书(无需输入密码!),并使用它进行webservice的身份验证。
我能够通过首先剥离第一行和最后一行,转换为unix换行符并运行base64-decode将该证书导入到keystore中。生成的文件可以导入到密钥存储库中(使用keytool
命令)。当我列出密钥存储库中的条目时,这个条目的类型是trustedCertEntry
。因为这个条目类型(?)我无法使用此证书对web服务进行身份验证。我开始认为所提供的证书是一个用于身份验证的公共证书…
我发现的一个解决办法是在IE中导入证书并将其导出为.pfx
文件。该文件可以作为密钥存储库加载,并可用于使用webservice进行身份验证。但是,我不能期望我的客户每次收到新证书时都执行这些步骤。所以我想把.cer
文件直接加载到Java中。任何想法吗?
附加信息:webservice背后的公司告诉我,应该请求证书(使用IE &网站)和稍后将导入证书的PC和用户。