一、证书生成。

1、SSL Server生成私钥/公钥对。server.key(加密)/server.pub(解密);
2、server.pub生成请求文件server.csr,包含server的一些信息,如域名/申请者/公钥等;
3、server将server.csr递交给CA,CA验证通过,用ca.key和csr加密生成server.cert;
4、server将证书server.cert传给client,client通过ca.crt解密server.cert。

附证书制作流程:https://m.aliyun.com/yunqi/articles/40398

二、认证交互

三、SSL认证数据包分析

1、客户端请求包

版本信息:

随机数:

加密套件列表:

压缩算法和扩展参数:

2、服务端响应包:

版本号:

随机数:

选择的加密套件,压缩算法,及扩展参数:

证书:

3、客户端随机数包

4、通知秘钥和加密算法

5、握手验证消息

6、通知客户端加密算法与握手限制消息

7、加密通信(3)

8、Encrypted Alert,SSL告警,这里出现通常是提示SSL传输完成

四、nginx代理证书配置(附测试脚本)

server {
listen 8000 ssl;
listen[::]:8000 ssl;
server_name *.*.*.*:8000;
ssl on;
ssl_certificate /home/nginx/conf/cert/ server.cert;
ssl_certificate_key /home/nginx/conf/cert/server.key;
ssl_client_certificate /home/nginx/conf/cert/ca.cert;
ssl_verify_client on;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m; ssl_protocols TLSv1.2;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256;
ssl_prefer_server_ciphers on; error_log /var/log/nginx/error.log error; location / {
proxy_ssl_certificate /home/nginx/conf/cert/client.cert;
proxy_ssl_certificate_key /home/nginx/conf/cert/client.key;
proxy_ssl_trusted_certificate /home/nginx/conf/cert/ca.cert;
proxy_ssl_verify on;
proxy_ssl_session_reuse on;
proxy_pass https://*.*.*.*:8080;
}
}

关于其他参数请参见:http://nginx.org/en/docs/http/ngx_http_proxy_module.html

import httplib2

ca_cert = '/home/nginx/conf/cert/client/ca.cert'
client_key = '/home/nginx/conf/cert/client/client.key'
client_cert = '/home/nginx/conf/cert/client/client.cert'
full_url = 'https://*.*.*.*:8000/test_url'
headers = {
'content-type': 'application/json',
'accept': 'application/json'
} http = httplib2.Http(timeout=120, ca_certs=ca_cert, disable_ssl_certificate_validation=False)
http.follow_all_redirects = True
http.add_certificate(client_key, client_cert, '')
resp, resp_content = http.request(full_url, method='GET', headers=headers)
print resp, resp_content

SSL交互简述及nginx双向认证配置的更多相关文章

  1. nginx支持ssl双向认证配置

    nginx支持ssl双向认证配置 listen 443; server_name test.com; ssl on; ssl_certificate server.crt; //server端公钥 s ...

  2. apache用户认证,ssl双向认证配置

    安装环境: OS:contos 6.4 httpd:httpd-2.2.15-59.el6.centos.i686.rpm openssl:openssl-1.0.1e-57.el6.i686.rpm ...

  3. webservice ssl双向认证配置

    1.在tomcat中安装axis2插件 2.生成证书,用jdk自带的keytool 服务端 keytool -genkey -alias Server -dname "CN=192.168. ...

  4. https 单向认证和双向认证配置

    HTTPS 是我们开发中经常用到的通信加密技术,能有效保护我们网络访问中的安全,本文主要讲解单向 和 双向 https 的配置.关于https 的实现原理在这里我就不赘述了,附上阮一峰老师的关于htt ...

  5. 007.iSCSI服务器CHAP双向认证配置

    一 iSCSI和CHAP介绍 1.1 iSCSI 磁盘 iSCSI后端存储支持多种设备类型,主要有: 文件 单一分区(partition) 磁盘 数组 RAID LVM 本手册建议以裸磁盘vdb作为示 ...

  6. nginx用户认证配置( Basic HTTP authentication)

    ngx_http_auth_basic_module模块实现让访问着,只有输入正确的用户密码才允许访问web内容.web上的一些内容不想被其他人知道,但是又想让部分人看到.nginx的http aut ...

  7. Nginx用户认证配置方法详解(域名/目录)

    Nginx超级强大它可以单独为一个域名设置用户认证,方法也很简单我们只要生成用户认证的用户名和密码,然后再Nginx添加auth认证配置即可 Nginx可以为某一个域名单独加用户认证,具体做法如下: ...

  8. Toncat-OpenSSL双向认证配置(iOS)

    OpenSSL生成证书 要生成证书的目录下建立几个文件和文件夹,有./demoCA/ ./demoCA/newcerts/ ./demoCA/private/ ./demoCA/index.txt ( ...

  9. nginx 1.12 HTTPS双向认证配置

    使用openssl生成相关证书: #生成CA私钥,私钥会被加密,需要设置密码 openssl genrsa -aes256 -out ca.key 2048 #生成CA证书签名请求,需要输入CA私钥密 ...

随机推荐

  1. Linux搭建Samba共享服务器

    实验要求: Samba文件共享服务配置与访问,配置访问用户以及相应权限. Tips:创建共享目录/test和/share,并且分别在/test下创建文件tf1(只读)tf2(读写)  在/share ...

  2. 8.6培训 D1

    今天是赵和旭老师讲课(也是 zhx) 动态规划 利用最优化原理把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解(有点像分治?) 更具体的,假设我们可以计算出小问题的最优解,那么我们凭 ...

  3. 用xmmp+openfire+smack搭建简易IM实现

    功能实现:注册,登录,单聊表情,文本,图片,语音的发送接收,添加好友,删除好友,查找好友,修改密码,消息提醒设置,获取离线消息等功能 1.前期准备 1.下载opnefire软件:https://www ...

  4. 二十:jinja2之加载静态文件

    静态文件: flask默认指定的静态文件路径为根目录下的static,可以自定义路径,并指定,使用url_for('文件夹', filename='文件名')引用 加载css文件 加载js文件 其他文 ...

  5. 关于struts2防止表单重复提交

    struts2防表单重复提交有两种方式. 其一是action的重定向,跳转时设置type为从一个action跳转到另一个action或者另一个页面, 使用户提交后,所停留的位置,不是当前处理数据的Ac ...

  6. cocos2dx基础篇(28) 布景层Layer的三个子类

    [3.x]     (1)去掉 "CC" [CCLayerColor] 颜色布景层CCLayerColor有两个父类:CCLayerRGBA.CCBlendProtocol.相信有 ...

  7. 第十四周课程总结&&实验总结

    课程总结: 1.Java实现跨平台操作的工具:JDBC. 它的意思是java数据库连接,可以方便的实现多种关系型数据库的统一操作,它由一组用java语句编写的类和接口组成. 2.JDBC驱动分类: J ...

  8. HDU 2100 Lovekey (26进制大数、字符串)

    Lovekey Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  9. laravel5.5入门-安装和认证

    一.安装 在终端CMD里切换到你想要放置该网站的目录下(如 d:\project\laravel),运行命令 composer create-project laravel/laravel learn ...

  10. 关于js计算非等宽字体宽度的方法

    准备一个容器 首先在body外插入一个absolute的容器避免重绘: const svgWidthTestContainer = document.createElement('svg'); svg ...