HTTPS 详解

1. 两个加密秘钥的概念

(1) 对称加密

即加密的秘钥和解密的秘钥一样

(2) 非对称加密

即加密的秘钥和解密的秘钥不一样, 分别称为公钥 和 私钥,  公钥完全公开  私钥解密者自己拿着解密用。

注:  所有的签字 认证 等机制 无非是 对称秘钥和非对称秘钥的组合拳。

(3) 证书

CA认证中心颁发给网站服务器方的  经过自己私钥加密的密文 和 这个网站的一对公钥+私钥

2. https通信过程中的几个角色以及其作用

1)浏览器用户, 也就是你现在浏览网页用浏览器, 这个浏览器中有 CA中心的公钥,用来和CA安全通信。

2)网站服务器, 网站服务器方需要从CA中心认证申请 自己的证书。

3)证书中心CA, 全世界可能就几家, 大的认证中心,专门收钱办法CA证书。

3. 实现https通信的全流程

1) 网站服务器管理人员从CA申请证书,并配置到自己的服务器上(IIS or  apache等 证书文件+公钥+秘钥), 注意这个证书的内容是经过CA中心的私钥加密的,所以只有用CA的公钥才可以自己解密,这个过程又叫签名;

2) 浏览器用户访问网站,收到证书, 浏览器会使用CA的公钥对这个证书进行解密,并确认这个证书的合法性,如果不合法,那么拒绝通信,后让用户选择是否通信;

3) 如果合法,那么浏览器用证书中的公钥加密一个对称秘钥串和加密方法发送给服务器,服务器收到后用证书中的私钥进行解密;

4) 双方利用这个秘钥(对称)进行对数据的加密解密,保证数据的安全。

一点小感受: 其实证书就是  被CA用他的私钥加密过后的服务器公钥。  客户端需要用CA的公钥来确定证书的正确性,并且取得和服务器通信的公钥。

4. 服务器配置ssl的方法

切换到你想生成私钥和证书的目录
$ cd /usr/local/nginx/conf
创建私钥
$ openssl genrsa -out server.key 2048
如果你想私钥中包含一个对称密钥对,那么使用-des3参数,但是这样你每次启动nginx的时候都要输入你的对称密钥字符串。
$ openssl genrsa -des3 -out server.key 2048
创建证书,其实可以认为是公钥
$ openssl req -new -key server.key -out server.csr
用私钥加密证书
$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
// 以上过程是模仿CA中心生成 证书 和 私钥 这时 CA中心的 公钥和私钥对 和 ssl服务器的密钥对 是一个。
// 严格的应该是两对。 CA本身有一对,CA会为服务器生成一对私钥和证书(这个证书本身已经含有服务器的公钥信息,其实证书就是公钥+一些特殊信息),并用自己的私钥加密证书连私钥一起发给ssl服务器, ssl服务器在nginx中配置 私钥 和 被CA加密过的证书,客户端请求时,发送给客户证书, 客户回复时用私钥解密!
在nginx配置中添加对应的私钥和加密后的证书
server {
server_name YOUR_DOMAINNAME_HERE;
listen 443;
ssl on;
ssl_certificate /usr/local/nginx/conf/server.crt;
ssl_certificate_key /usr/local/nginx/conf/server.key;
}

4. 关于PHP调用https接口

1)  如果你压根不在乎安全性,就是不管服务器是不是真的你想通信的服务器,那么你没必要是用认证, curl的设置本身也是不认证的

CURLOPT_SSL_VERIFYPEER 默认为 false ]

2)  如果你坚持要验证,那么必须开启

curl_setopt($tuCurl, CURLOPT_SSL_VERIFYPEER, 1);

但是PHP如何 拿到CA的公钥,这个还不太确定。

