iOS 生成通用 OpenSSL 庫

2021-07-27 02:51:08 字數 2665 閱讀 1335

伺服器php端定義介面,需要傳遞使用rsa加密的引數,為此ios端需要引入openssl庫,以便進行rsa加密、解密。本文將描述,在ios開發過程中如何生成虛擬機器、真機通用的openssl庫。

笨方法生成通用openssl庫

何為通用:使真機和模擬器均可使用生成後的openssl庫

二、編譯openssl

進入openssl目錄,建立相應子資料夾,用於存放編譯後的不同庫。

準備操作

建立目錄shell 12

# 用於儲存不同架構下,使用openssl編譯後的靜態資源檔案包

mkdir openssl_arm64 openssl_armv7 openssl_armv7s openssl_i386

文字替換

進入openssl目錄下,開啟 crypto/ui/ui_openssl.c 檔案,搜尋 static volatile sig_atomic_t intr_signal; 替換為 static volatile int intr_signal

編譯模擬器使用的openssl庫

配置openssl資訊

shell

12# openssldir選項是其編譯後儲存的路徑,將其設定為剛才建立的openssl_i386

./configure bsd-generic32 --openssldir=/users/***/openssl-1.0.2/openssl_i386

更新makefileini 12

345# 開啟makefile檔案,搜尋 cc= gcc,將其替換為下面內容

# 在cc=的下一行,內容為 cflag= 配置項,在其等號後面的空格後「加入」如下內容(原cflag後面內容不刪除,保留不變)

編譯退出makefile檔案的編譯,儲存makefile檔案。

在終端執行如下命令:

shell

123make

make install

真機使用的openssl庫

真機使用的openssl庫,與上述生成模擬器使用庫的步驟一樣,微調如下:

配置openssl資訊 每次生成不同環境的openssl庫,需要重新配置configure。分別在終端實現如下命令:

shell 12

345# 先清空上次編譯配置

make clean

# 更換儲存目錄

./configure bsd-generic32 --openssldir=/users/***/openssl-1.0.2/openssl_***x

更新makefile檔案

ini

1234

56# 開啟makefile檔案,搜尋 cc= gcc,將其替換為下面內容 arch後面為真機所支援架構:arm64 arm7v armv7s

# 在cc=的下一行,內容為 cflag= 配置項,在其等號後面的空格後「加入」如下內容(原cflag後面內容不刪除,保留不變)

三、合併不同架構openssl庫

現在已經生成模擬器及真機環境所需openssl庫,需要將其合併。進入到備份相關檔案的目錄中,執行如下命令即可合併:

shell12

3456

78# 合併檔案

lipo -create openssl_arm64/lib/libcrypto.a openssl_armv7/lib/libcrypto.a openssl_armv7s/lib/libcrypto.a openssl_i386/lib/libcrypto.a -output ./libcrypto.a

lipo -create openssl_arm64/lib/libssl.a openssl_armv7/lib/libssl.a openssl_armv7s/lib/libssl.a openssl_i386/lib/libssl.a -output ./libssl.a

width="336" height="280" frameborder="0" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" id="aswift_1" name="aswift_1" style="left: 0px; position: absolute; top: 0px;">

# 檢視合併後庫支援的架構資訊

lipo -info libcrypto.a

lipo -info libssl.a

快捷生成通用openssl庫

從上述操作流程大家可看出,真機環境下,每次編譯的流程相同,無非替換-arch後面內容。再考慮模擬器環境,可以通過指令碼快速生成需要編譯的環境。

github上,已經有外國友人幫咱們做好了相應的指令碼,我們可以愉快安靜等待程式自動生成適用於真機及模擬器的openssl庫。具體請見:

shell 1

2# 好安靜的~

./build-libssl.sh

報錯說明

在編譯過程後(make執行過後),可能會有如下報錯資訊,可以忽略!

clang: warning: argument unused during compilation: 『-pthread』

****** all in tools…

make[1]: nothing to be done for `all』.

openssl生成v3 openssl生成證書

目標是生成伺服器證書 證書鏈是ca根 abc 在win10安裝openssl win64測試如下 生成根openssl genrsa out c t ca.key 2048 生成私鑰 openssl req x509 new nodes key c t ca.key subj cn qq.com o...

OpenSSL生成證書

要生成證書的目錄下建立幾個檔案和資料夾,有.democa democa newcerts democa index.txt democa serial,在serial檔案中寫入第乙個序列號 01 1.生成x509格式的ca自簽名證書 opensslreq new x509 keyout ca.key...

openssl 生成 證書

x509 證書一般會用到三類文,key,csr,crt。key是私用金鑰 openssl 格,通常是 rsa演算法。csr是證書請求檔案,用於申請證書。在製作 csr檔案的時,必須使用自己的私鑰來簽署申,還可以設定乙個金鑰。crt是ca 認證後的證書文,windows 下面的,其實是 crt 簽署人...