对于必须随处可用的内部使用的基于网络的软件,我创建了安装在授权消费者浏览器中的客户端证书。
现在,随着 2012 年的结束,所有这些都已过期并需要更新。我已经颁发了 PKCS #12 证书 (.p12)
这是我的问题
- 是否可以延长客户端证书的生命周期?
我必须在所有客户端上重新安装证书还是有其他方法(例如,从服务器集中安装,可能是某种更新机制)?
如何在 Linux 上使用 openssl 更新/重新生成客户端证书?
因为这可能很有趣,下面是我创建浏览器证书的方式
# client private key
openssl genrsa -des3 -out client.key 1024
# generate certificate signing request
openssl req -new -key client.key -out client.csr
# create certificate, sign with server key
openssl x509 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt
# export into pkcs12
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
不,这是不可能的。
客户端证书有一定的有效期,不能更改。唯一的可能性是创建一个具有新有效期的新证书。
您无权从服务器访问客户端浏览器中的证书。您可以做的是开发一个网页(使用客户端证书进行身份验证),允许用户创建一个新证书并将其导入到他们的浏览器中。
在此网页的服务器端,您可以使用去年使用的相同证书请求(安全性稍差)创建新证书,或者使用您在数据库中拥有的有关用户的信息创建新证书请求。您可以按照您在帖子中描述的方式使用 openssl 执行此操作。
正如我在上一个问题中所写,您需要创建一个新证书。您可以使用去年使用的证书请求来执行此操作,也可以创建一个新的(更安全但也更复杂)。然后您需要使用服务器密钥签署该请求并将其导出到 pkcs12。
我会坚持您当前的有效期(1 年),即使更新证书有些麻烦。因为证书有效期越长,变化越大,一些授权用户变得未经授权但仍然拥有有效证书。