Red Hat 系統預設的 OpenSSL/OpenSSH 版本隨發行版釋出而固定,若需修補最新 CVE 漏洞(如 Heartbleed、Logjam)或支援現代加密套件(ChaCha20-Poly1305、Ed25519),往往需自行編譯最新版本。本文記錄在 Red Hat 系列系統上從源碼編譯升級的標準流程。
# 1. 準備建構環境
yum install -y gcc make perl zlib-devel
# 2. 下載並驗證源碼(以 3.0 系列為例,請依需求調整版本)
cd /usr/local/src
wget https://www.openssl.org/source/openssl-3.0.12.tar.gz
wget https://www.openssl.org/source/openssl-3.0.12.tar.gz.sha256
sha256sum -c openssl-3.0.12.tar.gz.sha256
# 3. 解壓、配置、編譯、測試、安裝
tar xzf openssl-3.0.12.tar.gz
cd openssl-3.0.12
./config --prefix=/usr/local/openssl-3.0.12 \
--openssldir=/usr/local/openssl-3.0.12/ssl \
shared zlib-dynamic enable-ec_nistp_64_gcc_128
make -j$(nproc)
make test
make install
--prefix:安裝根目錄,避免覆蓋系統預設版本(/usr/bin/openssl)shared:產生動態庫 libssl.so/libcrypto.so,供 OpenSSH 連結zlib-dynamic:使用系統 zlib,減小體積echo "/usr/local/openssl-3.0.12/lib64" > /etc/ld.so.conf.d/openssl-3.0.conf
ldconfig
# 讓系統預設使用新版 openssl 指令
echo 'export PATH=/usr/local/openssl-3.0.12/bin:$PATH' > /etc/profile.d/openssl.sh
echo 'export LD_LIBRARY_PATH=/usr/local/openssl-3.0.12/lib64:$LD_LIBRARY_PATH' >> /etc/profile.d/openssl.sh
source /etc/profile.d/openssl.sh
# 1. 安裝建構依賴
yum install -y pam-devel libselinux-devel
# 2. 下載源碼
cd /usr/local/src
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.6p1.tar.gz
tar xzf openssh-9.6p1.tar.gz
cd openssh-9.6p1
# 3. 配置(關鍵:指定 --with-ssl-dir 指向新版 OpenSSL)
./configure --prefix=/usr \
--sysconfdir=/etc/ssh \
--with-pam \
--with-md5-passwords \
--with-ssl-dir=/usr/local/openssl-3.0.12 \
--with-zlib=/usr \
--mandir=/usr/share/man
# 4. 編譯安裝
make -j$(nproc)
make install
--prefix=/usr:覆蓋系統預設 /usr/bin/ssh 等二進制檔--sysconfdir=/etc/ssh:配置檔位置不變--with-ssl-dir:關鍵,指向剛編譯的 OpenSSL,確保 SSH 使用新加密庫--with-pam:整合 PAM 認證(必要)# 檢查版本
ssh -V
# 輸出應顯示:OpenSSH_9.6p1, OpenSSL 3.0.12 ...
# 重啟 SSH 服務
systemctl restart sshd
# 測試連線
ssh -o PreferredAuthentications=publickey user@localhost
/etc/ssh/sshd_config、/etc/ssh/ssh_configyum/dnf 管理,後續安全更新需自行重新編譯從源碼編譯雖增加維運負擔,但能第一時間部署最新加密標準與安全修補。生產環境建議先在預演環境完整驗證,再排程上線。