等一下,哪个证书过期了?如果是他们的,那就不需要向你发送一个新文件(毕竟,当stackoverflow.com的SSL证书过期并且他们安装了一个新的文件时,你不必更新浏览器)。如果您正在进行相互身份验证(客户端证书身份验证),则会涉及四个证书:您的证书,其证书,签名证书的授权机构证书以及签署证书的授权机构证书。他们向您发送他们的证书,并检查它是否由您信任的证书颁发机构正确签名(这是信任仓库的用途 - 它是您信任从其一侧签署证书的证书颁发机构的列表)。随后,您发送您的证书,并检查它是否由他们信任的证书颁发机构正确签署。 (当然,所有这些都是在SSL握手过程中在JSSE的幕后自动完成的)
请记住,证书是一个(签名)断言,某个特定公众键。因此,如果他们的证书过期了,他们会生成一个新的证书,并由您已经信任的CA签名,并用此证书替换旧证书。当您的软件(自动作为幕后SSL握手的一部分)获得新握手时,它将检查签名者(“签发者”)是谁,以及它是否在您的受信任机构列表中(并且已正确签名)。如果检查出来,你会自动接受它。除非他们正在更换证书颁发机构,并且您还不相信新证书颁发机构,否则他们不需要向您发送任何带外信息以实现此目的。如果是这样,你可以使用
keytool -import -keystore <truststore> -file <certificate file> -alias <someca>
如果,另一方面,你的证书是过期的人,那么他们不应该送你什么未经请求。
keytool -genkey -alias <myalias> -keystore <keystore>.p12 -storetype pkcs12
keytool -certreq -alias <myalias> -file request.csr -keystore <keystore>.p12 -storetype pkcs12
这将更新与新的私钥的密钥库,创建一个名为“request.csr”的文件,你应该然后发送到他们(或到:相反,你应该通过以下方式生成CSR在他们的信任仓库中的CA)签名。他们将与签名证书回应,你会再使用导入回您的密钥库:
keytool -import -alias <myalias> -file <signed certificate>.cer
如果我猜,它看起来像他们尝试执行这三个步骤为你,并试图向您发送证书和相应的私钥,这是无效的 - Java会(尽力!)尽力阻止你导入,因为私钥本身在通过不受信任的通道(电子邮件,我假设?)发送时本身被污染了。这打破了PKI的目的 - 除了你以外,任何人都不应该访问你的私钥。
你有钥匙和证书.der文件的权利? – Phani 2012-04-12 08:35:37
他们为我提供了3个不同的.der文件。所以我假设我有他们。 – 2012-04-12 09:46:39