Https安全协议的由来?

在实现 HTTPS协议前,我们需要了解 SSL 协议,但其实我们现在使用的更多的是 TLS 加密通讯协议。

那么TLS是怎么保证明文消息被加密的呢?在OSI七层模型中,应用层是http协议,那么在应用层协议之下,我们的表示层,也就是 SSL 协议所发挥作用的一层,它通过(握手、交换秘钥、告警、加密)等方式,使应用层 HTTP 协议没有感知的情况下做到了数据的安全加密。

Nginx配置示例(单向)

server {

listen 443 ssl;

server_name www.oldxu.com;

index index.html index.php;

root /code;

ssl on;

ssl_certificate server.crt;

ssl_certificate_key server.key;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!eNULL;

ssl_prefer_server_ciphers on;

...

}

Nginx配置双向认证

单向认证,仅仅是客户端需要检验服务端证书是否是正确的,而服务端不会检验客户端证书是否是正确的。

双向认证,指客户端验证服务器端证书,而服务器也需要通过CA的公钥证书来验证客户端证书。

双向验证的过程:

1.客户端say hello 服务端

2.服务端将证书、公钥等发给客户端

3.客户端CA验证证书,成功继续、不成功弹出选择页面

4.客户端将自己的证书和公钥发送给服务端

5.服务端验证客户端证书,如不通过直接断开连接

6.客户端告知服务端所支持的加密算法

7.服务端选择最高级别加密算法使用客户端公钥加密后发送给客户端

8.客户端收到后使用私钥解密并生成随机对称密钥key,使用服务端公钥加密发送给服务端

9.服务端使用私钥解密,获取对称密钥key

10.后续客户端与服务端使用该密钥key进行加密通信

#####服务端操作

server {

listen 443 ssl;

server_name www.oldxu.com;

index index.html index.php;

root /code;

ssl on;

ssl_certificate server.crt;

ssl_certificate_key server.key;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!eNULL;

ssl_prefer_server_ciphers on;

ssl_client_certificate ca.crt; //这里的ca.crt是根证书公钥文件

ssl_verify_client on;

...

}

#####客户端(浏览器)操作

如果不进行以下操作,浏览器会出现400错误。400 Bad Request(No required SSL certificate was sent)

# cd /etc/pki/ca_test/client

# openssl genrsa -out client.key //生成私钥文件

# openssl req -new -key client.key -out client.csr //生成请求文件,填写信息需要和ca.csr中的Organization Name保持一致

# openssl ca -in client.csr -cert /etc/pki/ca_test/root/ca.crt -keyfile /etc/pki/ca_test/root/ca.key -out client.crt -days 3650

//签名client.csr, 生成client.crt,此步如果出现

#1.将client.key转换为pfx(p12)格式

# cd /etc/pki/ca_test/client

# openssl pkcs12 -export -inkey client.key -in client.crt -out client.pfx //这一步需要输入一个自定义密码,一会在windows上安装的时候要用到,需要记一下。

#2.将client.pfx拷贝到windows下,双击即可安装。

