RSA非对称加密,使用OpenSSL生成证书,iOS加密,java解密

最近换了一份工作,工作了大概一个多月了吧。差不多得有两个月没有更新博客了吧。在新公司自己写了一个iOS的比较通用的可以架构一个中型应用的不算是框架的一个结构,并已经投入使用。哈哈

说说文章标题的相关的内容吧

很多对安全要求比较高的应用都要使用加密,加密后与后端沟通数据,这样能防止被别人截获数据包,直接把借口的参数数据暴露。我上一家公司是做P2P互联网金融的,就使用了多种加密方式,有对称的也有非对称的。最近新公司的APP也有意向使用加密,思考了一下,最成熟的解决方案就是使用RSA非对称的加密了。就不介绍非对称加密是怎么回事了,不了解的自行Google或者bing。生成公钥私钥证书我使用的是OpenSSL的解决方案,没错,就是老罗捐了几次款,爆出过心脏滴血漏洞的OpenSSL。

先说说证书的生成吧,我使用的是MAC,上面自带了OpenSSL,当然我删除了,又用HomeBrew安装了一个较新的版本。又看了下Linux上也自带了openssl,windows上没有

1.终端输入openssl,进入openssl状态

2.生成一个1024位的私钥:genrsa -out rsa_private_key.pem 1024

3.利用私钥生成JAVA支持的PKCS8类型的私钥:pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out pkcs8_private_key.pem

4.生成JAVA支持的PKCS8二进制类型的私钥:pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform DER -nocrypt -out pkcs8_private_key.der

5.生成公钥:rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

6.生成iOS支持的der证书,其间用到了证书请求和自签署根证书

  6.1.创建证书请求:req -new -out cert.csr -key rsa_private_key.pem  (其间会要求填写国家地区公司信息等,随便填写OR认真填写都不影响证书使用)

  6.2.创建X509的自签署跟证书(iOS支持X509,有效期3650天):x509 -req -in cert.csr -out rsa_public_key.der -outform der -signkey rsa_private_key.pem -days 3650

完成了以上的步骤后应该在你所在的目录下生成了6个文件,其中pem的文件都是文本类型的,都可以使用文本编辑器或者cat命令查看。der的都是二进制的文件了,看不了。

以上的都完了,推荐打开github的链接,一个不认识的人写的,里面包含了java端和iOS的实现方式。https://github.com/BabyDuncan/RSA_OC_JAVA

但是有两点是需要注意的:

1.java那个使用公钥的部分,应该使用上述的第4步生成的 pkcs8_private_key.der 文件,不要眼花啊

2.OC中在bundle中找不到der类型的文件,需要改一下上述6.2生成的 rsa_public_key.der 文件的后缀为 .cer 才可以。

完成上述的操作后就可以正常的使用了。

插播一句:如果在java中想使用 pkcs8_private_key.pem 文件的话,请自行把那段代码,没错就是那段代码(至于到底是哪段,自己找)替换成下面的这段

1            byte[] privateKeyData = Files.readAllBytes(
2                     Paths.get("/Users/ald1/Documents/workspace/aaa/src/pkcs8_private_key.pem"));
3             byte[] decodedKeyData = Base64.decodeBase64(new String(privateKeyData)
4                       .replaceAll("-----\\w+ PRIVATE KEY-----", "")
5                       .replace("\n", ""));
6                   KeyFactory keyFactory = KeyFactory.getInstance("RSA");
7             EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(decodedKeyData);

当然,文件的路径自行脑补。

再附送几个调研此次成果的链接,可能相关性不是很大,看下就好

OpenSSL的官网帮助:http://openssl.org/docs/manmaster/apps/rsa.html

iOS的获取公钥私钥:http://codego.net/455876/

证书转换:https://www.sslshopper.com/ssl-converter.html

随意看看会有帮助的文章:http://blog.csdn.net/as3luyuan123/article/details/16105435

            http://witcheryne.iteye.com/blog/2171850

            http://blog.chinaunix.net/uid-26729093-id-4449165.html

好了就到这吧。

时间: 2024-12-16 14:30:59

RSA非对称加密,使用OpenSSL生成证书,iOS加密,java解密的相关文章

windows下使用openssl生成证书

