我想从源代码编译 OpenSSL。有许多配置选项我可以在编译时使用它。我希望它尽可能安全和坚固,最终将在编译 Apache HTTPD 时使用它。有一些配置选项似乎可以实现此目标,例如no-ssl2
和no-ssl3
。我还应该使用哪些其他选项以及为什么?这些选项都在 OpenSSL 网站上有记录,但对于其中一些选项,我很难辨别使用每个选项的效果或优缺点。
有哪些实用的选项可以使 OpenSSL 更加强大?
答案1
这实际上完全取决于您预期的客户端和您使用的证书。如果您控制客户端和服务器,请仅选择 TLS 1.2(或者在最终确定后选择 TLS 1.3),使用一些 ECDHE 来实现完美的前向保密性,使用汇编版本(它可以使用英特尔的 AESNI 指令,否则速度会慢很多)并丢弃您不需要的所有内容。尽可能小。
如果您不控制客户端,请使用您的客户端需要的,但要运用常识(例如,如果您的客户端是 Windows XP 上的 IE,那么您就没有一个安全密码了,因此这是徒劳的)。
标志的确切列表取决于许多因素:例如 openssl 版本、您的操作系统、编译器/CPU 等。
通常,Linux 发行版在选择不太糟糕的编译标志方面做得相当不错,企业风格的发行版(RHEL、SLES 等)通常使用 openssl 的 FIPS 模式,该模式旨在得到一定程度的强化(请参阅https://www.openssl.org/docs/fips.html)。