从Homebrew找到openssl.cnf文件并拷贝到Go项目下使用

发布于:2025-05-30 ⋅ 阅读:(21) ⋅ 点赞:(0)

安装OpenSSL

在 macOS 上下载和安装 OpenSSL 最常见和推荐的方式是使用 Homebrew,这是一个 macOS 缺失的包管理器。

如果您还没有安装 Homebrew,请先安装它。安装 Homebrew 后,安装 OpenSSL 只需要一条命令。

步骤 1:安装 Homebrew(如果尚未安装)

打开您的终端应用程序 (可以在 Spotlight 搜索中输入 “Terminal” 找到),然后粘贴并运行以下命令:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

按照屏幕上的指示完成安装。这可能需要您输入您的用户密码。

步骤 2:使用 Homebrew 安装 OpenSSL

Homebrew 默认会安装最新稳定版的 OpenSSL 3。在终端中运行:

brew install openssl@3

Homebrew 会下载并安装 OpenSSL。安装完成后,它会告诉您 OpenSSL 的安装路径,通常是 /opt/homebrew/opt/openssl@3

步骤 3:配置您的 shell 环境 (重要!)

Homebrew 安装的 OpenSSL 不会自动链接到 /usr/local/bin/usr/bin,以避免与 macOS 内置的旧版本 OpenSSL 发生冲突。这意味着您需要手动配置您的 shell 环境,以便程序能够找到 Homebrew 安装的 OpenSSL。

Homebrew 在安装完成后通常会给出配置提示,类似这样:

==> openssl@3
openssl@3 is keg-only, which means it was not symlinked into /opt/homebrew.
If you need to have openssl@3 first in your PATH, run:
  echo 'export PATH="/opt/homebrew/opt/openssl@3/bin:$PATH"' >> ~/.zshrc

For compilers to find openssl@3 you may need to set:
  export LDFLAGS="-L/opt/homebrew/opt/openssl@3/lib"
  export CPPFLAGS="-I/opt/homebrew/opt/openssl@3/include"

请按照 Homebrew 的提示进行操作。以下是通用的做法:

对于 zsh 用户(macOS Ventura 及更高版本的默认 shell):

打开终端,运行以下命令将 OpenSSL 路径添加到您的 PATH 环境变量中,并设置 LDFLAGS 和 CPPFLAGS,这些是编译时需要的环境变量:

echo 'export PATH="/opt/homebrew/opt/openssl@3/bin:$PATH"' >> ~/.zshrc
echo 'export LDFLAGS="-L/opt/homebrew/opt/openssl@3/lib"' >> ~/.zshrc
echo 'export CPPFLAGS="-I/opt/homebrew/opt/openssl@3/include"' >> ~/.zshrc

然后,重新加载您的 .zshrc 文件使更改生效:

source ~/.zshrc

对于 bash 用户(旧版 macOS 的默认 shell 或您手动切换的):

将上述命令中的 ~/.zshrc 替换为 ~/.bash_profile~/.bashrc (取决于您的配置),然后重新加载:

echo 'export PATH="/opt/homebrew/opt/openssl@3/bin:$PATH"' >> ~/.bash_profile # 或者 ~/.bashrc
echo 'export LDFLAGS="-L/opt/homebrew/opt/openssl@3/lib"' >> ~/.bash_profile # 或者 ~/.bashrc
echo 'export CPPFLAGS="-I/opt/homebrew/opt/openssl@3/include"' >> ~/.bash_profile # 或者 ~/.bashrc
source ~/.bash_profile # 或者 source ~/.bashrc

步骤 4:验证安装

配置完成后,关闭并重新打开您的终端应用程序,或者再次运行 source 命令。然后,您可以运行以下命令来验证 OpenSSL 是否已正确安装且您的系统正在使用 Homebrew 版本:

openssl version

输出应该显示类似 OpenSSL 3.x.x ... 的信息。

您还可以验证 which openssl 的输出:

which openssl

这应该显示 /opt/homebrew/opt/openssl@3/bin/openssl (或者如果您将其链接到 /usr/local/bin,则显示 /usr/local/bin/openssl)。

这样,您的 macOS 系统就成功安装了 OpenSSL,并且您的开发环境也配置好了,以便在编译需要 OpenSSL 的其他软件时能够找到它。
macOS 和 Windows 在文件系统结构和 Homebrew 的安装方式上有所不同,导致 openssl.cnf 文件不容易找到。

