博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTTPS(SSL)详解以及PHP调用方法
阅读量:6479 次
发布时间:2019-06-23

本文共 1760 字,大约阅读时间需要 5 分钟。

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($tuCurlCURLOPT_SSL_VERIFYPEER1);

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

 

转载于:https://www.cnblogs.com/sailrancho/p/4065204.html

你可能感兴趣的文章
java.lang.UnsupportedOperationException的解决方法
查看>>
双机热备与负载均衡区别和作用
查看>>
继往开来,迎接新的挑战
查看>>
linux下php编译安装---编译参数整理
查看>>
SharePoint 2013 安装配置(3-2)
查看>>
让Erlang服务器后台运行
查看>>
APUE笔记七
查看>>
nginx用户认证配置( Basic HTTP authentication)
查看>>
Ubuntu 下关于crontab的使用详解
查看>>
苹果官方购买产品服务器端验证代码PHP版
查看>>
架构,一图胜千言
查看>>
JAVA内部类
查看>>
【Android】如何快速构建Android Demo
查看>>
Top域名5月中旬市场报告:注册总量破10万
查看>>
/dev/urandom随机数
查看>>
博客导读(09.5.15)
查看>>
学习 TTreeView [8] - AlphaSort、CustomSort、SortType
查看>>
在CentOS 7上安装Kafka集群
查看>>
MySQL Cluster(MySQL 集群) 初试
查看>>
Linux ELF格式文件解析之relocation和entry入口点,基于gas汇编语言视角
查看>>