生成RSA用的证书
2016-03-23 本文已影响1926人
倚楼听风雨wing
一、背景简介
由于公司最近要在项目上增加热修复的功能,也就是下载一段JS代码就能修复已经上线了的APP的bug.可是由于公司服务器还没有升级到HTTPS,所以在JS传输过程的的安全问题,就成了一个重大的问题,最终决定用RSA加密的方式来保证数据传输的安全性.
二、制作RSA用的证书步骤
- 环境:openssl,由于Mac自带openssl环境,所以不用安装,直接打开终端. [注:生成的证书文件都在当前路径下,可以切换路径到想要保存证书文件的文件夹下]
- 生成密钥
1024
是指定密钥的长度
openssl genrsa -out private.pem 1024
在终端输入cat private.pem
可以查看pem文件,经过查看可以知道这是一个base64编码的二进制文件. - 生成证书请求文件(公钥,组织信息,联系人信息等,这里会让你输入很多东西,只需依次输入即可,如果不知道输入什么可以随便填写)
openssl req -new -key private.pem -out rsa.csr
- 给签名后的证书设置有效期
openssl x509 -req -days 365 -in rsa.csr -signkey private.pem -out rsa.crt
- 将pem文件格式转换成der格式 [目的:pem是经过base64。系统加密的时候要使用base64解码后的二进制文件]
openssl x509 -outform der -in rsa.crt -out rsa.der
6.导出我们的私钥p12
openssl pkcs12 -export -out p.p12 -inkey private.pem -in rsa.crt
7.der
是公钥,p12
是私钥,所在的路径是:当前终端的路径.
三、证书文件如何在项目中使用
把生成的der
和p12
拖入到项目中
- (void)viewDidLoad {
[super viewDidLoad];
//RSA 非对称加密 加密 要加载公钥 解密要加载私钥
CryptorTools *tools = [CryptorTools new];
//加密
//加载公钥
NSString *path = [[NSBundle mainBundle] pathForResource:@"rsa.der" ofType:nil];
[tools loadPublicKeyWithFilePath:path];
NSString *cryptStr = [tools RSAEncryptString:@"王启镰"];
NSLog(@"王启镰RSA加密后的字符串: %@",cryptStr);
//解密
//加载私钥
path = [[NSBundle mainBundle] pathForResource:@"p.p12" ofType:nil];
/** 这里的123456就是在导出p12的时候你输入的密码 **/
[tools loadPrivateKey:path password:@"123456"];
NSString *decryptStr = [tools RSADecryptString:cryptStr];
NSLog(@"解密后的字符串: %@",decryptStr);
}
四、知识补充
非对称加密算法RSA
- 使用
公钥
加密, 使用私钥
解密 - 使用
私钥
加密, 使用公钥
解密 - 更安全[https就是用的RSA加密算法]
- 适合小数据加密
- 缺点: 加密速度慢
使用场景
一般使用RSA加密对称加密的密钥