Java nginx 双向ssl_Nginx配置单项SSL以及双向SSL相关推荐

  1. Java nginx 双向ssl_nginx配置ssl双向验证 nginx https ssl证书配置

    参考<nginx安装>:http://www.ttlsa.com/nginx/nginx-install-on-linux/ 如果你想在单IP/服务器上配置多个https,请看<ng ...

  2. java nginx 例子_Nginx配置日志

    本篇文章帮大家学习Nginx配置日志,包含了Nginx配置日志使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. 本节介绍如何在NGINX中配置日志记录错误和处理的请求.在本 ...

  3. java nginx https_docker nginx 配置ssl,实现https

    docker nginx 配置ssl,实现https 2019-09-05 16:06:35.0 nginx配置https总览 在nginx配置ssl实现https,简单来说分为三个步骤: 1 上传s ...

  4. 详解Nginx SSL快速双向认证配置(脚本)

    这篇文章主要介绍了详解Nginx SSL快速双向认证配置(脚本),现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 目前遇到一个项目有安全性要求,要求只有个别用户有权限访问.本着能用配置解决就 ...

  5. https ssl单项认证和双向认证以及证书生成

    HTTP(HyperText Transfer Protocol,超文本传输协议)被用于在Web浏览器和网站服务器之间传递信息,在TCP/IP中处于应用层.这里提一下TCP/IP的分层共分为四层:应用 ...

  6. java使用bks双向认证_android客户端SSL单向双向认证

    最近一直在做SSL的研究,前几天写了一篇SSL握手过程的文章,今天写下android客户端SSL单双向认证的示例 操作系统是win7,服务器用的tomcat6,客户端跑在1.6的模拟器上,证书都是自签 ...

  7. Java nginx 双向ssl_使用Nginx实现HTTPS双向验证的方法

    https单向验证应用广泛想必大家都很熟悉,我已经在一篇博文中分享过,这次来看看Nginx如何实现双向验证. 单向验证与双向验证的区别: 单向验证: 指客户端验证服务器端证书,服务器并不需要验证客户端 ...

  8. Nginx + Tomcat + HTTPS 配置不需要在 Tomcat 上启用 SSL 支持

    2019独角兽企业重金招聘Python工程师标准>>> Nginx SSL+tomcat集群 Nginx tomcat no 不用https 最近做了个Web项目, 架构上使用了 N ...

  9. nginx安装、nginx前端配置、后端配置、前后端分离配置、https支持(ssl配置)、负载均衡配置、nginx location详解

    nginx配置 一.nginx安装 二.nginx配置 仅前端配置 仅后端配置 前后分离配置(1) 前后分离配置(2) 前后不分离配置 https/ssl配置 负载均衡配置 数据压缩配置 三.完整ng ...

最新文章

  1. ip的正则表达式 java,项目实战:Java正则表达式验证IP地址
  2. 攻击技术还原:维基解密是如何遭到黑客攻击的?
  3. 数据可视化 信息可视化_可视化哲学的黎明
  4. 1151 LCA in a Binary Tree 甲级
  5. jpa原生query_Spring Data Jpa @Query原生SQL
  6. oracle 12c容器数据库备份和恢复,oracle 12c数据库备份与恢复
  7. ABAP 读取FTP文件
  8. 画ROC曲线的R包总结
  9. Android面试问题收集总结
  10. json对象转map集合(json转map最快的方法)
  11. Java工具类 BeanUtils库介绍以及对象拷贝
  12. 【金融】- 净资产收益率(ROE)计算,杜邦分析法+python处理
  13. 毕竟,连少宇都无法击败的人,是没有资格做自己的对手的
  14. ccf有趣的数java_CCF CSP 有趣的数
  15. 容齐的身世_白发容齐和容乐是什么关系?容齐和容乐是兄妹吗?
  16. STM32初学者KILE5软件的使用
  17. Core Data 使用
  18. linux 转换viso为pdf,foxpdf Visio转PDF转换器
  19. Jena+fuseki
  20. 欧盟委员会开源计划办公室启动漏洞赏金

热门文章

  1. centos 5.6安装nginx+mysql+php(php-fpm)+phpmyadmin总结
  2. jQuery学习笔记(二)
  3. mysql报错 Row size too large ( 8126)
  4. MySQL面试题中:主从同步的原理
  5. 十三、Swing绘图技术
  6. Atitit 纯java项目的提升进度大法---通用json dsl接口
  7. SqlServer数据组织结构
  8. 一天一点数据结构+算法:复习堆的知识
  9. AndroidStudio安卓原生开发_Activity的启动方法_3种activity的启动方法_显示启动Activity---Android原生开发工作笔记82
  10. AndroidStudio_android实现双击_3击_监听实现---Android原生开发工作笔记240