在 Windows 上,当您安装 OpenSSL 时,openssl.cnf 文件通常会放在安装目录的 binconf 文件夹下,方便直接复制。

然而,在 macOS 上,使用 Homebrew 安装的 OpenSSL (例如 openssl@3),其 openssl.cnf 文件默认位于 Homebrew 的 Cellar 目录中,并且通常不会直接在 bin 目录下。

找到 openssl.cnf 文件

  1. 找到 OpenSSL 的安装路径:
    首先,确定 Homebrew 安装的 OpenSSL 的具体路径。最简单的方法是使用 brew --prefix 命令:

    brew --prefix openssl@3
    

    这个命令通常会返回类似 /opt/homebrew/opt/openssl@3 的路径(如果您使用的是 Apple Silicon Mac)。如果是 Intel Mac,可能是 /usr/local/opt/openssl@3

  2. 查找 openssl.cnf 文件:
    进入上一步找到的 OpenSSL 安装路径,然后查找 openssl.cnf。它通常位于 etc/openssl/ssl/ 目录下。

    假设上一步返回的路径是 /opt/homebrew/opt/openssl@3,您可以尝试:

    find /opt/homebrew/opt/openssl@3 -name openssl.cnf
    

    这条命令会在 /opt/homebrew/opt/openssl@3 目录下搜索名为 openssl.cnf 的文件。

    最常见的位置是:
    /opt/homebrew/opt/openssl@3/etc/openssl/openssl.cnf (对于 OpenSSL 3)

    /usr/local/etc/openssl@3/openssl.cnf (对于 OpenSSL 3,可能是符号链接)

    /opt/homebrew/etc/openssl@3/openssl.cnf (对于 OpenSSL 3,也是符号链接)

    如果您安装的是 openssl (而不是 openssl@3,通常指的是 OpenSSL 1.1),它可能在:
    /opt/homebrew/etc/openssl/openssl.cnf

    /usr/local/etc/openssl/openssl.cnf

如果没有找到
在这里插入图片描述
这表明它可能不在 openssl@3 的顶层安装目录中,或者它位于一个更深的子目录。

根据 Homebrew 安装 OpenSSL 的惯例,openssl.cnf 通常位于以下路径:

  • 对于 OpenSSL 3: /opt/homebrew/etc/openssl@3/openssl.cnf
  • 对于 OpenSSL 1.1: /opt/homebrew/etc/openssl/openssl.cnf

这些路径是 Homebrew 创建的符号链接,指向实际安装在 Cellar 目录下的文件。Homebrew 通常会将配置文件放在 etc 目录下,以便于管理。

请尝试直接查看这些路径:

  1. 检查 OpenSSL 3 的配置文件路径:

    ls -l /opt/homebrew/etc/openssl@3/openssl.cnf
    

    在这里插入图片描述

  2. 如果您不确定自己安装的是 OpenSSL 哪个版本,可以同时检查 OpenSSL 1.1 的路径:

    ls -l /opt/homebrew/etc/openssl/openssl.cnf
    

找到文件后,如何复制到项目目录下?

一旦您找到了 openssl.cnf 文件的确切路径,您就可以使用 cp 命令将其复制到您的项目目录下。

假设您的项目目录是 /path/to/your/project,并且您找到了 openssl.cnf/opt/homebrew/opt/openssl@3/etc/openssl/openssl.cnf

cp /opt/homebrew/opt/openssl@3/etc/openssl/openssl.cnf /path/to/your/project/

请将 /path/to/your/project/ 替换为您实际的项目路径。
在这里插入图片描述

重要提示:

  • 默认配置: 在大多数情况下,生成普通的证书和私钥,您不需要修改 openssl.cnf 文件。当老师要求复制时,通常是为了修改一些默认参数(如默认国家、省份等信息),或者启用一些高级功能(如扩展字段)。
  • 环境变量: OpenSSL 默认会查找 /usr/local/ssl/openssl.cnf 或通过 OPENSSL_CONF 环境变量指定的路径。如果您只是想临时使用自定义的 openssl.cnf,可以将该文件的路径通过环境变量传递给 openssl 命令,而不是直接复制到项目目录:
    OPENSSL_CONF=/path/to/your/project/openssl.cnf openssl req -new -x509 ...