2021-05-12 14:32:11
Linux下OpenSSL靜態庫編譯及使用
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 檔案。
更多OpenSSL相關內容可以檢視以下的有用連結:
使用 OpenSSL 命令列構建 CA 及證書 http://www.linuxidc.com/Linux/2015-10/124682.htm
Ubuntu安裝OpenSSL http://www.linuxidc.com/Linux/2015-10/124001.htm
通過OpenSSL提供FTP+SSL/TLS認證功能,並實現安全資料傳輸 http://www.linuxidc.com/Linux/2013-05/84986.htm
Linux下使用OpenSSL生成證書 http://www.linuxidc.com/Linux/2015-05/117034.htm
利用OpenSSL簽署多域名證書 http://www.linuxidc.com/Linux/2014-10/108222.htm
在OpenSSL中新增自定義加密演算法 http://www.linuxidc.com/Linux/2015-08/121749.htm
相關文章