RSA算法有两个作用一个是加密一个是数字签名
数字签名
发送方:
1. "报文" HASH 得到 "报文摘要"
2. "报文摘要" 用公钥加密(数字签名) + 报文 --> 发送给接收方
接收方:
1. "报文" HASH,得到 "报文摘要"
2. "数字签名" 用私钥解密,判断是否与 "报文摘要" 相同
程序开发证书生成
1. 生成私钥:
openssl genrsa -out ca.key 1024
2. 创建证书请求:
openssl req -new -key ca.key -out rsacert.csr
3. 生成证书并签名,有效期10年:
openssl x509 -req -days 3650 -in rsacert.csr -signkey ca.key -out rsacert.crt
4. 转换格式,将 PEM 格式文件转换成 DER 格式:
openssl x509 -outform der -in rsacert.crt -out rsacert.der
5. 导入P12文件:
openssl pkcs12 -export -out p.p12 -inkey ca.key -in rsacert.crt
iOS 中的相关函数
* SecKeyEncrypt - 使用公钥对数据加密
* SecKeyDecrypt - 使用私钥对数据解密
* SecKeyRawVerify - 使用公钥对数字签名进行验证
* SecKeyRawSign - 使用私钥生成数字签名
注意
* iOS中不能使用PEM格式的证书
* OpenSSL默认生成的都是PEM格式的证书