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

news2025/6/1 11:37:12

安装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 ...
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2392582.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序一次性订阅封装

封装代码如下&#xff1a; export async function subscribeMessage(tmplIds: string[]): Promise<ISubscribeMessagePromise> {// 模板ID// 1、获取设置状态const settings (await wx.getSetting({ withSubscriptions: true })).subscriptionsSetting || {}console.log…

安全帽检测算法AI智能分析网关V4守护工地/矿山/工厂等多场景作业安全

一、方案概述​ 在工业生产与建筑施工场景中&#xff0c;安全帽是保障人员安全的重要装备。但传统人工巡检效率低、易疏漏&#xff0c;难以满足现代安全管理需求。AI智能分析网关V4安全帽检测方案&#xff0c;借助人工智能与计算机视觉技术&#xff0c;实现作业现场安全帽佩戴…

Python自动化之selenium语句——打开、关闭浏览器和网页

目录 一、打开谷歌浏览器 1.双击桌面的Pycharm工具 2.新建Python文件&#xff0c;输入文件名 3.新建的Python文件如下 4.安装selenium库 5.导入包 二、打开网页、关闭网页、关闭浏览器 1.导入增加一个时间包 2.使用函数打包之前写的浏览器的配置 3.调用 4.打开百度网…

【数据结构】--二叉树--堆(上)

一、树的概念和结构 概念&#xff1a; 树是一种非线性的数据结构&#xff0c;他是由n(n>0)个有限结点组成一个具有层次关系的集合。其叫做树&#xff0c;是因为他倒过来看就和一棵树差不多&#xff0c;其实际上是根在上&#xff0c;树枝在下的。 树的特点&#xff1a; 1…

多线程(5)——单例模式,阻塞队列

目录 单例模式饿汉模式懒汉模式—单线程版懒汉模式—多线程版&#xff08;经典面试题&#xff09;懒汉模式—多线程版&#xff08;改进&#xff09; 阻塞队列阻塞队列是什么生产者消费者模型标准库中的阻塞队列-BlockingQueue阻塞队列实现 单例模式 单例模式是一种设计模式&am…

视频监控汇聚平台EasyCVR工业与安全监控:防爆摄像机的安全应用与注意事项

石油、化工、煤矿等行业存在易燃易爆气体、粉尘&#xff0c;普通监控设备易因电火花、高温引发爆炸火灾。随着工业规模扩大&#xff0c;安全生产监控需求激增&#xff0c;防爆摄像机成为保障安全的关键。加之国家法规与行业标准对危险环境监控设备要求严格&#xff0c;规范其应…

基于 Redis 实现分布式锁:原理及注意事项

文章目录 基于 Redis 实现分布式锁&#xff1a;原理及注意事项基于 Redis 实现分布式锁的原理Redis 分布式锁的过期时间和锁续期机制如何防止锁被其他 goroutine 删除&#xff1f;Redis 分布式锁存在的单点故障问题&#xff1a;基于 RedLock 的解决方案高并发场景中 Redis 分布…

手机设备多?怎样设置IP保证不关联

在移动互联网时代&#xff0c;多设备运营&#xff08;如电商、游戏工作室、社交媒体矩阵&#xff09;常面临IP关联风险&#xff0c;轻则账号受限&#xff0c;重则封禁。以下提供6种高效设置独立IP的方法&#xff0c;结合技术原理与实操建议&#xff0c;助您打造稳定合规的运营环…

哈尔滨工业大学计算机系统大作业程序人生-Hello’s P2P

摘 要 文章以C语言程序设计经典案例hello.c为研究对象&#xff0c;系统解析程序在计算机系统中的完整生命周期。剖析源代码通过预处理、编译、汇编、链接四阶段演化为可执行目标程序的编译系统工作机制&#xff0c;继而从进程视角揭示程序运行时计算机体系结构的协同运作&…

Linux系统管理与编程24:基础条件准备-混搭“本地+阿里云”yum源

兰生幽谷&#xff0c;不为莫服而不芳&#xff1b; 君子行义&#xff0c;不为莫知而止休。 1.添加宿主机共享文件夹 Linux虚拟机可以和宿主机共享文件夹&#xff0c;这样有利于工具文件的共享。具体操作如下&#xff1a; 1&#xff09;vmware workstation共享文件夹 虚拟机…

