SSL 原理

SSL 简介

SSL (Secure Socket Layer), 中文名称 安全套接字.

SSL 的出现, 主要是为了解决Web浏览器和Web服务器之间的安全传输问题.

主要概念

SSL 中主要有如下几个概念:

  • 传输加密: 所有消息加密后传输
  • 身份验证: 客户端验证可选, 服务端验证强制
  • 传输完整性: 传输的消息的完整性检查 (使用 MAC)

建立安全连接的过程

过程图:

步骤说明:

  1. client 发送 clientHello 信息给 server
  2. server 识别之后发送 serverHello 给 client, 这个过程建立安全能力, 包括协议版本, sessionID, 加密算法, 压缩方法, 随机数.
  3. 此时 SSL 握手的第一阶段完成
  4. server 会向 client 发送server的证书 (证书中有 server 端的公钥)
  5. server 向 client 发送密钥交换信息. 同时还会请求 client 端的证书.
  6. server 发送 Hellodone 信息, 表示 server 端的请求结束.
  7. 此时 SSL 握手的第二阶段完成
  8. client 发送client证书 (client没有证书的话, 可以回复 server 无证书)
  9. client 生成一个对称密码, 并发送给 server (这里的信息用收到的 server 端公钥来加密)
  10. 如果 client 发送了client证书, 那么还会发送证书验证信息
  11. 此时 SSL 握手的第三阶段完成
  12. client 通知 server 以后通信用之前发送的对称密码加密, 并结束握手
  13. server 通知 client 以后通信用之前发送的对称密码加密, 并结束握手

https 配置 (以 nginx 为例)

centos6.6 x86_64 上实验

  1. 生成证书

    cd /etc/nginx
    openssl genrsa -des3 -out server.key 1024 # 设置证书密码
    openssl req -new -key server.key -out server.csr # 根据提示输入各种信息
    cp server.key server.key.org
    openssl rsa -in server.key.org -out server.key
    openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
  2. 设置 https 的证书

    cat /etc/nginx/ssl.conf
    # HTTPS server
    #
    server {
    listen 443 ssl;
    server_name localhost; ssl_certificate /etc/nginx/server.crt;
    ssl_certificate_key /etc/nginx/server.key; ssl_session_cache shared:SSL:1m;
    ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on; location / {
    root /usr/share/nginx/html;
    index index.html index.htm;
    }
    }
  3. 重启 nginx

    nginx -s reload
  4. 从浏览器中可以查看是否配置成功 (https://hostip/)

SSL 原理及 https 配置的更多相关文章

  1. 单点登录 SSO, 自动登录 , java 加密,ssl原理, Tomcat配置SSL

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 单点登录的英文简称为SSO(single sign on),单点登录功能使得用户只要登录 ...

  2. SSL证书与Https应用部署小结

    为了提高网站的安全性,一般会在比较敏感的部分页面采用https传输,比如注册.登录.控制台等.像Gmail.网银等全部采用https传输. https/ssl 主要起到两个作用:网站认证.内容加密传输 ...

  3. https原理及tomcat配置https方法

    一. 什么是HTTPS 在说HTTPS之前先说说什么是HTTP,HTTP就是我们平时浏览网页时候使用的一种协议.HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不 ...

  4. (HTTPS)-https原理及tomcat配置https方法

    一. 什么是HTTPS 在说HTTPS之前先说说什么是HTTP,HTTP就是我们平时浏览网页时候使用的一种协议.HTTP协议传 输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常 ...

  5. Nginx负载均衡、SSL原理、生成SSL密钥对、Nginx配置SSL

    6月12日任务 12.17 Nginx负载均衡12.18 ssl原理12.19 生成ssl密钥对12.20 Nginx配置ssl扩展 针对请求的uri来代理 http://ask.apelearn.c ...

  6. Linux centosVMware Nginx负载均衡、ssl原理、生成ssl密钥对、Nginx配置ssl

    一.Nginx负载均衡 vim /usr/local/nginx/conf/vhost/load.conf // 写入如下内容 upstream qq_com { ip_hash; 同一个用户始终保持 ...

  7. Linux下Nginx配置阿里云 SSL证书实现HTTPS访问

    这篇文章主要介绍了nginx配置ssl证书实现https访问的示例 1.服务器系统:Centos 2. 阿里云申请SSL证书 选择“免费版DV SSL”,点击立即购买: 下载证书 列表中找到已签发的证 ...

  8. nginx配置ssl证书实现https访问

    一,环境说明 服务器系统:ubuntu16.04LTS 服务器IP地址:47.89.12.99 域名:bjubi.com 二,域名解析到服务器 在阿里云控制台-产品与服务-云解析DNS-找到需要解析的 ...

  9. nginx普通配置/负载均衡配置/ssl/https配置

    1.nginx普通配置 server { listen ; server_name jqlin.lynch.com; access_log /var/log/nginx/main.log main; ...

随机推荐

  1. OJ:析构函数实现多态

    Description 下面程序的输出结果是: destructor B destructor A 请完整写出 class A. 限制条件:不得为 class A 编写构造函数. #include & ...

  2. 【转载】ASP.NET自定义404和500错误页面

    在ASP.NET网站项目实际上线运行的过程中,有时候在运行环境下会出现400错误或者500错误,这些错误默认的页面都不友好,比较简单单调,其实我们可以自行设置这些错误所对应的页面,让这些错误跳转到我们 ...

  3. 快速搭建一个Quartz定时任务【转载,好文 ,值得收藏,亲身试用 效果不错】

    Quartz.NET 入门 概述 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔 ...

  4. C# IE浏览器 判断是否已经打开了指定Url

    引用Microsoft HTML Object Library 引用 -> com -> Microsoft HTML Object Library 引用后,显示如图 1.判断ie浏览器是 ...

  5. Linux CentOS 虚拟机下联网

    这里用VM 提供虚拟环境 虚拟机网络连接模式用的NAT 在编辑处 打开 查看你的子网ip  类型是NAT 的 我们这是是18   192.168.18.~ 去看dhcp 设置看自动分配的地址范围 也可 ...

  6. webpack 笔记

    webpack.config.json entry:入口,可有多个 devtool:'inline-source-map'      source map,遇到错误时,追踪到原文件,而不是编译后的文件 ...

  7. [日常] nginx与负载均衡策略

    upstream mail.sina.net { #upstream的负载均衡,weight是权重,可以根据机器配置定义权重.weigth参数表示权值,权值越高被分配到的几率越大. server we ...

  8. Netty实战三之Netty的组件和设计

    有关Netty,我们可以从两个视角来讨论Netty:类库的视角以及框架的视角,对于使用Netty编写高效的.可重用的和可维护的代码来说,两者缺一不可. Netty解决了两个响应的关注领域,可以大致标志 ...

  9. C# Dev XtraReport 简单测试

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using DevExpre ...

  10. Phaser.js之简单的跑酷游戏

    采用的物理引擎是Phaser.js 官网地址:http://phaser.io/ 在这里对此引擎不做过多介绍(因为我也是小白,嘿嘿) 效果展示: 源码(详细源码图片资源可点击文章下方或屏幕右上方的gi ...