我已经构建了一个Java应用程序,它将Web服务公开给外部授权客户端。 Web服务使用WS-security和证书身份验证。基本上我们充当自定义证书颁发机构 - 我们在服务器上维护一个java信任库,并为其签名并添加客户端证书。目前,我们有手动注册流程,要求WS客户端上传其证书签名请求。我们签署CSR,使用命令行中的keytool将证书添加到我们的java信任库,并将签名证书和我们的CA证书一起返回给客户端。反过来,客户端使用其私钥来签署其soap消息有效负载并在消息中嵌入已签名的证书。服务器端对数字签名进行解密,并在满足客户端请求之前验证嵌入式证书是否已签名,并且一个证书与我们的信任库匹配。
虽然很少痛苦(因为手工劳动),但这种设置工作正常。现在我意识到我们的根CA证书即将到期,因此我正在寻求设置维护策略。我该如何更新自签名的根CA证书?看起来我将不得不创建新的和替换原始。这将影响所有必须接收新证书并导入新CA证书的客户。这是正确的理解还是有更好的方法来处理这种情况?
如果重要,我使用openssl生成原始密钥对。
openssl req -x509 -newkey rsa:1024 -keyout cakey.pem -out cacert.pem -config openssl.cnf