Unable to establish SSL connection. curl靜態編譯

博主有個老RHEL系統,內核2.6.18;ssl不管用了,最簡單的wget也不行,下面編個靜態編譯的新版 curl 用用(不影響yum源,不然的話系統自帶的舊版 OpenSSL 受影響得得不償失),來最優化解決下

首要最重要的一步是選對方案及版本

WolfSSL 通常比 OpenSSL 更容易在老系統上編譯,且WolfSSL 的配置通常更簡單

wolfSSL 2.9.0 + curl 7.36.0 最兼容當前老系統(RHEL 5.8),試錯了好多版本
在這里插入圖片描述

老系統 scp都不好使了wget https://github.com/wolfSSL/wolfssl/archive/refs/tags/v2.9.0.tar.gzscp -oHostKeyAlgorithms=+ssh-rsa v2.9.0.tar.gz   root@192.168.31.125:/home/wget https://curl.se/download/curl-7.36.0.tar.gzwget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
scp -oHostKeyAlgorithms=+ssh-rsa autoconf-2.69.tar.gz   root@192.168.31.125:/
scp -oHostKeyAlgorithms=+ssh-rsa m4-1.4.19.tar.gz    root@192.168.31.125:/
scp -oHostKeyAlgorithms=+ssh-rsa automake-1.16.5.tar.gz   root@192.168.31.125:/
scp -oHostKeyAlgorithms=+ssh-rsa libtool-2.4.7.tar.gz  root@192.168.31.125:/

其中 wolfSSL 2.9.0 構建需要走autogen.sh 來生成 configure 腳本,且無法執行,報出系統自帶的 Autoconf 工具版本不行,有點舊

[root@localhost wolfssl-2.9.0]#./autogen.sh 
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force -I m4
configure.ac:19: error: Autoconf version 2.63 or higher is required
configure.ac:19: the top level
autom4te: /usr/bin/m4 failed with exit status: 63
aclocal: autom4te failed with exit status: 63
autoreconf: aclocal failed with exit status: 63

重新編譯個,手動升級 Autoconf 和 Automake 工具鏈

# 不要覆蓋系統自帶的 /usr/bin/autoconf 和 /usr/bin/automake,以免破壞系統軟件包的構建。我們將它們安裝到自定義目錄。
# 安裝依賴(如果需要): 確保已安裝 gcc, make 等。可能還需要 texinfo。
# yum install texinfo#下載并編譯新版本 M4 (Autoconf 的依賴)
wget http://ftp.gnu.org/gnu/m4/m4-1.4.19.tar.gz
tar xzvf m4-1.4.19.tar.gz
cd m4-1.4.19
./configure --prefix=/usr/local/autotools
make
sudo make install
export PATH=/usr/local/autotools/bin:$PATH#下載并編譯新版本 Autoconf
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
tar xzvf autoconf-2.69.tar.gz
cd autoconf-2.69
./configure --prefix=/usr/local/autotools
make
sudo make install
export PATH=/usr/local/autotools/bin:$PATH#下載并編譯新版本 Automake
wget http://ftp.gnu.org/gnu/automake/automake-1.16.5.tar.gz
tar xzvf automake-1.16.5.tar.gz
cd automake-1.16.5
./configure --prefix=/usr/local/autotools
make
sudo make install
export PATH=/usr/local/autotools/bin:$PATH#下載并編譯新版本 Libtool
wget http://ftp.gnu.org/gnu/libtool/libtool-2.4.7.tar.gz
tar xzvf libtool-2.4.7.tar.gz
cd libtool-2.4.7
./configure --prefix=/usr/local/autotools
make
sudo make install
export PATH=/usr/local/autotools/bin:$PATH# 最終可將下面的行添加到 ~/.bashrc 或 /etc/profile 中,以便下次登錄時自動設置路徑:
export PATH=/usr/local/autotools/bin:$PATH

編譯wolfssl


cd wolfssl-2.9.0/
./autogen.sh 
./configure    --enable-static --disable-shared \--prefix=/usr/local/wolfssl \--disable-examples \--disable-async
make 
make install

編譯crul


