You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

macOS中openssl命令显示LibreSSL版本的原因咨询

macOS中openssl命令显示LibreSSL版本的原因咨询

嗨,这事儿我太熟了!其实是苹果在macOS的某个版本开始,就把系统默认自带的「openssl」替换成了LibreSSL——但它还是沿用了openssl这个命令名和路径/usr/bin/openssl,所以你才会碰到这种“名不符实”的情况。

给你拆解一下你遇到的几个现象:

  • 为什么openssl version显示LibreSSL?因为/usr/bin/openssl这个二进制文件本身就是LibreSSL编译来的,只是名字没改成libressl而已,本质是苹果换了底层实现。
  • 为什么ls /usr/bin/ | grep libressl找不到相关文件?因为系统根本没单独提供libressl这个命令,直接把LibreSSL打包成了openssl的名字来用。
  • 为什么man openssl显示的是OpenSSL的手册?这是因为LibreSSL作为OpenSSL的分支,兼容大部分OpenSSL的命令和参数,系统也就沿用了原有的OpenSSL手册页,或者说手册内容是兼容两者的,所以看起来像是OpenSSL的文档。

如果你确实想用真正的OpenSSL(比如需要某些LibreSSL不支持的特性),可以通过Homebrew来安装:

  1. 先装Homebrew(如果还没装的话)
  2. 执行brew install openssl
  3. 安装完成后,把Homebrew版OpenSSL的路径加到你的shell配置文件里(比如~/.zshrc或者~/.bashrc):
    # Intel芯片的macOS
    export PATH="/usr/local/opt/openssl/bin:$PATH"
    # M系列芯片的macOS
    export PATH="/opt/homebrew/opt/openssl/bin:$PATH"
    
  4. 执行source ~/.zshrc(或者对应的配置文件)刷新环境变量,再敲openssl version就能看到真正的OpenSSL版本了。

简单来说就是:macOS系统自带的openssl是“披着OpenSSL外壳的LibreSSL”,而你以为的“真正OpenSSL”可能还没加到系统优先调用的路径里~

备注:内容来源于stack exchange,提问作者FP34024

火山引擎 最新活动