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 相关的安全修复后,都必须重复此过程。

最后更新于