cd curl-7.36.0./configure   --enable-static --disable-shared  \--prefix=/usr/local/curl     \--without-ssl      \--with-wolfssl=/usr/local/wolfssl  \--without-zlib        \--disable-ldap  \--disable-ldaps
這里不對勁   
[root@localhost curl-7.36.0]#./configure --help | grep -i ssl--with-spnego=DIR       Specify location of SPNEGO library fbopenssl--with-winssl           enable Windows native SSL/TLS--without-winssl        disable Windows native SSL/TLS--with-darwinssl        enable iOS/Mac OS X native SSL/TLS--without-darwinssl     disable iOS/Mac OS X native SSL/TLS--with-ssl=PATH         Where to look for OpenSSL, PATH points to the SSLinstallation (default: /usr/local/ssl); when--without-ssl           disable OpenSSL--with-polarssl=PATH    where to look for PolarSSL, PATH points to the--without-polarssl      disable PolarSSL detection--with-cyassl=PATH      where to look for CyaSSL, PATH points to the--without-cyassl        disable CyaSSL detectionif another SSL engine is selected.

curl 7.36.0 使用的是 --with-cyassl 選項而不是 --with-wolfssl

# 清理之前的編譯
make distclean# 使用正確的配置選項 --with-cyassl
./configure --enable-static --disable-shared \--prefix=/usr/local/curl \--without-ssl \--with-cyassl=/usr/local/wolfssl \LDFLAGS="-L/usr/local/wolfssl/lib" \CPPFLAGS="-I/usr/local/wolfssl/include"# 編譯和安裝
make
make install

驗證

[root@localhost curl-7.36.0]#/usr/local/curl/bin/curl https://example.com -k -I
HTTP/1.1 200 OK
Content-Type: text/html
ETag: "84238dfc8092e5d9c0dac8ef93371a07:1736799080.121134"
Last-Modified: Mon, 13 Jan 2025 20:11:20 GMT
Cache-Control: max-age=3412
Date: Wed, 27 Aug 2025 00:09:45 GMT
Alt-Svc: h3=":443"; ma=93600,h3-29=":443"; ma=93600
Connection: keep-alive[root@localhost curl-7.36.0]#/usr/local/curl/bin/curl --version | grep -i ssl
curl 7.36.0 (x86_64-unknown-linux-gnu) libcurl/7.36.0 CyaSSL/2.9.0 zlib/1.2.3
Features: IPv6 Largefile SSL libz 
[root@localhost curl-7.36.0]#

在這里插入圖片描述

試錯歷史腳本

make distclean./configure --enable-all --enable-opensslextra --enable-static --disable-shared --prefix=/usr/local/wolfssl-5.8.2
make
make install./configure --enable-opensslextra \--enable-all \--enable-tls13 \--enable-alpn \--enable-sni \--enable-curl \--enable-crl \--disable-crl-monitor \--enable-static --disable-shared --prefix=/usr/local/wolfssl-5.8.2gcc -I/usr/local/wolfssl-5.8.2/include -L/usr/local/wolfssl-5.8.2/lib test_wolfssl.c -lwolfssl -o test_wolfssl -lpthread -lm1029  ls          ./configure --enable-opensslextra \--enable-all \--enable-tls13 \--enable-alpn \--enable-sni \--enable-ecc \--enable-supportedcurves \--enable-session-ticket \--enable-ocsp \--enable-curl \--enable-des3 \--enable-aesgcm \--enable-aesccm \--disable-crl-monitor \--enable-static --disable-shared --prefix=/usr/local/wolfssl-5.8.2 \CFLAGS="-DHAVE_TLS_EXTENSIONS -DHAVE_SUPPORTED_CURVES -DHAVE_EXTENDED_MASTER -DHAVE_SNI -DHAVE_ALPN"./configure --disable-shared \
--enable-static \
--with-wolfssl=/usr/local/wolfssl-5.8.2 \
--prefix=/usr/local/tiny-curl-8.4.0 \
LDFLAGS="-L/usr/local/wolfssl-5.8.2/lib -lwolfssl  -lpthread -lm" \--disable-ldap --disable-ldaps \
CPPFLAGS="-I/usr/local/wolfssl-5.8.2/include -DSHA256_DIGEST_LENGTH=32" \
--verbose
cat > test_wolfssl.c << 'EOF'
#include <wolfssl/options.h>
#include <wolfssl/ssl.h>
#include <stdio.h>int main() {printf("WolfSSL test: %s\n", wolfSSL_lib_version());return 0;
}
EOF

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/95191.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/95191.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/95191.shtml

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

