從Homebrew找到openssl.cnf文件并拷貝到Go項目下使用

安裝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"' >> ~/.zshrcFor 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.pswp.cn/pingmian/82798.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/82798.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/82798.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Qt 的簡單示例 -- 地址簿

這個工程里有兩個窗口,都是QWidget派生的窗口 主窗口: 1. 運用了布局,按鈕控件,單行編輯框,富文本編輯框等窗口部件; 2. 運用了 QMap 類; 3. 實現了點擊按鈕彈出子窗口的功能,這里子…

kubernate解決 “cni0“ already has an IP address different from 10.244.0.1/24問題

問題 NetworkPlugin cni failed to set up pod “coredns-5d4b4db-jkmnl_kube-system” network: failed to set bridge addr: “cni0” already has an IP address different from 10.244.0.1/24 解決方案 這個問題通常是由于Flannel網絡插件殘留配置導致的IP地址沖突。以下…

QT+opecv如何更改圖片的拍攝路徑

如何更改相機拍攝圖片的路徑 前言:基礎夯實:效果展示:實現功能:遇到問題:未解決: 核心代碼: 前言: 最近在項目開發中遇到需要讓用戶更改相機拍攝路徑的問題,用戶可自己選…

66常用控件_QTableWidget的使用

目錄 代碼示例:使用QTableWidget Table Widget 使? QTableWidget 表??個表格控件. ?個表格中包含若??, 每???包含若?列. 表格中的每個單元格, 是?個 QTableWidgetItem 對象. QTableWidget 核??法 方法說明item(int row, int column)根據行數數列獲取指定的…

記一次edu未授權訪問漏洞

首先進入該網址是一個登錄界面,查看源代碼,找到js文件,發現存在js.map前端信息泄露,于是我們進行js還原。 得到前端的一些源代碼,以及路由API等,我們就可以通過這個源代碼,進行目錄遍歷&#xf…

MySQL 索引和事務

目錄 前言 一、MySQL 索引介紹 1. 索引概述 2. 索引作用 3. 索引的分類 3.1 普通索引 3.2 唯一索引 3.3 主鍵索引 3.4 組合索引 (最左前綴) 3.5 全文索引 (FULLTEXT) 3.6 創建索引的原則依據 3.7 查看索引 3.8 刪除索引 二、MySQL 事務 1. 事務的 ACID 原則 MYS…

HTML實戰項目:高考加油和中考加油

設計思路 頁面加載后會自動顯示高考內容,點擊頂部按鈕可以切換到中考內容。倒計時會每秒更新,為考生提供實時的備考時間參考。 使用代表希望的藍色和金色漸變作為主色調 頂部導航欄可切換高考/中考內容 添加動態倒計時功能 設計勵志名言卡片和備考小貼…

What is Predictive Maintenance (PdM)? Learn How Industrial IoT Enables PdM

文章大綱 從預防性維護到預測性維護服務的轉變傳統預防性維護的局限性預測性維護的定義工業物聯網(IIoT)如何助力預測性維護預測性維護帶來的成本效益實施預測性維護面臨的挑戰企業轉向預測性維護的原因參考文獻大家好!今天,讓我們一起深入了解一下預測性維護技術。它正在徹…

CCPC shandong 2025 G

題目鏈接:https://codeforces.com/gym/105930/problem/G 題目背景: n 名工人加工 m 個工件,第 i 個工件在第 ti 分鐘的開頭加入 工人 wi 的收件箱。 每分鐘,工人從收件箱里拿出一個工件,完成加工后放入下 一個工人的收…

UE路徑追蹤Path Tracing和Lumen的區別

在Unreal Engine(UE,虛幻引擎)中,Path Tracing 和 Lumen 是兩種不同的全局光照(Global Illumination, GI)和反射技術,各自適用于不同的使用場景。以下是它們的主要區別: &#x1f31…

JaCoCo 是什么

JaCoCo(Java Code Coverage)是一款廣泛使用的 Java 代碼覆蓋率工具,用于分析測試用例對項目代碼的覆蓋程度,幫助開發者識別未被測試的代碼區域,從而提升軟件質量。它通常與 JUnit、TestNG 等測試框架及 Maven、Gradle …

火山引擎扣子系列

您提到的“火山引擎扣子系列”指的應該是 **火山引擎推出的智能AI對話開發與應用平臺——Coze(中文名:扣子)**。這是一個由字節跳動旗下火山引擎開發的、面向開發者和非技術用戶的**低代碼/無代碼AI Bot開發平臺**,旨在幫助用戶快…

OpenLayers 加載ArcGIS瓦片數據

注:當前使用的是 ol 5.3.0 版本,天地圖使用的key請到天地圖官網申請,并替換為自己的key 隨著GIS應用的不斷發展,Web地圖也越來越豐富,除了像ESRI、超圖、中地數碼這樣GIS廠商有各自的數據源格式,也有Google…

大模型是什么?

大模型,英文名叫Large Model,也被稱為基礎模型(Foundation Model)。我們通常說的大模型,主要指的是其中最常用的一類——大語言模型(Large Language Model,簡稱LLM)。除此之外&#…

LLaMaFactory 微調QwenCoder模型

步驟一:準備LLamaFactory環境 首先,讓我們嘗試使用github的方式克隆倉庫: git config --global http.sslVerify false && git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git # 創建新環境,指定 Python 版本(以 3.…

【位運算】判斷字符是否唯?(easy)

33. 判斷字符是否唯?(easy) 題?描述:解法(位圖的思想):C 算法代碼:Java 算法代碼: 題?鏈接:?試題 01.01. 判定字符是否唯? 題?描述: 實現?個算法&…

滿天星之canvas實現【canvas】

展示 文章目錄 展示Canvas 介紹【基礎】簡介兼容性關鍵特性注意事項應用場景:基本示例 滿天星代碼實現【重點】代碼解釋 全量代碼【來吧,盡情復制吧少年】html引入JS代碼 參考資源 Canvas 介紹【基礎】 簡介 Canvas是一個基于HTML5的繪圖技術&#xff0…

可視化提示詞(Prompt)在訓練過程中的優化過程:visualize_prompt_evolution

可視化提示詞(Prompt)在訓練過程中的優化過程:visualize_prompt_evolution 這個函數 visualize_prompt_evolution 的作用是可視化提示詞(Prompt)在訓練過程中的優化過程,通過對比每個訓練輪次(Epoch)的提示詞與初始提示詞的差異,直觀展示哪些Token被保留、哪些被修改…

2025 一帶一路暨金磚國家技能發展與技術創新大賽 第一屆“信創適配及安全管理賽項”樣題

2025 一帶一路暨金磚國家技能發展與技術創新大賽 第一屆“信創適配及安全管理賽項”樣題 模塊A-理論知識:模塊B-適配環境搭建:系統安裝與配置:DNS 服務配置:DNS 服務配置:CA 服務配置:Httpd 服務配置&#…

Qt Creator調用Python代碼

Qt Creator調用Python代碼 項目場景:現在我寫的Qt上位機,需要調用同事使用python寫的代碼,所以我需要一個整合,把同事的代碼融合進我的Qt工程里來。 所以,本篇記錄Qt Creator中調用Python的一種方法。 操作系統:windows 11 64位 Python使用的版本為 3.9.10,(安裝參…