我正在使用 SSL 和客户端身份验证。我需要在发送客户端证书时发送一些额外的数据?我可以在证书中发送它吗?我可以为此使用证书中的扩展字段吗?要发送的数据量非常小。通常是一个 id 和一些权限。这是我最初应该发送的东西。还有其他更好的方法吗?
在 X.509 证书中添加自定义数据
信息安全
tls
证书
x.509
2021-09-09 12:03:10
3个回答
虽然您可以在证书的临时扩展中填充您可以想象的所有内容,但这并不是一个好主意。特别是因为证书是由颁发它的证书颁发机构签署的,所以你在证书中输入的任何内容都必须首先通过 CA。
证书是关于身份验证的,这与授权不符。证书是长期存在的实体,不能随意更改;“修改”证书的唯一方法是撤销证书并颁发新证书;这不仅必须由 CA 完成,而且它本质上是一个异步过程:至少需要几个小时,更常见的是几天,才能以任何可靠性传播吊销信息(有些客户端根本不验证吊销。 ..)。对于与权限相关的任何事情,您都需要一个反应迅速的系统,因为当您想删除访问授权时,您希望现在就删除它,而不是下周。
如果在您的协议中,服务器对客户端有话要说,那么在握手之后,作为内部协议的一部分在 SSL 隧道中发送数据似乎更合适(就像 HTTPS 是 HTTP中的一样SSL 隧道)。
在某些情况下,需要离线支持,因此您不能依赖服务器-客户端通信进行授权。这意味着您必须使用证书作为您的授权机制,这不一定是坏事,只要您不关心传播所需的时间。此外,有时传播速度并不重要,因此这种方法将是完美的。只要确保客户端验证证书的签名者,你就可以开始了。我不会为属性证书而烦恼,因为在许多情况下,公钥也是必需的。
其它你可能感兴趣的问题