iOS 生成通用 OpenSSL 库
2016-08-11 14:01
232 查看
服务器PHP端定义接口,需要传递使用RSA加密的参数,为此IOS端需要引入openssl库,以便进行RSA加密、解密。本文将描述,在IOS开发过程中如何生成虚拟机、真机通用的openssl库。
笨方法生成通用openssl库
何为通用:使真机和模拟器均可使用生成后的openssl库
一、下载openssl
通过http://www.openssl.org/source/下载openssl最新源码
二、编译openssl
进入openssl目录,创建相应子文件夹,用于存放编译后的不同库。
准备操作
创建目录Shell
# 用于存储不同架构下,使用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
# openssldir选项是其编译后存储的路径,将其设置为刚才创建的openssl_i386 ./configure BSD-generic32 --openssldir=/Users/xxx/openssl-1.0.2/openssl_i386
更新makefile
INI
# 打开makefile文件,搜索 CC= gcc,将其替换为下面内容 CC= /Applications/Xcode.app/Contents/Developer/usr/bin/gcc -arch i386 # 在CC=的下一行,内容为 CFLAG= 配置项,在其等号后面的空格后“加入”如下内容(原CFLAG后面内容不删除,保留不变) CFLAG= -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk
编译
退出makefile文件的编译,保存makefile文件。
在终端执行如下命令:
Shell
make make install
备份文件
当make install执行结束后,查看openssl_i386 文件夹是否已经生成相关内容。如果已经生成,可将openssl_i386目录整体拷贝走,用于备份。
真机使用的openssl库
真机使用的openssl库,与上述生成模拟器使用库的步骤一样,微调如下:配置OpenSSL信息
每次生成不同环境的openssl库,需要重新配置configure。分别在终端实现如下命令:
Shell
# 先清空上次编译配置 make clean # 更换存储目录 ./configure BSD-generic32 --openssldir=/Users/xxx/openssl-1.0.2/openssl_xxxx
更新makefile文件
INI
# 打开makefile文件,搜索 CC= gcc,将其替换为下面内容 arch后面为真机所支持架构:arm64 arm7v armv7s CC= /Applications/Xcode.app/Contents/Developer/usr/bin/gcc -arch armv7s # 在CC=的下一行,内容为 CFLAG= 配置项,在其等号后面的空格后“加入”如下内容(原CFLAG后面内容不删除,保留不变) # 配置项中,指向真机SDK,而非模拟器SDK /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk CFLAG= -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk
三、合并不同架构openssl库
现在已经生成模拟器及真机环境所需openssl库,需要将其合并。进入到备份相关文件的目录中,执行如下命令即可合并:Shell
# 合并文件 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 # 查看合并后库支持的架构信息 lipo -info libcrypto.a lipo -info libssl.a
快捷生成通用openssl库
从上述操作流程大家可看出,真机环境下,每次编译的流程相同,无非替换-arch后面内容。再考虑模拟器环境,可以通过脚本快速生成需要编译的环境。GitHub上,已经有外国友人帮咱们做好了相应的脚本,我们可以愉快安静等待程序自动生成适用于真机及模拟器的openssl库。具体请见: https://github.com/x2on/OpenSSL-for-iPhone
Shell
# 好安静的~ ./build-libssl.sh
报错说明
在编译过程后(make执行过后),可能会有如下报错信息,可以忽略!clang: warning: argument unused during compilation: ‘-pthread’
making all in tools…
make[1]: Nothing to be done for `all’.
相关文章推荐
- iOS 生成通用 OpenSSL 库
- iOS -- OpenSSL生成RSA双密匙+签名证书(流程)
- 关于用Openssl生成pem文件用于Go语言实现ios推送
- 使用OpenSSL生成CSR文件,并申请全球通用SSL证书
- 使用OpenSSL生成CSR文件,并申请全球通用SSL证书
- Openssl 证书生成[httpIP 8660simple_download_zh下载手机ios(ios7.0)的手机客户端失败]问题修改
- iOS项目生成通用Windows应用
- XE7 & IOS开发之开发账号(2):发布证书、发布授权profile的申请使用,附Ad hoc真机调试、生成ipa文件演示(XCode所有版本通用,有图有真相)
- WinObjc - 使用iOS项目生成通用Windows应用
- mac自带的openssl 生成公钥私钥(包括java,iOS端各平台支持的证书转换)
- 【IOS】 通过 OpenSSL 和系统内置方法生成 RSA 中的公钥跟私钥
- iOS开发--使用OpenSSL生成私钥和公钥的方法
- OpenSSL使用1(用OpenSSL生成自签名证书在IIS上搭建Https站点)(用于iOS的https访问)
- IOS 通用颜色快速生成代码
- "iOS push全方位解析(二)【译文】"——生成OpenSSL证书,Provisioning Profile
- iOS开发——openssl生成CSR (pkcs10) 请求证书
- [iOS]通过openssl库生成pkcs#10证书
- 利用C#反射为DO映射对象数组生成一个用于列表显示的通用解决方案
- 一个命令搞定Java Web通用添删改查及分页代码生成(音视频)
- 通用存储过程: 生成某一个表分页的存储过程