OpenSSL靜態庫編譯及使用(linux環境)

来源:http://www.cnblogs.com/yczcc/archive/2017/09/25/7594322.html
-Advertisement-
Play Games

轉載需註明來源:http://www.cnblogs.com/yczcc/p/7594322.html openssl官網:https://www.openssl.org 下載源碼 源碼地址為:https://www.openssl.org/source/old/;當前最新版本為 1.1.0f,ht ...


轉載需註明來源:http://www.cnblogs.com/yczcc/p/7594322.html

openssl官網:https://www.openssl.org

下載源碼

源碼地址為:https://www.openssl.org/source/old/;當前最新版本為 1.1.0f,https://www.openssl.org/source/old/1.1.0/openssl-1.1.0f.tar.gz

源碼編譯

解壓之後,進入源碼目錄openssl-1.1.0f,執行如下命令。因為只需要編譯靜態庫,也沒有特殊要求,所以使用的編譯選項配置很簡單:

./config -fPIC no-shared
make

其中,-fPIC:指示生成位置無關的代碼,這個選項是在把openssl生成的靜態庫鏈接到動態庫的時候提示錯誤添加的;no-shared:指示生成靜態庫。

最終在當前目錄下會編譯出libssl.a和libcrypto.a兩個庫文件,在開發的時候只需要包含頭件並鏈接這兩個庫就可以了。

開發使用

有一點需要註意的是編譯生成的庫libssl.a和libcrypto.a存在依賴關係,要把libssl.a放在libcrypto.a前面,不然可能出現未定義的錯誤。庫的頭文件在openssl-1.1.0f/include/openssl目錄中。

將openssl-1.1.0f/include/openssl目錄拷貝到自己模塊的頭文件目錄(./inc)下,將libssl.a和libcrypto.a靜態庫拷貝到自己模塊的庫文件目錄(./lib)下,在makefile中添加頭文件目錄和lib庫:

INCLUDE += ******** -I./inc
LIB += ******* -L./lib -lssl -lcrypto

在使用openssl庫函數時,添加如下頭文件(按需添加)即可:

#include <openssl/bio.h>
#include <openssl/ssl.h> 
#include <openssl/err.h>

 

附錄:

關於openssl的編譯選項的解讀:

全局選項

第一類是全局性選項:

--openssldir=OPENSSLDIR 安裝目錄,預設是 /usr/local/ssl 。

--prefix=PREFIX 設置 lib include bin 目錄的首碼,預設為 OPENSSLDIR 目錄。

--install_prefix=DESTDIR 設置安裝時以此目錄作為"根"目錄,通常用於打包,預設為空。

zlib
zlib-dynamic
no-zlib 使用靜態的zlib壓縮庫、使用動態的zlib壓縮庫、不使用zlib壓縮功能。

threads
no-threads 是否編譯支持多線程的庫。預設支持。

shared
no-shared 是否生成動態連接庫。

asm
no-asm 是否在編譯過程中使用彙編代碼加快編譯過程。

enable-sse2
no-sse2 啟用/禁用SSE2指令集加速。如果你的CPU支持SSE2指令集,就可以打開,否則就要關閉。

gmp
no-gmp 啟用/禁用GMP庫

rfc3779
no-rfc3779 啟用/禁用實現X509v3證書的IP地址擴展

krb5
no-krb5 啟用/禁用 Kerberos 5 支持

ssl
no-ssl
ssl2
ssl3
no-ssl2
no-ssl3
tls
no-tls 啟用/禁用 SSL(包含了SSL2/SSL3) TLS 協議支持。

dso
no-dso 啟用/禁用調用其它動態鏈接庫的功能。[提示]no-dso僅在no-shared的前提下可用。

[提示]為了安裝Apache的mod_ssl成功,SSLv2/SSLv3/TLS都必須開啟。

演算法選項

第二類用於禁用crypto目錄下相應的子目錄(主要是各種演算法)。雖然理論上這些子目錄都可以通過"no-*"語法禁用,但是實際上,為了能夠最小安裝libcrypto,libssl,openssl,其中的大部分目錄都必須保留,實際可選的目錄僅有如下這些:

no-md2,no-md4,no-mdc2,no-ripemd 這些都是摘要演算法,含義一目瞭然。

no-des,no-rc2,no-rc4,no-rc5,no-idea,no-bf,no-cast,no-camellia 這些都是對稱加密演算法,含義一目瞭然。"bf"是"Blowfish"的意思。

no-ec,no-dsa,no-ecdsa,no-dh,no-ecdh 這些都是不對稱加密演算法,含義一目瞭然。

no-comp 數據壓縮演算法。因為目前實際上並沒有壓縮演算法,所以只是定義了一些空介面。

no-store 對象存儲功能。

更多細節可以查看 crypto/store/README 文件。

轉載需註明來源:http://www.cnblogs.com/yczcc/p/7594322.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ...
  • SSH: (Secure Shell)的縮寫,是建立在應用層和傳輸層基礎上的安全協議,SSH是目前 較為可靠的專為遠程登錄會話和其他網路服務提供安全性的協議,數據在使用ssh方式傳輸的時候是加密的,即使別人截獲也不知道是什麼數據;為客戶端提供安全的Shell環境,用於遠程管理,預設埠:TCP 22 ...
  • 我在使用atheros板子的過程中,在使用同一個CPU晶元的基礎上,需要把flash從8MB更換為16MB,把我的舊的內核和文件系統套在新的uboot上面,內核啟動的時候出現了以下錯誤,文件系統掛載不了。 JFFS2 warning: (1) jffs2_sum_process_sum_data: ...
  • 在應用程式獲取視頻數據的流程中,都是通過 ioctl 命令與驅動程式進行交互,常見的 ioctl 命令有: 1 VIDIOC_QUERYCAP /* 獲取設備支持的操作 */ 2 VIDIOC_G_FMT /* 獲取設置支持的視頻格式 */ 3 VIDIOC_S_FMT /* 設置捕獲視頻的格式 * ...
  • 設置密碼 設置時間 註意大小寫 顯示文件類型 查看文件 查看歷史命令記錄 獲取幫助 pinfo 查看textinfo's GNU文檔系統 ...
  • shell shell命令分為兩種:分別是內部命令和外部命令。 Linux中,預設的shell是bash 系統中的shell 控制台的名詞: 標準Linux命令: bash組合鍵: ...
  • windows 7安裝 準備 1、iso系統鏡像文件(我一般選用純凈版) 2、Windows7-USB-DVD-Download-Tool-Installer-en-US(啟動盤製作) 3、準備4G以上空U盤,之後的過程中會被格式化,不要放重要文件 4、C盤(系統盤)留有8G以上空間 5、備份網卡驅 ...
  • ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...