一、HTTPS概述
1、什么是HTTPS?
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP+SSL。HTTPS提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。
SSL(Secure Sockets Layer 安全套接层),是为网络通信提供安全及数据完整性的一种安全协议。
2、HTTPS的主要特点
①数据保密性:把明码文件用加密算法转换成加密的文件以实现数据的保密传输。
②数据完整性:加密的数据在传输过程中如果被篡改,则无法解密数据。
③安全验证性:可通过第三方CA认证机构来验证网站的真实性。
3、HTTPS的工作原理
![图片.png](https://upload-images.jianshu.io/upload_images/12275941-b4241e50bc5ff9d5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
私钥:服务器端生成,服务器自己使用,用于加密和解密数据。
公钥:服务器端生成,客户端自己使用,用于加密和解密数据。
证书都是通过第三方认证机构颁发的。
二、配置HTTPS服务器
配置HTTPS服务器所需的证书包括以下几个部分:
Server Key(服务器私钥)
CSR(Certificate Signing Request):证书请求文件(公钥)
CRT(X509 Certificate):X509格式证书
RSA 非对称密码算法;
创建证书的基本流程
生成自己的服务器私钥 Server Key;
输入基本信息并用私钥签名生成CSR,即客户端公钥;
提交CSR给证书机构CA(免费或商业证书)签名生成CRT,或自己做CA签名生成CRT(自签名证书)。
1、生成证书
①使用openssl.exe程序生成私钥KEY
a、openssl.exe文件位置:D:/wamp/Apache24/bin/openssl.exe
![图片.png](https://upload-images.jianshu.io/upload_images/12275941-3019d682f2af32b6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
②使用openssl.exe生成证书请求文件CSR(公钥)
a、CSR是Certificate Signing Request的缩写,即证书签名请求,这不是证书,可以简单理解成公钥,生成证书时要把这个提交给权威的证书颁发机构。
b、填写证书相关信息,并使用server.key私钥进行加密,产生证书请求文件server.csr。
![图片.png](https://upload-images.jianshu.io/upload_images/12275941-51714764e9a88ae9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
a、X.509是一种证书格式,对x.509证书认证者总是CA或由CA指定的人,x.509包含有关用户或设备及其相应公钥的信息。
b、CRT是certificate的缩写,即证书。
c、openssl.cnf是SSL的主配置文件。
![图片.png](https://upload-images.jianshu.io/upload_images/12275941-a49d46231a16eb79.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
④将上述3个文件复制到Apache24/conf/key目录下
![图片.png](https://upload-images.jianshu.io/upload_images/12275941-3bd3886e0e373e4d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
2、配置Apache的HTTPS服务器
①修改Apache主配置文件httpd.conf![图片.png](https://upload-images.jianshu.io/upload_images/12275941-a60e518440fed4da.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![图片.png](https://upload-images.jianshu.io/upload_images/12275941-275b13647de5a5e2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
②修改HTTPS虚拟主机配置文件httpd-ssl.conf
在httpd-ssl.conf文件中找到如下各项进行配置
#设置HTTPS的监听端
Listen 443
#添加HTTPS虚拟主机
#<VirtualHost www.hszssl.com:443>
#证书文件路径
SSLCertificateFile "D:/wamp/apache24/conf/key/server.crt"
#私钥文件路径
SSLCertificatekeyFile "D:/wamp/apache24/conf/key/server.key"
#HTTPS虚拟主机配置
#设定虚拟站点名(服务器名)
ServerName www.hszssl.com
#设定站点位置(路径)
DocumentRoot "D:/hszssl"
#设置日志
ErrorLog "D:/wamp/apache24/logs/error.log"
TransferLog "D:/wamp/apache24/logs/access.log"
#指定目录权限
<Directory "D:/hszssl">
#是否启用分布式配置
AllowOverride None
#如果首页文件不存在,则显示文件列表
Options Indexes
#指定访问的来源
Require all granted
</Directory>
</VirtualHost>
③修改Apache的虚拟主机配置文件httpd-vhosts.conf
![图片.png](https://upload-images.jianshu.io/upload_images/12275941-dc1e0769cb3cd9b3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![图片.png](https://upload-images.jianshu.io/upload_images/12275941-dcc33858143177d1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)