双因素认证介绍
双因素认证(Two-Factor Authentication,简称 2FA)是一种安全验证过程,使用客户端证书密码以及证书来进行认证,登录时需要同时拥有客户端证书及证书密码才能认证通过,解决了传统的帐号口令认证中口令泄露导致的入侵问题。
证书制作
以下使用XCA工具应用相应的模板创建和导出根证书、客户端证书和导出证书私钥作为示例。证书之间的关系图如下:
创建CA根证书
打开
证书页签,点击创建证书, 在来源页面选择参数如下,再点击应用模板所有信息。- 签名请求: 从签名请求复制扩展信息
- 签名: 创建自签名证书
- 签名算法:[default] CA
切换到
主体页签,填写内部名称(如:2FA_CA)和Distinguished Name信息; 点击生成新密钥,密钥长度选择4096及以上,并创建。切换到
扩展页签,检查类型是否为CA,和并根据需要调整有效期时间。切换到
密钥用法页签,证书用途(Key Usage)和证书扩展用途(Extended Key Usage)选择如下图所示:点击右小角OK,创建CA根证书成功。
创建客户端证书
打开
证书页签,点击创建证书, 在来源页面选择参数如下,再点击应用模板所有信息。- 签名请求: 从签名请求复制扩展信息
- 签名: 使用此CA证书进行签名 (选择之前创建的
2FA_CA) - 签名算法:[default] TLS_client
切换到
主体页签,填写内部名称(如:2FA_Client_Cert)和Distinguished Name信息(其中,commonName不能和CA根证书一样); 点击生成新密钥,密钥长度选择4096及以上,并创建。切换到
扩展页签,检查类型是否为最终实体,和并根据需要调整有效期时间。切换到
密钥用法页签,证书用途(Key Usage)和证书扩展用途(Extended Key Usage)选择如下图所示:点击右小角OK,创建客户端证书成功。
导出证书
- 打开
证书页签,选择CA根证书,右键点击,选择导出->文件,导出格式选择PEM(*.cert),完成根证书导出。 - 选择客户端证书,右键点击,选择
导出->文件,导出格式选择PEM(*.cert),完成客户端证书导出。 - 选择客户端证书,右键点击,选择
导出->文件,导出格式选择PKCS #12 chain (*.pfx),并输入加密密码,导出证书链和加密私钥。
证书使用
证书导入BMC
NOTE
开启双因素认证之前需要导入根证书和客户端证书,否则无法开启双因素认证。
- 登录BMC,在
用户&安全->证书管理->CA证书管理页面上传CA根证书。 - 在
用户&安全->双因素认证页面, 选择对应的用户上传客户端证书。
证书导入浏览器
以下以Windows系统的Chrome浏览器为例:
- 打开设置, 进入 隐私设置和安全性 -> 安全 -> 管理证书。
- 在证书管理器页面,选择管理从Windows导入的证书。
- 使用Windows的证书导入向导,选择*.pfx;*.p12的证书,导入。
使用双因素认证
- 登录BMC,在
用户&安全->双因素认证页面开启双因素认证。 - 使用Chrome无痕模式打开页面,首次访问BMC会弹出选择证书,选择对应的证书。
- 至此,完成了双因素认证登录。
WARNING
开启双因素认证会关闭SSH端口,当关闭双因素认证后,需要手动在端口服务页面开启SSH端口。
常见问题定位
开启双因素认证后,浏览器访问BMC,报错
No required SSL certificate was sent。原因分析
- 浏览器未导入客户端证书
- 浏览器有缓存(清空缓存或使用无痕模式重新访问)
开启双因素认证后,浏览器访问BMC,报错
The SSL certificate error。原因分析
- 导入的证书生成的有问题
- 证书被吊销
- 证书不在有效期
开启双因素认证后,浏览器访问BMC,登录显示
双因素认证登录失败。原因分析:浏览器选择的客户端证书和BMC里导入的客户端证书不匹配
补救措施
开启双因素认证后,尝试各个方法后仍然无法登录,使用ipmi命令关闭双因素认证,命令如下:ipmitool -H <IP> -I lanplus -p 623 -U <管理员用户> -P <密码> -C 17 raw 0x30 0x92 0xdb 0x07 0x00 0x52 0x00 0x00。