相關文章

Redis-08 SpringBoot集成Redis常見問題

SpringBoot集成Redis的教程網上很多&#xff0c;總體來說就是三個步驟&#xff1a;添加依賴、修改配置文件、自定義Redis配置類&#xff08;自定義序列化器&#xff09;&#xff0c;具體步驟可自行搜索&#xff0c;本文主要解惑集成中的常見疑問。 1&#xff0c;選擇什么依賴&…

數據結構:選擇排序 (Selection Sort)

目錄 從學生排隊開始 算法的初始狀態和核心操作 代碼的逐步完善 第一階段&#xff1a;定義函數框架和外層循環 第二階段&#xff1a;實現“尋找最小元素”的邏輯&#xff08;內層循環&#xff09; 第三階段&#xff1a;完成“交換”操作 復雜度與特性分析 時間復雜度 (…

Django Admin 管理工具

一、簡介Django Admin 是 Django 框架最受歡迎和強大的特性之一。它是一個自動生成的管理后臺&#xff0c;允許開發者無需或僅需編寫少量代碼&#xff0c;就能對網站的數據模型&#xff08;數據庫中的表&#xff09;進行直觀的增、刪、改、查&#xff08;CRUD&#xff09;操作。…

園區智慧水電管理系統:讓能源管理從“成本黑洞”變“利潤引擎”

園區智慧水電管理系統&#xff0c;是一套專為產業園區、科技園、企業總部等大型空間設計的集智能計量、遠程管控、自動計費、能耗分析于一體的數字化能源解決方案。它用技術手段解決水電管理中的“抄表難、收費亂、浪費多、數據缺”四大頑疾&#xff0c;真正實現降本、提效、控…

DeepSeek應用技巧-通過MCP打造數據分析助手

本文章將通過MCP服務來打造一個數據分析助手&#xff0c;可以直接讀取本地的excel或csv的文件&#xff0c;然后生成可視化的報告并保存在本地&#xff0c;十分有應用和實踐的價值&#xff0c;話不多說&#xff0c;我們開始手把手搭建。一、知識應用&#xff08;1&#xff09;Fu…

React Hooks 完全指南:從基礎到高級的實戰技巧

概述 React Hooks 是 React 16.8 引入的新特性&#xff0c;允許在函數組件中使用狀態和其他 React 特性。根據數據的使用場景和更新機制&#xff0c;可以將 Hooks 分為三大類&#xff1a; 1. 保存只讀數據 useMemo 用途&#xff1a; 緩存計算結果&#xff0c;避免重復計算 …

PCIe 6.0 vs 5.0:帶寬翻倍背后的技術革命

PCIe 6.0 vs 5.0&#xff1a;帶寬翻倍背后的技術革命在數據中心、AI計算和高速存儲需求爆炸式增長的今天&#xff0c;傳統接口帶寬已成為系統性能提升的瓶頸。PCIe 6.0的推出正是為了解決這一挑戰&#xff0c;它通過革命性的技術創新&#xff0c;在保持向后兼容的同時實現了帶寬…

突破傳統企業組網瓶頸:某科技公司智能組網服務項目深度解析

在現代企業的數字化轉型過程中&#xff0c;穩定、高效、安全的網絡基礎設施已成為業務發展的關鍵。然而&#xff0c;傳統組網方案往往面臨諸多挑戰&#xff0c;如網絡性能不足、組網復雜度高、擴展性不佳、以及安全防護薄弱等問題。為了解決這些痛點&#xff0c;某科技公司通過…

ubuntu單機實現10000個連接同時在線測試

連接前 成功連接后 前端測試連接腳本: c_5k.sh !/bin/bash ulimit -n 100000 # client_simulator.sh SERVER_IP="192.168.0.106" SERVER_PORT=8080 MAX_CLIENTS=5000 BATCH_SIZE=100echo "Starting $MAX_CLIENTS clients to $SERVER_IP:$SERVER_PORT"…

防護墻技術(一):NAT

###源NAT基本原理 NAT&#xff08;Network Address Translation&#xff09;網絡地址轉換技術 源NAT技術對IP報文的源地址進行轉換&#xff0c;將私有IP地址轉換為公網IP地址&#xff0c;使大量私網用戶可以利用少量公網IP地址訪問internet&#xff0c;大大減少對公網IP的消耗 …

