openssl qt 生成秘钥_OpenSSL证书生成(Windows环境)
本文根据这篇博文(http://lovesea.blog.51cto.com/382446/95572)和《OpenSSL与网络信息安全:基础、结构和指令》一书整理。关于OpenSSL在Windows下的编译安装,参见上一篇文章。
准备工作:
1、添加配置文件(openssl.cnf)的环境变量:OPENSSL_CONF。配置文件可从OpenSSL解压后根目录下的apps目录下拷贝,再自行修改配置。
2、创建ssl目录,在ssl目录下创建newcerts目录、index.txt空文件、serial文件,在serial文件中写入序列号01。
3、打开配置文件(openssl.cnf),找到[CA_default]字段,将dir = ./demoCA改为dir = . 。
4、以管理员身份运行命令提示符,进入新建的ssl目录;输入openssl,进入openssl指令环境,不然后面每个命令前面都要加上openssl。
正式开工:
1、生成自签名根证书。
(1)、生成根证书私钥(ca.key)。生成一个2048位的RSA私钥,并输出到ca.key文件中,对输出密钥不进行加密,指令为:genrsa -out ca.key 2048 。
可以以加密方式生成私钥,加密算法可以用des、des3、idea、aes128、ads192和aes256。这里选用了aes256:genrsa -aes256 -out ca.key 2048 。运行时会提示输入密码。
可以给未加密的私钥添加口令:rsa -aes256 -in ca.key -out ca.key 。
也可以去除加密私钥的口令:rsa -in ca.key -out ca.key 。
(2)、生成有效期为90天的根证书(ca.crt)。x509选项让指令生成一个自签名根证书二不是输出一个证书请求。
req -new -x509 -days 90 -key ca.key -out ca.crt
2、生成服务器端私钥和证书。
(1)、生成服务器私钥(server.key):
genrsa -aes256 -out server.key 2048 。
(2)、生成服务器证书请求文件(server.csr):
req -new -key server.key -out server.csr 。
(3)、用CA证书给服务器签证,限定证书(server.crt)有效期为2012年7月29日到2013年1月1日。date的格式为YYMMDDHHMMSSZ,即“年月日时分秒Z” 。
ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -startdate 120729000000Z -enddate 130101000000Z
3、生成客户端私钥和证书。
(1)、生成客户端私钥(client.key):
genrsa -aes256 -out client.key 2048 。
(2)、生成客户端证书请求文件(client.csr):
req -new -key client.key -out client.csr 。
(3)、用CA证书给客户端签证,限定证书(client.crt)有效期为2012年8月8日到2013年8月8日。
ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -startdate 120808000000Z -enddate 130808000000Z
所有证书生成完毕。
应用:
1、单向验证,客户验证服务器端,例如https服务器。
服务器端需两个文件:server.crt,server.key ;
客户端如浏览器需要一个文件:ca.crt。
2、如果需要自己实现双向认证。
服务器端需要的文件为:ca.crt,server.crt,server.key ;
客户端需要的文件为: ca.crt,client.crt,client.key 。
**** 2017-05-26 补充 ***
其中客户端的 client.truststore 文件对应上面的 ca.crt ,client.p12文件对应上面的 client.crt,client.key 。
2、Qt HTTPS SSL 双向验证
p12文件是证书和私钥的合体,Qt貌似只能证书和私钥分开使用。
如果需要用 Qt 对接上面 Android 的服务端,
可以用 openssl 把 client.p12 中提取出用户证书和私钥;
用 java 的 keytool 把 jks 文件(client.truststore)转换成 p12文件,再用 openssl 提取根证书。
3、Qt的 QSslCertificate::importPkcs12 函数只能加载包含私钥的 p12 文件,加载不包含私钥的 p12 文件会崩溃。
相关阅读:
*** walker ***
openssl qt 生成秘钥_OpenSSL证书生成(Windows环境)相关推荐
- QT使用AES加密MAC地址生成秘钥文件并存取
1.下载QT第三方AES库 https://github.com/bricke/Qt-AES 2.拷贝头文件 将aesni下的头文件添加到工程的头文件中 将AES库文件下的qaesencryption ...
- mysql通过ssl的方式生成秘钥
-- mysql ssl 生成秘钥 1 check ssl是否已经开启mysql> show variables like '%ssl%'; +---------------+--------- ...
- linux生成license,License生成秘钥
一 License 简介 开发的软件产品在交付使用的时候,往往会授权一段时间的试用期,这个时候license就派上用场了.不同于在代码中直接加上时间约束,需要重新授权的时候使用license可以避免修 ...
- PGP生成秘钥对及应用
PGPDesktop下载链接:https://download.csdn.net/download/hfy19981024/10438982 1.下载安装PGP 安装很简单,根据安装包中的步骤一步一步 ...
- java中secretkey,java生成秘钥key,并保存秘钥到文件中
本例子采用的是Java的对称加密其中的一种方式(3DES),其他的加密方式也类似.生成一个key秘钥,发送方使用生成的key秘钥进行加密操作,然后把生成的key秘钥保存到文件中,提供给需要解密的一方使 ...
- java项目的秘钥怎么保存_java生成秘钥key,并保存秘钥到文件中
本例子采用的是Java的对称加密其中的一种方式(3DES),其他的加密方式也类似.生成一个key秘钥,发送方使用生成的key秘钥进行加密操作,然后把生成的key秘钥保存到文件中,提供给需要解密的一方使 ...
- Shiro 生成秘钥
Shiro 生成秘钥[官方] import org.apache.shiro.codec.Base64;import javax.crypto.KeyGenerator; import javax.c ...
- crypto-js 前端DES加密/解密、生成秘钥 详解
DES概述 DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非 ...
- 怎么用git在本地生成密钥_git上传代码到远程仓库(附:生成秘钥)
1. 一开始使用git时,可能要使用到相关的密钥 生成秘钥的方法:(1)ssh-keygen -t rsa -C "github注册的邮箱名" 随后一直enter就好,提示输入密码 ...
最新文章
- [Win7]如何还原[.bat]文件关联
- 解决导入Android例子时“Unable to resolve target 'android-x' ”的错误
- 对DbRuleAuthorizationProvider的修改
- Delphi的笔记整理(一)
- 浙江师范计算机考研怎么样,浙江师范大学考研难吗?一般要什么水平才可以进入?...
- leetcode 148. Sort List | 148. 排序链表(最优解归并排序,O(1)空间)
- 安卓案例:利用定时器实现逐帧动画
- scau 8633 回文划分
- k8s部署应用nginx
- 海外服务器配置多少带宽比较合适?
- gitee和gitHub的命令和详细步骤操作
- php幻灯片图片不显示不出来,织梦dedecms默认模板幻灯片无法显示图片的解决方法...
- 剑指OFFER思路总结与代码分享——树篇(Java实现)
- 强烈安利:小顽简报,一款高效实用的PPT新插件
- Symbian OS应用编程图形篇之架构
- 电大本科计算机应用基础网考答案,中央电大本科计算机应用基础网考试题选择题及答案...
- 一文读懂上拉电阻:工作原理和阻值确定
- 爬虫系列 一次采集.NET WebForm网站的坎坷历程
- 设计,看上去很美 wayfarer
- 阿里云海外服务器网络评测
热门文章
- spark业务开发-列选择
- 12-100V降压12V5V3.3V/3A恒压电动车车载设备电源IC
- 微型计算机CLD什么意思,房地产里说的CLD是什么意思
- 利用计算机提高数学课堂教学,运用信息技术提高数学课堂教学实效
- 福美来轿车遥控钥匙匹配方法 转载
- go语言 c# 混合编程 pdf,【C# 调用 Go 语言】0x1 Hello Golang-Go语言中文社区
- linux去掉文件空行,linux下删除文本的空行
- dev/watchdog和dev/watchdog0 是同一个设备
- 【山东日照seo招聘】网站SEO优化中注意哪些小细节?
- 信息学奥赛C++语言:美人松的高度2