如何在 Windows 10 PC 上获取 iPhone短信

您可以轻松地将媒体数据从 iPhone 传输到 Windows 计算机&#xff0c;并直接访问计算机上的数据。但是&#xff0c;您可以在 Windows 10 PC 上接收 iPhone 短信吗&#xff1f;有什么功能或工具支持它吗&#xff1f;如果您发现在 Windows 10 PC 上接收 iPhone 消息很困难&#x…

Linux 系统中的软链接与硬链接

目录 一、什么是软链接&#xff1f; 1. 创建软链接 2. 软链接的特性 3. 软链接的用途 二、什么是硬链接&#xff1f; 1. 创建硬链接 2. 硬链接的特性 3. 硬链接的用途 4. 目录硬链接的特殊性 ​编辑 三、软链接与硬链接的区别 1. inode 编号 2. 路径依赖 3. 删除行…

Python爬虫第22节- 结合Selenium识别滑动验证码实战

目录 一、引言 二、滑动验证码原理与反爬机制 2.1 验证码原理 2.2 反爬机制 三、工程实战&#xff1a;滑动验证码识别全流程 3.1 工程准备 3.1.1 环境依赖 3.1.2 目标网站与验证码识别案例 3.2 核心破解流程 3.2.1 自动化打开网页与登录 3.2.2 获取验证码图片&#…

Escrcpy(安卓手机投屏软件) v1.29.6 中文绿色版

在数字设备日益普及的今天&#xff0c;用户对于设备的控制和管理需求也在不断增加。对于Android设备用户来说&#xff0c;Escrcpy这款强大的工具无疑是一个福音。它不仅提供了直观的图形化界面&#xff0c;让用户能够轻松显示和控制自己的Android设备&#xff0c;还以完全免费开…

Linux:深入理解网络层

网络层在复杂的网络环境中确定一个合适的路径.传输到指定的网络中 一、网络层的理解 问题1&#xff1a;为什么要有网络层的概念呢&#xff1f;&#xff1f; ——>我们先来讲一个故事&#xff1a; 假设我在学校里被誉为数学大神&#xff0c;是因为我的数学有考满分的能力&…

Linux_编辑器Vim基本使用

✨✨ 欢迎大家来到小伞的大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;LInux_st 小伞的主页&#xff1a;xiaosan_blog 制作不易&#xff01;点个赞吧&#xff01;&#xff01;谢谢喵&#xff01;&a…

vue展示修改前后对比,并显示修改标注diff

动态父组件 <template><el-buttontype"primary"size"small"plainclick"showDiffDialog(subItem)">查看修改内容</el-button><TextDiffDialogv-model:visible"diffDialogVisible":before"currentDiffItem?.…

LiveWallpaperMacOS:让你的 Mac 桌面动起来

随着桌面美化需求的不断提升,用户对于桌面壁纸的要求已经不再局限于静态图片。越来越多的 Mac 用户希望桌面能像 Windows 一样,拥有动态壁纸,展现个性、提升体验。LiveWallpaperMacOS 正是这样一款让你的 Mac 桌面焕发活力的开源项目。 本文将详细介绍 LiveWallpaperMacOS …

[预训练]Encoder-only架构的预训练任务核心机制

原创文章1FFN前馈网络与激活函数技术解析&#xff1a;Transformer模型中的关键模块2Transformer掩码技术全解析&#xff1a;分类、原理与应用场景3【大模型技术】Attention注意力机制详解一4Transformer核心技术解析LCPO方法&#xff1a;精准控制推理长度的新突破5Transformer模…

07-后端Web实战(部门管理)

5. 修改部门 对于任何业务的修改功能来说&#xff0c;一般都会分为两步进行&#xff1a;查询回显、修改数据。 5.1 查询回显 5.1.1 需求 当我们点击 "编辑" 的时候&#xff0c;需要根据ID查询部门数据&#xff0c;然后用于页面回显展示。 5.1.2 接口描述 参照参照…