我正在尝试设置一个Web服务,该服务使用TLS握手期间发送的x509客户端证书进行身份验证,并检查用户是否有权限访问请求的资源。
这个想法是给每个用户一个访问级别,并且某些资源仅对更高级别可用。然后,该证书用于将用户匹配到其级别。
我可以毫无疑问地配置Apache以根据根CA验证证书并将证书转发到后端应用程序(基于python的XML-RPC服务器)。
但是,我一直在努力选择应该用于将用户映射到其级别的证书的哪些属性:
我目前倾向于使用公钥,但这是这种情况下的最佳选择吗?还是有更好的选择?
感谢
答案 0 :(得分:0)
通常,通过具有一些颁发客户端证书的专用CA来完成客户端证书的身份验证,并且仅在验证客户端证书时信任该CA。在这种情况下,受信任的CA以及只有此CA才能完全控制证书的主题,这意味着将CN映射到用户是完美的并且也是常用的。
如果您出于某种原因而不想允许任意CA颁发的证书,那么您将无法实现这种简单的映射。在这种情况下,可以在证书公钥或证书指纹之间进行映射,这当然要求预先知道特定用户期望使用哪个确切证书。而且,每当客户端证书由于过期而需要更改时,都需要以某种方式更新此映射。