第 6 章 使用本地证书配置智能卡验证
要使用本地证书配置智能卡验证:
- 主机没有连接到某个域。
- 您需要在这个主机上使用智能卡进行验证。
- 您需要使用智能卡验证配置 SSH 访问。
-
您需要使用
authselect
配置智能卡。
使用以下配置来实现这种情况:
为希望使用智能卡进行身份验证的用户获取用户证书。证书应该由在域中使用的可信认证认证机构生成。
如果您无法获得证书,您可以生成由本地证书颁发机构签名的用户证书用于测试。
- 在智能卡中保存证书和私钥。
- 为 SSH 访问配置智能卡验证。
如果主机可以作为域的一部分,将主机添加到域中,并使用活动目录或者身份管理认证机构生成的证书。
有关如何为智能卡创建 IdM 证书的详情,请参考为智能卡验证配置身份管理。
先决条件
已安装 authselect。
authselect
工具在 Linux 主机上配置用户身份验证,您可以使用它来配置智能卡验证参数。有关 authselect 的详情,请参考浏览 authselect。支持的智能卡或者 USB 设备。
详情请查看 RHEL 中的智能卡支持。
6.1. 创建本地证书 复制链接链接已复制到粘贴板!
按照此流程执行以下任务:
- 生成 OpenSSL 证书颁发机构
- 创建证书签名请求
以下步骤仅用于测试目的。由本地自签名证书颁发机构生成的证书不如使用 AD、IdM 或 RHCS 认证认证机构的安全。即使主机不是域的一部分,您仍应使用企业认证认证机构生成的证书。
流程
创建可生成证书的目录,例如:
mkdir /tmp/ca cd /tmp/ca
# mkdir /tmp/ca # cd /tmp/ca
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置证书(将此文本复制到
ca
目录中的命令行):Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建以下目录:
mkdir certs crl newcerts
# mkdir certs crl newcerts
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建以下文件:
touch index.txt crlnumber index.txt.attr
# touch index.txt crlnumber index.txt.attr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在串行文件中写入数字 01:
echo 01 > serial
# echo 01 > serial
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该命令在串行文件中写入数字 01。它是证书的序列号。当这个 CA 发布一个新证书时这个数字会加一。
创建一个 OpenSSL root CA 密钥:
openssl genrsa -out rootCA.key 2048
# openssl genrsa -out rootCA.key 2048
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建自签名 root 认证认证机构证书:
openssl req -batch -config ca.cnf \ -x509 -new -nodes -key rootCA.key -sha256 -days 10000 \ -set_serial 0 -extensions v3_ca -out rootCA.crt
# openssl req -batch -config ca.cnf \ -x509 -new -nodes -key rootCA.key -sha256 -days 10000 \ -set_serial 0 -extensions v3_ca -out rootCA.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为您的用户名创建密钥:
openssl genrsa -out example.user.key 2048
# openssl genrsa -out example.user.key 2048
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个密钥是在本地系统中生成的,因此当密钥保存在卡中时,从系统中删除密钥。
您还可以直接在智能卡中创建密钥。要做到这一点,请遵循智能卡生产商生成的说明。
创建证书签名请求配置文件(将这个文本复制到 ca 目录中的命令行中):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为 example.user 证书创建证书签名请求:
openssl req -new -nodes -key example.user.key \ -reqexts req_exts -config req.cnf -out example.user.csr
# openssl req -new -nodes -key example.user.key \ -reqexts req_exts -config req.cnf -out example.user.csr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置新证书。过期期限设定为 1 年:
openssl ca -config ca.cnf -batch -notext \ -keyfile rootCA.key -in example.user.csr -days 365 \ -extensions usr_cert -out example.user.crt
# openssl ca -config ca.cnf -batch -notext \ -keyfile rootCA.key -in example.user.csr -days 365 \ -extensions usr_cert -out example.user.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
此时,认证颁发机构和证书被成功生成并准备好导入到智能卡。