【问题标题】:OpenSSL Static Library too big, any alternative or way to reduce its size?OpenSSL 静态库太大,有什么替代方法或方法来减小它的大小?
【发布时间】:2011-03-24 02:11:37
【问题描述】:

我使用了 OpenSSL 1.0 的预构建静态库,但它使我的二进制文件太大,(在发布模式下将其大小增加约 800Kb)。

我不需要 BIO 等 OpenSSL 的大部分功能,我使用自己的套接字,因此在代码中我只使用了几个 SSL_XXXXXXXXX 调用(SSL_accept(3) 或 SSL_connect(3)、SSL_read(3) ) 和 SSL_write(3))

我唯一的要求是支持 SSLv2/v3 和 windows 上的 winsock,以及 linux 上的客户端和服务器端的套接字(对于 C++)

有没有办法让 OpenSSL 变得更小(也许通过自己编译),或者,在最后的手段中,任何其他好的但更轻量级的 SSL 库可以满足我的要求? lib 必须是静态链接的。

谢谢你

【问题讨论】:

  • 800Kb 是否有理由破坏交易?最后,如果您想开始精简 OpenSSL 库,则必须开始检查并清除不需要的功能(如果您不了解整个内部工作原理,这可能会有点麻烦)。
  • 当前的二进制大小约为 700Kb,对于我们的部署来说已经很大了,增加 800Kb 看起来很小,但会使整个东西变大两倍。不幸的是 1.5Mb 不是一个选择:(

标签: c++ openssl static-libraries


【解决方案1】:

我想你想要这个页面,特别是关于代码大小的部分:

https://en.wikipedia.org/w/index.php?title=Comparison_of_TLS_implementations&oldid=585386367#Code_size_and_dependencies

(日期为 2013 年 12 月)

更新:可惜不再是更新页面的一部分。

【讨论】:

  • 谢谢,似乎 CyaSSL 可能是一个选项,但我会等着看是否有人知道如何减少 OpenSSL 大小。
  • 似乎 CyaSSL 对我来说是完美的,它只需要 100-125Kb,并且具有 Openssl 兼容层。谢谢
  • 自 2019 年起,此链接不再回答问题,因为 Wikipedia 页面不再有“代码大小部分”。
【解决方案2】:

您可以尝试使用--ffunction-sections--fdata-sections 自己编译它,这会告诉 gcc 将每个函数和全局数据变量放在对象内的单独部分中。

(当使用静态库时,链接器将包含所需功能的整个对象从存档复制到应用程序。)

【讨论】:

    【解决方案3】:

    OpenSSL 确实有大量编译时选项来控制构建的功能。我相信 SSL 功能在下面使用BIOs,所以您仍然需要这些功能,但是您可能不需要很多其他功能(例如您不会使用的密码、信封加密、S/MIME 支持。 ..)。

    我不确定它会减少多少二进制文件大小,但值得一试。

    【讨论】:

    • 这是我目前找到的选项,不幸的是它们没有记录在任何地方,除了在 mk1mf.pl 文件中......(自述文件中没有参考......)......我还在寻找在这个..
    • 抱歉,似乎所有选项都太大而无法在此处发布...但是“just-ssl”选项看起来很有希望,但它可能无法将大小缩小到足够的程度。
    • 所以,结果如下:我添加了一大堆不包含: no-asm no-ssl2 no-zlib no-rc2 no-idea no-des no-bf no-cast no -md2 no-mdc2 no-dh no-err no-ripemd no-rc5 no-camellia no-seed no-krb5。最终结果是大小减少了我的 200Kb。原始大小 = 650Kb,完整的 OpenSSL = 1416Kb,排除 1257。我现在正在研究其他实现。
    猜你喜欢
    • 2011-04-09
    • 2010-09-17
    • 2016-06-03
    • 2011-02-07
    • 1970-01-01
    • 2017-02-01
    • 2017-02-09
    • 2010-12-25
    • 2017-11-26
    相关资源
    最近更新 更多