1,双向认证测试(需要根证书,客户证书,服务器证书以及各自的私钥)(验证通信双方的身份)

openssl s_server -accept  -key certs/server.key -cert certs/server-cert.pem -CAfile certs/root-cacert.pem -Verify 
openssl s_client -connect localhost: -key certs/client.key -cert certs/client-cert.pem -CAfile certs/root-cacert.pem -showcerts
Verify return code: (ok)

2,单项认证测试(验证客户身份)

openssl s_server -accept  -key certs/server.key -cert certs/server-cert.pem
openssl s_client -connect localhost: -CAfile certs/root-cacert.pem -showcerts
Verify return code: (ok)

3,如何生成上面的证书呢(自签名证书为例)

CA证书

openssl genrsa -out certs/root-ca.key
openssl req -new -x509 -days -config ./openssl.cnf -key certs/root-ca.key -out certs/root-cacert.pem -subj "/C=CN/ST=shenzhen/O=EMQ/CN=RootCA"

服务器证书

openssl genrsa -out certs/server.key
openssl req -new -days -key certs/server.key -out certs/server-cert.csr -subj "/C=CN/ST=shenzhen/O=EMQ/CN=Server"
openssl ca -extensions v3_req -days -in certs/server-cert.csr -out certs/server-cert.pem -cert certs/root-cacert.pem -keyfile certs/root-ca.key

客户端证书

openssl genrsa -out certs/client.key
openssl req -new -days -key certs/client.key -out certs/client-cert.csr -subj "/C=CN/ST=shenzhen/O=EMQ/CN=Client"
openssl ca -extensions v3_req -days -in certs/client-cert.csr -out certs/client-cert.pem -cert certs/root-cacert.pem -keyfile certs/root-ca.key

使用根证书验证下服务器证书是否可信的

openssl verify -CAfile certs/root-cacert.pem certs/server-cert.pem

注意证书里CN=Server,身份认证过程中应用程序可能会校验这个字段的,一般这个字段为网站的域名。

第一次生成根证书的时候,

mkdir -p demoCA/newcerts
touch demoCA/index.txt
vi demoCA/serial 加入01,第二行空行

查看证书有效期

openssl x509 -in cacert.pem  -noout -dates

使用MQTT消息测试双向认证

echo -en "\x10\x0d\x00\x04MQTT\x04\x00\x00\x00\x00\x01a" | openssl s_client -connect 47.102.137.3: -key client-key.pem -cert client-cert.pem -CAfile cacert.pem -showcerts

使用openssl 工具进行双向认证测试的更多相关文章

  1. linux下Tomcat+OpenSSL配置单向&双向认证(自制证书)

    背景 由于ios将在2017年1月1日起强制实施ATS安全策略,所有通讯必须使用https传输,本文只针对自制证书,但目前尚不确定自制证书是否能通过appstore审核. 1.必须支持传输层安全(TL ...

  2. OpenSSL 双向认证

    在使用OpenSSL进行SSL双向认证时,需要在服务器和客户端配置如下接口函数: SSL_CTX_set_verify(SSL_CTX* ctx,int mode,int (*verify_callb ...

  3. openssl实现双向认证教程(服务端代码+客户端代码+证书生成)

    一.背景说明 1.1 面临问题 最近一份产品检测报告建议使用基于pki的认证方式,由于产品已实现https,商量之下认为其意思是使用双向认证以处理中间人形式攻击. <信息安全工程>中接触过 ...

  4. m.Tomcat使用openssl走APR通道配置单向和双向认证

    引用自: http://blog.csdn.net/gtuu0123/article/details/5827800(Tomcat的SSL单向认证)  http://blog.csdn.net/gtu ...

  5. 基于openssl的单向和双向认证

    1.前言 最近工作涉及到https,需要修改nginx的openssl模块,引入keyless方案.关于keyless可以参考CloudFlare的官方博客: https://blog.cloudfl ...

  6. openssl制作双向认证经过验证可行

    openssl制作双向认证经过验证可行 http://www.360doc.com/content/12/0524/15/2150778_213390447.shtml 2012-05-24  履历馆 ...

  7. Https、OpenSSL自建CA证书及签发证书、nginx单向认证、双向认证及使用Java访问

    0.环境 本文的相关源码位于 https://github.com/dreamingodd/CA-generation-demo 必须安装nginx,必须安装openssl,(用apt-get upd ...

  8. windows下tomcat+nginx+openssl配置双向认证

    1. 基础知识 CA证书:https://blog.csdn.net/yangyuge1987/article/details/79209473 SSL双向认证原理:https://blog.csdn ...

  9. openssl搭建双向认证https

    http://www.barretlee.com/blog/2015/10/05/how-to-build-a-https-server/ http://blog.163.com/fangjinbao ...

随机推荐

  1. 洛谷P2429 制杖题 [2017年6月计划 数论10]

    P2429 制杖题 题目描述 求不大于 m 的. 质因数集与给定质数集有交集的自然数之和. 输入输出格式 输入格式: 第一行二个整数 n,m. 第二行 n 个整数,表示质数集内的元素 p[i]. 输出 ...

  2. mybatis添加数据返回主键

    程序结构图: 表结构: 创表sql: Create Table CREATE TABLE `users` (   `id` int(11) NOT NULL AUTO_INCREMENT,   `us ...

  3. bzoj 3895 取石子——博弈论

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3895 看题解:https://blog.csdn.net/popoqqq/article/d ...

  4. web前端学习(三)css学习笔记部分(7)-- 文字和字体相关样式、盒子相关样式、背景与边框相关样式

    12.  文字和字体相关样式 12.1  CSS3 给文字添加阴影 使用 text-shadow 属性给页面上的文字添加阴影效果,text-shadow 属性是在CSS2中定义的,在 CSS2.1 中 ...

  5. 2016年中国独角兽企业估值榜 TOP300

    2016年中国独角兽企业估值榜 TOP300[完整榜单] 类型:品牌资讯/名企动态 阅读:6735次 来源: 中商情报网 我要评论   摘要:独角兽公司是什么?独角兽公司指的是那些估值达到10亿美元以 ...

  6. python中的True和False

    返回真假时,需要为: return True return False

  7. django 结合 bootstrap 使用

    git clone https://github.com/dyve/django-bootstrap3.git 要运行demo,需要在demo 中为其增加一个符号链接 bootstrap3 到上层目录 ...

  8. SpringMvc表单标签库

    HTML密码框 <td><form:label path="password">密码:</form:label></td><t ...

  9. 给大家分享一张CSS选择器优选级图谱 !

  10. pl/sql基础知识—触发器

    n  触发器简单介绍 触发器是指隐含执行的存储过程,它不是由程序员或者是DBA来显式调用,而是因为某个操作引发执行的.当定义触发器时,必须要指定触法的事件和触发的操作,常用的触发事件包括insert, ...