OpenSSL1.1.1d准备工作

本文详细指导如何从源代码编译OpenSSL 1.1.1d,配置信任存储,生成和管理密钥与证书,包括生成RSA密钥、创建证书签名请求,以及在Web服务器中的部署。特别强调了安全实践和密钥保护的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、获取OpenSSL1.1.1d:
wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz

二、开始编译工作:
./config --prefix=/opt/openssl --openssldir=/opt/openssl no-shared \

-DOPENSSL_TLS_SECURITY_LEVEL=2 \

enable-ec_nistp_64_gcc_128

*注:需要使用–prefix选项将OpenSSL安装到与系统提供的版本不冲突的私有位置;另一个重要的选项是no-shared ,它强制静态链接并制作独立的命令行工具。如果不使用此选项,则需要使用LD_LIBRARY_PATH配置才能使工具正常工作。
enable-ec_nistp_64_gcc_128参数激活某些常用椭圆曲线的优化版本。此优化取决于无法自动检测的编译器功能,这就是默认情况下禁用此功能的原因。完整的配置选项集可在OpenSSL wiki上找到。

下面构建主包:
$ make
$ make test
$ sudo make install

三、构建信任存储:
OpenSSL没有附带受信任的根证书(也称为根存储或信任存储)的集合,因此,如果您从头开始安装,则必须在其他地方找到它们。一种可能性是使用操作系统中内置的信任存储,如前所述。此选择通常很好,但内置信任存储可能并不总是最新的。此外,在混合环境中,各种系统中的默认存储之间可能存在有意义的差异。一个一致的、可能更好的选择——但涉及更多的工作——是重用Mozilla的工作。Mozilla 投入了大量精力来维护一个透明且最新的根存储,以便在 Firefox 中使用。6

因为它是开源的,所以Mozilla将信任存储保存在源代码存储库中:

https://hg.mozilla.org/releases/mozilla-beta/file/tip/security/nss/lib/ckfw/builtins↩
/certdata.txt

不幸的是,它的证书集合是专有格式,这对其他人没有多大用处。如果您不介意通过第三方获取馆藏,Curl 项目会以隐私增强邮件(PEM) 格式提供定期更新的转换,您可以直接使用:

http://curl.haxx.se/docs/caextract.html

四、密钥和证书管理:
大多数用户转向OpenSSL,因为他们希望配置和运行支持SSL的Web服务器。该过程包括三个步骤:(1) 生成私钥,(2) 创建证书签名请求(CSR) 并将其发送到 CA,以及 (3) 在 Web 服务器中安装 CA 提供的证书。本节将介绍这些步骤(以及其他一些步骤)。

密钥生成
准备运行 TLS 服务器的第一步是生成私钥。在开始之前,您必须做出以下几个决定:

密钥算法
OpenSSL 支持 RSA、DSA、ECDSA 和 EdDSA 密钥算法,但并非所有这些算法在实践中都很有用。例如,DSA 已过时,EdDSA 尚未得到广泛支持。这给我们留下了RSA和ECDSA算法,可以在我们的证书中使用。

密钥大小
默认密钥大小可能不安全,这就是为什么应始终显式配置密钥大小的原因。例如,RSA 密钥的默认值过去为 512 位,这是不安全的。如果您今天在服务器上使用了512位密钥,入侵者可能会获取您的证书并使用暴力破解来恢复您的私钥,之后她可以冒充您的网站。如今,2048 位 RSA 密钥被认为是安全的,对于 ECDSA,则为 256 位。

强烈建议使用带密钥的密码,可以安全地存储、传输和备份受保护的密钥。另一方面,这些密钥不方便,因为如果没有密码短语,就无法使用它们。例如,每次希望重新启动 Web 服务器时,系统可能会要求您输入密码。对于大多数人来说,这要么太不方便,要么具有不可接受的可用性影响。此外,在生产中使用受保护的密钥实际上并没有提高安全性(如果有的话)。这是因为,一旦激活,私钥在程序存储器中将不受保护;可以到达服务器的攻击者只需多花一点力气就可以从那里获取密钥。因此,当通行短语未安装在生产系统上时,应仅将其视为保护私钥的机制。换句话说,在生产系统上将密码保留在键旁边是可以的。如果您需要在生产中提供更好的安全性,则应投资硬件解决方案。

要生成 RSA 密钥,请使用以下命令: genpkey

$ openssl genpkey -out fd.key
-algorithm RSA
-pkeyopt rsa_keygen_bits:2048
-aes-128-cbc
在这里,我指定使用AES-128保护密钥。您也可以使用AES-256(带开关),但最好远离其他算法(例如DES,3DES和SEED)。-aes-256-cbc

警告
默认情况下,OpenSSL 会将新 RSA 密钥的公共指数设置为 65,537。这就是所谓的短公开指数,它显著提高了 RSA 验证的性能。您可能会遇到选择3作为您的公众指数的建议,并更快地进行验证。虽然这是真的,但使用3作为公众指数存在一些令人不快的历史弱点,这就是为什么你应该坚持使用65,537。这种选择提供了过去已被证明有效的安全裕度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值