動態規劃2(c++)

酒鬼#include <bits/stdc.h> using namespace std; int main() {int n;cin>>n;int a[10010];for(int i 1;i<n;i){cin>>a[i];}int dp[1010][5] {0};dp[0][0] 0;dp[1][0] 0;dp[1][1] a[1];dp[1][2] 0;dp[2][0] a[1];dp[2][1] a[2];dp[2][2] a[1]a[…

「LangChain 學習筆記」LangChain大模型應用開發:代理 (Agent)

「LangChain大模型應用開發」 系列文章目錄&#xff1a; LangChain大模型應用開發&#xff1a;模型&#xff0c;提示和輸出解釋器 LangChain大模型應用開發&#xff1a;儲存(Memory) LangChain大模型應用開發&#xff1a;模型鏈&#xff08;Chains&#xff09; LangChain大模…

python pyqt5開發DoIP上位機【介紹】

目錄文章合集一、核心功能概述二、主要模塊解析1. 導入的庫2. 輔助函數3. DOIP協議處理&#xff08;DOIPProtocol類&#xff09;4. 網絡工具&#xff08;NetworkUtils類&#xff09;5. 通信線程&#xff08;DOIPCommunicationThread類&#xff09;6. UDS命令輸入組件&#xff0…

從零實現一個可擴展的規則解析引擎 —— 支持 AND/OR 優先級、短路求值與多類型運算符

在日常業務開發中&#xff0c;我們經常需要基于一些“規則”來決定程序的走向。比如&#xff1a; 客服機器人 根據用戶問題領域和復雜度選擇不同的模型&#xff1b;營銷系統 根據用戶畫像匹配不同優惠券&#xff1b;風控引擎 根據請求參數、時間、分值判定是否放行。 這些規則往…

Preprocessing Model in MPC 3 - 基于同態加密的協議 - Over Rings 環

參考論文&#xff1a;SoK: Multiparty Computation in the Preprocessing Model MPC (Secure Multi-Party Computation) 博士生入門資料。抄襲必究。 本系列教程將逐字解讀參考論文(以下簡稱MPCiPPM)&#xff0c;在此過程中&#xff0c;將論文中涵蓋的40篇參考文獻進行梳理與講…

uni-app 跨平臺項目的 iOS 上架流程:多工具組合的高效協作方案

跨平臺框架的興起&#xff0c;讓許多團隊選擇 uni-app 來開發移動應用。 一套代碼多端運行&#xff0c;確實大大降低了研發成本&#xff0c;但當項目進入 iOS 上架階段 時&#xff0c;很多團隊依舊面臨挑戰&#xff1a;證書復雜、環境不統一、上傳繁瑣。 本文結合實戰經驗&…

掌握 Linux 文件權限:chown 命令深度解析與實踐

在 Linux 系統的日常運維與開發工作里&#xff0c;文件權限管理是保障系統安全、規范文件訪問的關鍵環節。其中&#xff0c;chown 命令作為修改文件所有者及關聯組的核心工具&#xff0c;對精準把控文件權限起著重要作用。接下來&#xff0c;我們將全面拆解 chown 命令&#xf…

計算機算術7-浮點基礎知識

1. 浮點表示其中b表示基底&#xff0c;e表示指數&#xff0c;s表示尾數&#xff0c;注意在s的表示過程中&#xff0c;有個隱藏1.同時還有個符號位從下面這個圖可以看出&#xff0c;向上溢出和向下溢出的概念&#xff0c;overflow表示的是數的絕對值超過了最大的表示范圍&#x…

設計模式8-命令模式

定義 Command Partern: 將一個請求封裝成一個對象&#xff0c;從而讓你使用不同的請求把客戶端參數化&#xff0c;對請求排隊或者記錄請求日志&#xff0c;可以提供命令的撤銷和恢復功能。&#xff08;核心思想是將“動作”與“執行者”解耦&#xff09; 場景 GUI&#xff1a;…

數據結構(順序表力扣刷題)

1.移除元素 給你一個數組 nums 和一個值 val&#xff0c;你需要 原地 移除所有數值等于 val 的元素。元素的順序可能發生改變。然后返回 nums 中與 val 不同的元素的數量。 假設 nums 中不等于 val 的元素數量為 k&#xff0c;要通過此題&#xff0c;您需要執行以下操作&…