16.8.OpenSSL
OpenSSL 是一款加密工具包,实现在网络协议中使用的安全套接字层(SSL)和传输层安全性(TLS)协议,并提供许多加密功能。
openssl 程序是一款命令行工具,能通过 shell 使用 OpenSSL 加密库的各种加密功能。它可以用于:
创建和管理私钥、公钥和参数
公钥加密操作
创建 X.509 证书、证书签名请求(CSR)和证书撤销列表(CRL)
计算消息摘要
使用密码进行加密和解密
SSL/TLS 客户端和服务器测试
处理 S/MIME 签名或加密邮件
时间戳请求、生成和验证
基准测试加密例程
有关 OpenSSL 的更多信息,请阅读免费的 OpenSSL Cookbook。
16.8.1. 生成证书
OpenSSL 支持生成证书,无论是通过 CA 验证的证书,还是供自用的证书。
运行命令 openssl(1) 来生成一个有效的证书,向 CA 请求证书。此命令将在当前目录创建两个文件。证书请求文件 req.pem 可以发送给一个 CA,该 CA 会验证输入的凭据,签名请求并返回签名后的证书。第二个文件 cert.key 是证书的私钥,应存放在安全的地方。如果此文件被他人获取,它可以用于冒充用户或服务器。
执行以下命令来生成证书:
输出类似如下:
或者,如果不需要 CA 签名,则可以创建一个自签名证书。这样会在当前目录创建两个新文件:一个是私钥文件 cert.key,另一个是证书文件 cert.crt。这些文件应放置在一个目录中,最好是在 /etc/ssl/ 下,该目录仅对 root 用户可读。将文件的权限设置为 0700,可以使用 chmod 设置。
执行以下命令来生成证书:
输出类似如下:
16.8.2. 配置 FIPS 提供程序
在 FreeBSD 14 及更高版本中,OpenSSL 3 被引入到基本系统,并且引入了提供程序模块的概念。除了库中内置的默认提供程序模块外,legacy 模块实现了现已过时的、可选的加密算法,而 fips 模块则将 OpenSSL 的实现限制为符合 FIPS 标准集的加密算法。OpenSSL 中这一部分得到了 特别关注,包括 相关安全问题的列表,并且定期接受 FIPS 140 验证过程。也可以查阅 FIPS 验证版本的列表,以确保用户在使用 OpenSSL 时符合 FIPS 标准。
重要的是, fips_module(7) 受到额外的安全措施保护,禁止在未通过完整性检查的情况下使用该模块。此检查可以由本地系统管理员进行设置,允许每个 OpenSSL 3 的用户加载该模块。如果配置不正确,FIPS 模块将按以下方式失败:
输出应类似如下:
可以通过在 /etc/ssl/fipsmodule.cnf 中创建文件来配置检查,然后在 OpenSSL 的主配置文件 /etc/ssl/openssl.cnf 中引用该文件。OpenSSL 提供了 openssl-fipsinstall(1) 工具来帮助完成此过程,可以按如下方式使用:
输出应类似如下:
然后应该修改 /etc/ssl/openssl.cnf 文件,以便:
包含上述生成的 /etc/ssl/fipsmodule.cnf 文件,
暴露 FIPS 模块以供可能使用,
并显式激活默认模块。
完成此操作后,应该可以确认 FIPS 模块有效并且可以正常工作:
输出应类似如下:
每当修改 FIPS 模块时,例如在进行系统更新或应用 OpenSSL 相关的安全修复后,都必须重复此过程。
最后更新于