HTTPS(SSL)详解以及PHP调用方法的更多相关文章

  1. https+ssl详解

    这是转载别人的写的很好,(转:崔永秀) 把这几天学习到的关于ssl和https协议的内容在这里分享一下,适合一些像我一样的网络协议初学者. ssl协议的起源和历史我就不再多说了,就是那个Netscap ...

  2. java ssl https 连接详解 生成证书 tomcat keystone

    java ssl https 连接详解 生成证书 我们先来了解一下什么理HTTPS 1. HTTPS概念 1)简介 HTTPS(全称:Hypertext Transfer Protocol over ...

  3. [转帖]HTTPS系列干货(一):HTTPS 原理详解

    HTTPS系列干货(一):HTTPS 原理详解 https://tech.upyun.com/article/192/HTTPS%E7%B3%BB%E5%88%97%E5%B9%B2%E8%B4%A7 ...

  4. 【转】HTTPS系列干货(一):HTTPS 原理详解

    HTTPS系列干货(一):HTTPS 原理详解 前言 HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer),其实 HTTPS 并 ...

  5. 详解Python模块导入方法

    python常被昵称为胶水语言,它能很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松联结在一起.python包含子目录中的模块方法比较简单,关键是能够在sys.path里面找到通向模块文件的 ...

  6. HTTPS加密协议详解(一):HTTPS基础知识

    转自:https://blog.csdn.net/hherima/article/details/52469267------------------------------专栏导航:-------- ...

  7. fiddler软件测试——Fiddler抓取https设置详解(图文)(摘抄)

    随笔- 8  文章- 0  评论- 0 fiddler软件测试——Fiddler抓取https设置详解(图文)   强烈推荐(原创亲测)!!!Fiddler抓取https设置详解(图文)转 本文主要说 ...

  8. fiddler软件测试——Fiddler抓取https设置详解(图文)

    强烈推荐(原创亲测)!!!Fiddler抓取https设置详解(图文)转 本文主要说明了自己在设置fiddler抓取https过程中所遇到的问题及解决步骤,特别是fiddler在设置证书的环节遇到的各 ...

  9. 加密方法与HTTPS 原理详解

    一:加密方法: 1,对称加密 AES,3DES,DES等,适合做大量数据或数据文件的加解密. 2,非对称加密 如RSA,Rabin.公钥加密,私钥解密.对大数据量进行加解密时性能较低. 二:https ...

随机推荐

  1. 为什么SQL语句加 1=1

    是为了链接下面的查询条件条件,也或者是替换没有查询条件的语句.比如:要把检索条件作为一个参数传递给SQL,那么,当这个检索语句不存在的话就可以给它赋值为1=1.这样就避免了SQL出错,也就可以把加条件 ...

  2. IOS使用Asyncsocket进行socket编程

    iphone的标准推荐CFNetwork C库编程.但是编程比较烦躁.在其它OS往往用类来封装的对Socket函数的处理.比如MFC的CAsysncSocket.在iphone也有类似于开源项目.co ...

  3. dfs介绍

    深度优先搜索(DFS) [算法入门] 郭志伟@SYSU:raphealguo(at)qq.com 2012/05/12 1.前言 深度优先搜索(缩写DFS)有点类似广度优先搜索,也是对一个连通图进行遍 ...

  4. Postfix之telnet测试

    1.# 2. 3.#若没安装telnet 需安装telnet 4.yum install telnet 5. 6.#telnet测试smtp连接postfix 7.telnet 127.0.0.1 2 ...

  5. Net use命令

    以指定账户密码建立网络磁盘 net use s: \\ip\ipc$  "密码" /user:“用户名”

  6. HDU 5784 (计算几何)

    Problem How Many Triangles (HDU 5784) 题目大意 给定平面上的n个点(n<2000),询问可以组成多少个锐角三角形. 解题分析 直接统计锐角三角形较困难,考虑 ...

  7. postgresql存储二进制大数据文件

    如果想把整个文件或图片存储在数据表的一个字段内,该字段可以选择二进制类型,然后将文件按二进制存储起来,文本文件也可以存在text字段内. 示例如下: 二进制类型bytea的操作(在最大值内,有内存限制 ...

  8. OpenFlow Switch学习笔记(三)——Flow Tables

    这次我们主要讨论下OpenFlow Switch的核心组件之一——Flow Tables,以了解其内部的 matching 以及 action handling 机制.下文将会分为几个部分来逐步详述O ...

  9. 理解HMM

    hidden markov model markov model: 把一个总随机过程看成一系列状态的不断转移, 其特性主要使用转移概率来表示. HMM:认为模型的状态是不可观测的(hidden), 能 ...

  10. python学习笔记 - assert用法

    [转自]http://blog.sina.com.cn/s/blog_76e94d210100vz37.html   1.assert语句用来声明某个条件是真的. 2.如果你非常确信某个你使用的列表中 ...