一:下载 使用的是0.9.8 1:openssl下载,http://www.openssl.org/source/ 2:安装vs2010,并安装 3:下载perl,http://www.activestate.com/ActivePerl,并安装. 二:安装openssl 1:解压到系统盘C:\openssl-0.9.8v 2.配置WIN32环境 打开CMD命令行,进入C:\openssl-0.9.8v目录,执行命令 perl Configure VC-WIN32 注意区分大小写 3.进入VC

使用 openssl 生成证书

转自:http://www.cnblogs.com/littleatp/p/5878763.html 使用 openssl 生成证书 一.openssl 简介 openssl 是目前最流行的 SSL 密码库工具,其提供了一个通用.健壮.功能完备的工具套件,用以支持SSL/TLS 协议的实现.官网:https://www.openssl.org/source/ 构成部分 密码算法库 密钥和证书封装管理功能 SSL通信API接口 用途 建立 RSA.DH.DSA key 参数 建立 X.509 证书

使用OpenSSL生成证书

Step 1. Create key (password protected) openssl genrsa -out prvtkey.pem 1024/2038                     (with out password protected)    openssl genrsa -des3 -out prvtkey.pem 1024/2048    (password protected) 这个命令会生成一个1024/2048位的密钥. Step 2. Create cert

再也不用“‘“使用OpenSSL生成证书”了

在百度中搜索“使用OpenSSL生成证书”,百度为您找到相关结果约74,500个,还有这么多人在找免费SSL证书,还用OpenSSL生成自签证书吗? 沃通的在线宣传要加强呀!多少站长众里寻她千百度,多少夜挑灯奋站,只为这张能支持所有浏览器的免费的SSL证书: 沃通免费SSL证书支持所有浏览器.服务器.移动终端,无需注册,10分钟颁发. 下面分享一下经验. 1.首先,移步这里快速申请网址:https://buy.wosign.com/QuickToApplyFreeSSL.html.全中文,不用注

Apache OpenSSL生成证书使用

最近在学习SSL协议,这次是基于Apache服务器自带的openssl来实现的 TLS:传输层安全协议 SSL:安全套接字层 KEY:私钥 CSR:证书签名请求,即公钥,生成证书时需要将此提交给证书机构,生成 X509 数字证书前,一般先由用户提交证书申请文件,然后由 CA 来签发证书 CRT:即证书,一般服务器证书server.crt和客户端证书client.crt都需要通过CA证书ca.crt进行签名 1.进行CA签名获取证书时,需要注意国家.省.单位需要与CA证书相同,否则会报:     

Openssl生成证书流程

Openssl生成证书流程偶然想到在内网配置https,就梳理了下利用openssl与ca生成证书的过程.生成过程分为服务端跟客户端,这里我在一台上测试.一.介绍CA是Certificate Authority的缩写,也就是认证中心.CA的功能有:颁发证书,更新证书,撤销证书和验证证书,相当于公安局的户籍部门.CA证书的作用是作身份认证.数字证书认证过程:×××办理过程: 带上户口本->当地派出所->签发证书->你去领证书 ×××办理过程: 带上户口本(证明你合法)->当地派出所(

如何利用OpenSSL生成证书

此文已由作者赵斌授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 一.前言 最近为了测试内容分发网络(Content Delivery Network,简称 CDN)添加的新功能,支持HYTTPS安全加速功能,需要对证书的有效性进行验证,于是乎需要自己生成合法的.非法的.过期的证书.接下来介绍下如何通过OpenSSL生成证书. 二.使用OpenSSL生成证书 创建证书密钥文件 openssl genrsa -des3 -out ca.key 8192 运行时会提示输入密码

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/OU=department/O=CorpName/L=beijing/ST=Haidian/C=CN" -days 36500 -out c:\t\ca.ce

HP通过OpenSSL生成证书、密钥并且加密解密数据,以及公钥,私钥和数字签名的理解

一.公钥加密 假设一下,我找了两个数字,一个是1,一个是2.我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥. 我有一个文件,不能让别人看,我就用1加密了.别人找到了这个文件,但是他不知道2就是解密的私钥啊,所以他解不开,只有我可以用数字2,就是我的私钥,来解密.这样我就可以保护数据了. 我的好朋友x用我的公钥1加密了字符a,加密后成了b,放在网上.别人偷到了这个文件,但是别人解不开,因为别人不知道2就是我的私钥,只有我才能解密,解密后就得到a.这样,我们就可以传送