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