SSL 原理及 https 配置
SSL 原理
SSL 简介
SSL (Secure Socket Layer), 中文名称 安全套接字.
SSL 的出现, 主要是为了解决Web浏览器和Web服务器之间的安全传输问题.
主要概念
SSL 中主要有如下几个概念:
- 传输加密: 所有消息加密后传输
- 身份验证: 客户端验证可选, 服务端验证强制
- 传输完整性: 传输的消息的完整性检查 (使用 MAC)
建立安全连接的过程
过程图:

步骤说明:
- client 发送 clientHello 信息给 server
- server 识别之后发送 serverHello 给 client, 这个过程建立安全能力, 包括协议版本, sessionID, 加密算法, 压缩方法, 随机数.
- 此时 SSL 握手的第一阶段完成
- server 会向 client 发送server的证书 (证书中有 server 端的公钥)
- server 向 client 发送密钥交换信息. 同时还会请求 client 端的证书.
- server 发送 Hellodone 信息, 表示 server 端的请求结束.
- 此时 SSL 握手的第二阶段完成
- client 发送client证书 (client没有证书的话, 可以回复 server 无证书)
- client 生成一个对称密码, 并发送给 server (这里的信息用收到的 server 端公钥来加密)
- 如果 client 发送了client证书, 那么还会发送证书验证信息
- 此时 SSL 握手的第三阶段完成
- client 通知 server 以后通信用之前发送的对称密码加密, 并结束握手
- server 通知 client 以后通信用之前发送的对称密码加密, 并结束握手
https 配置 (以 nginx 为例)
centos6.6 x86_64 上实验
生成证书
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
设置 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;
}
}
重启 nginx
nginx -s reload
从浏览器中可以查看是否配置成功 (https://hostip/)
SSL 原理及 https 配置的更多相关文章
- 单点登录 SSO, 自动登录 , java 加密,ssl原理, Tomcat配置SSL
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 单点登录的英文简称为SSO(single sign on),单点登录功能使得用户只要登录 ...
- SSL证书与Https应用部署小结
为了提高网站的安全性,一般会在比较敏感的部分页面采用https传输,比如注册.登录.控制台等.像Gmail.网银等全部采用https传输. https/ssl 主要起到两个作用:网站认证.内容加密传输 ...
- https原理及tomcat配置https方法
一. 什么是HTTPS 在说HTTPS之前先说说什么是HTTP,HTTP就是我们平时浏览网页时候使用的一种协议.HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不 ...
- (HTTPS)-https原理及tomcat配置https方法
一. 什么是HTTPS 在说HTTPS之前先说说什么是HTTP,HTTP就是我们平时浏览网页时候使用的一种协议.HTTP协议传 输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常 ...
- 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 ...
- Linux centosVMware Nginx负载均衡、ssl原理、生成ssl密钥对、Nginx配置ssl
一.Nginx负载均衡 vim /usr/local/nginx/conf/vhost/load.conf // 写入如下内容 upstream qq_com { ip_hash; 同一个用户始终保持 ...
- Linux下Nginx配置阿里云 SSL证书实现HTTPS访问
这篇文章主要介绍了nginx配置ssl证书实现https访问的示例 1.服务器系统:Centos 2. 阿里云申请SSL证书 选择“免费版DV SSL”,点击立即购买: 下载证书 列表中找到已签发的证 ...
- nginx配置ssl证书实现https访问
一,环境说明 服务器系统:ubuntu16.04LTS 服务器IP地址:47.89.12.99 域名:bjubi.com 二,域名解析到服务器 在阿里云控制台-产品与服务-云解析DNS-找到需要解析的 ...
- nginx普通配置/负载均衡配置/ssl/https配置
1.nginx普通配置 server { listen ; server_name jqlin.lynch.com; access_log /var/log/nginx/main.log main; ...
随机推荐
- Perl和操作系统交互(一):system、exec和反引号
调用操作系统命令:system函数 system函数可以直接让perl调用操作系统中的命令并执行. system入门示例 例如: #!/usr/bin/perl system 'date +" ...
- 如何用golang获取linux上文件的访问/创建/修改时间
在linux上想获取文件的元信息,我们需要使用系统调用lstat或者stat. 在golang的os包里已经把stat封装成了Stat函数,使用它比使用syscall要方便不少. 这是os.Stat的 ...
- [转]js 取得 Unix时间戳(Unix timestamp)
本文转自:https://blog.csdn.net/o0snow/article/details/6858829 js 取得 Unix时间戳 Unix时间戳(Unix timestamp),或称Un ...
- ___Json帮助类
using Newtonsoft.Json;using Newtonsoft.Json.Converters;using Newtonsoft.Json.Linq;using System.Colle ...
- c# 调用微吼直播API
/// <summary> /// 调用微吼直播API /// </summary> /// <param name="appKey">< ...
- java8 Stream sorted()的一次调用链记录
代码 public static void main (String[] args) { Stream.of("d2", "a2", "b1" ...
- 数据结构——基于java的链表实现(真正理解链表这种数据结构)
原创不易,如需转载,请注明出处https://www.cnblogs.com/baixianlong/p/10759599.html,否则将追究法律责任!!! 一.链表介绍 1.什么是链表? 链表是一 ...
- quartz定时任务实例
一.spring注解方式 <!--<!–配置文件添加允许Spring注解–>--> <!--<task:annotation-driven scheduler=&q ...
- next.js学习笔记
github地址: https://github.com/zeit/next.js#fetching-data-and-component-lifecycle 简介 Next.js是一个用于React ...
- php小程序登录时解密getUserInfo获取openId和unionId等敏感信息
在获取之前先了解一下openId和unionId openId : 用户在当前小程序的唯一标识 unionId : 如果开发者拥有多个移动应用.网站应用.和公众帐号(包括小程序),可通过unionid ...