设为首页 收藏本站
查看: 828|回复: 0

[经验分享] OpenSSL证书生成(Windows环境)

[复制链接]

尚未签到

发表于 2018-6-13 09:14:50 | 显示全部楼层 |阅读模式
  本文根据这篇博文(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 补充 ***
  1、Android HTTPS SSL双向验证
  其中客户端的 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 文件会崩溃。
  

  相关阅读:
  1、Win32下VC编译OpenSSl
  2、那些证书相关的玩意儿(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等)
  3、Open*** 详细配置说明:Open***连接两个局域网(使用华硕RT-AC87U)

  5、Open*** 教程
  

  *** walker ***
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-523063-1-1.html 上篇帖子: 如何使用BE2012从磁带库中导入导出磁带 下篇帖子: Windows系统open***的搭建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表