安裝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
文件通常會放在安裝目錄的 bin
或 conf
文件夾下,方便直接復制。
然而,在 macOS 上,使用 Homebrew 安裝的 OpenSSL (例如 openssl@3
),其 openssl.cnf
文件默認位于 Homebrew 的 Cellar 目錄中,并且通常不會直接在 bin
目錄下。
找到 openssl.cnf
文件
-
找到 OpenSSL 的安裝路徑:
首先,確定 Homebrew 安裝的 OpenSSL 的具體路徑。最簡單的方法是使用brew --prefix
命令:brew --prefix openssl@3
這個命令通常會返回類似
/opt/homebrew/opt/openssl@3
的路徑(如果您使用的是 Apple Silicon Mac)。如果是 Intel Mac,可能是/usr/local/opt/openssl@3
。 -
查找
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
目錄下,以便于管理。
請嘗試直接查看這些路徑:
-
檢查 OpenSSL 3 的配置文件路徑:
ls -l /opt/homebrew/etc/openssl@3/openssl.cnf
-
如果您不確定自己安裝的是 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 ...