使用客户端证书进行客户端识别

信息安全 证书 授权
2021-08-28 07:42:18

我有以下情况:

  • 几个独立的嵌入式服务器(Linux/ARM/lighttpd)
  • 多台独立控制设备(win32/iOS/Android)
  • 每台服务器应至少有一个控制设备
  • 每个控制设备可以控制一个或多个服务器
  • 没有,但控制设备应该能够联系服务器

我知道我可以使用客户端证书来确保“设备/服务器配对”,但我不确定是否可能以及(最终)如何设置我的系统以满足以下附加要求:

  1. 无忧客户端证书安装:我的意思是我想在服务器上启动一些自动化程序(可能通过物理按钮),这将创建和部署特定的客户端证书(类似于“Wi-Fi 保护设置”)。
  2. 基于角色的证书创建:每个控制设备都应该有一个“角色”,这意味着它可以在服务器上执行一组定义的操作;基本上我只需要在创建时在证书中嵌入一些数据。
  3. 客户端证书应该过期且可撤销(我认为这是标准的,但在创建证书本身时必须允许)。

真正的问题是如何设置(1),我对此一无所知。我已经在网上搜索了,但我发现只有“正常”的方式(生成证书,自签名,手动导入到浏览器),这是方式为我的客户:(太复杂,我希望能够生成一个URL(或打印一个 Qr),在控制设备上输入,将“自动”配置其浏览器(可能只需要一些简单的“OK”确认)。这是否可能(或其他类似的东西),不知何故?

欢迎就其他问题提出建议和意见(当然!)

注意:我不需要银行证明的安全性,只是一个合理的妥协;重点是我能在“不打扰用户”的情况下实现多少(不幸的是,输入密码认为很麻烦)。

1个回答

我最近一直在研究证书领域,我知道你问已经一个月了,但我希望这对你有所帮助。

为了给您的每个客户一个证书,您基本上需要一个具有自己的自签名证书的服务器。该服务器将“给”您的客户他们的新证书。流程将是这样的:

1) [FRONTEND] 客户生成密钥对并将公钥发送到服务器,请求新证书。

2) [BACKEND] 服务器根据客户的公钥生成一个新的证书,并将其发送回给客户,并带有一个特定的标头表示它是一个证书。

3)【前端】客户“下载”证书,浏览器知道是证书,点击提示客户安装到浏览器上。

对于 (1),只需单击一下即可完成。对于大多数浏览器,您可以使用“keygen”html 标记,但遗憾的是,对于 IE,您必须使用 ActiveX。对于 (2),您将需要某种 CA 管理模块,那里有一些免费的,例如 OpenCA 或 EJBCA。

实施起来可能有点困难,但它为您的客户提供了无可置疑的身份验证,因为他们使用的是您签名的证书,而且在客户方面真的很容易,它不需要超过 2 或 3 个字段表单和两次点击。