我建立了一个Java应用程序,向外部授权客户端公开Web服务。 Web服务使用带有证书身份验证的WS安全性。基本上,我们充当自定义证书颁发机构-我们在服务器上维护一个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