西樵网站设计制作,重庆建设工程信息网官网查询系统网址,如何做网站的优化和推广,房地产网站开发目录
一、HTTPS协议介绍
HTTPS的安全通信机制#xff1a;
工作流程可大致分为三个阶段#xff1a;
二、搭建基于https协议的静态网站
第一步#xff1a;关闭防火墙和SELinux
第二步#xff1a;安装httpd 准备工作#xff1a;web服务器搭建
1、挂载
2、编辑配置文…目录
一、HTTPS协议介绍
HTTPS的安全通信机制
工作流程可大致分为三个阶段
二、搭建基于https协议的静态网站
第一步关闭防火墙和SELinux
第二步安装httpd 准备工作web服务器搭建
1、挂载
2、编辑配置文件
3、安装软件包
4、启动httpd
查看配置文件
5、设置防火墙状态
重启服务:
查看状态 查看是否启动成功
6、测试
第三步安装mod_ssl模块
第四步、生成密钥
方法一
方法二
方案三
1、创建自私钥
2、颁发证书和公钥
第五步定义基于https协议的静态网站的配置文件
1、查看示例
2、配置文件
第六步创建资源文件
第七步重启 httpd 服务
第八步查看 一、HTTPS协议介绍 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容不提供任何方式的数据加密如果攻击者截取了Web浏览器和网站服务器之间的传输报文就可以直接读懂其中的信息因此HTTP协议不适合传输一些敏感信息比如信用卡号、密码等。为了解决HTTP协议的这一缺陷需要使用另一种协议安全套接字层超文本传输协议HTTPS。 HTTPS全称Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext TransferProtocol Secure超文本传输安全协议是以安全为目标的HTTP通道。HTTPS并不是一个新协议而是HTTPSSLTLS。原本HTTP先和TCP假定传输层是TCP协议直接通信而加了SSL后就变成HTTP先和SSL通信再由SSL和TCP通信相当于SSL被嵌在了HTTP和TCP之间。
SSL 是“Secure Sockets Layer”的缩写中文叫做“安全套接层”。它是在上世纪90年代中期由网景公司设计的。到了1999年SSL 应用广泛已经成为互联网上的事实标准。IETF 就把SSL 标准化。标准化之后SSL被改为 TLSTransport Layer Security传输层安全协议。
SSL协议分为两层
SSL记录协议 SSL Record Protocol它建立在可靠的传输协议如TCP之上为高层协议提供数据封装、压缩、加密等基本功能。SSL握手协议SSL Handshake Protocol它建立在SSL记录协议之上用于在实际的数据传输开始前通讯双方进行身份认证、协商加密算法、交换加密密钥等。
SSL协议提供的服务 1认证用户和服务器确保数据发送到正确的客户机和服务器 2加密数据以防止数据中途被窃取 3维护数据的完整性确保数据在传输过程中不被改变。 HASH是把任意长度的输入又叫做预映射pre-image通过散列算法变换成固定长度的输出该输出就是散列值。Hash算法特别的地方在于它是一种单向算法用户可以通过hash算法对目标信息生成一段特定长度的唯一hash值却不能通过这个hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等。 常见的HASH算法MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMACSHA1。
共享密钥加密对称密钥加密加密和解密使用相同密钥。对称加密算法DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6和AES。公开密钥加密非对称密钥加密公开密钥加密使用一对非对称的密钥。一把叫做私有密钥一把叫做公开密钥。私有密钥不能让其他任何人知道而公开密钥则可以随意发布任何人都可以获得。使用此加密方式发送密文的一方使用公开密钥进行加密处理对方收到被加密的信息后再使用自己的私有密钥进行解密。利用这种方式不需要发送用来解密的私有密钥也不必担心密钥被攻击者窃听盗 走。常见的非对称加密算法RSA、ECC移动设备用、Diffie-Hellman、El Gamal、DSA数字签名用。但由于公开密钥比共享密钥要慢所以我们就需要综合一下他们两者的优缺点使他们共同使用而这也是HTTPS采用的加密方式。在交换密钥阶段使用公开密钥加密方式之后建立通信交换报文阶段则使用共享密钥加密方式。
如何证明公开密钥本身是货真价实的公开密钥如正准备和某台服务器建立公开密钥加密方式下的通信时如何证明收到的公开密钥就是原本预想的那台服务器发行的公开密钥。或许在公开密钥传输过程中真正的公开密钥已经被攻击者替换掉了。这个时候就需要第三方公证单位来帮忙啦。 CA就是一个公认的公证单位你可以自行产生一把密钥且制作出必要的证书数据并向CA单位注册那么当客户端的浏览器在浏览时该浏览器会主动向CA单位确认该证书是否为合法注册过如果是那么该次连接才会建立如果不是浏览器会发出警告信息告知用户应避免建立连接。所以说如此一来WWW服务器不但有公证单位的证书用户在建立连接时也比较有保障。
当你在浏览器的地址栏上输入https开头的网址后浏览器和服务器之间会在接下来的几百毫秒内进行大量的通信
1. 客户端浏览器向服务器端发送如下信息
1客户端支持的SSL /TLS协议的版本号。 2Cipher Suite密钥算法套件。 3客户端产生的随机数稍后用于生成对话密钥。
2. 服务器端向客户端发送如下信息
确认使用的加密通信协议版本如果浏览器与服务器支持的版本不一致服务器关闭加密通信。确认使用的加密方法。服务器证书。 要使数字证书有用它的结构必须采用一种可理解且可靠的形式以便人们可以轻松地检索并理解证书内的信息。例如护照采用这样一种结构人们可以轻松地理解以前从未见过的那一类护照中的信息。同样只要数字证书是标准化的则无论颁发该证书的是哪个机构人们都可以阅读并理解该证书。 S/MIME 标准规定用于 S/MIME 的数字证书应遵守国际电信同盟 (ITU) X.509 标准。S/MIME版本 3 明确要求数字证书应遵循 X.509 的第 3 版。由于 S/MIME 依赖于已建立的数字证书结构公认标准因此 S/MIME 标准建立在该标准的发展之上从而提高了它的认可度。X.509 标准规定数字证书应包含标准化信息。具体地说X.509 版本 3 证书包含下列字段
版本号 证书所遵循的 X.509 标准的版本。序列号 唯一标识证书且由证书颁发机构颁发的编号。签名算法 CA用于对证书进行数字签名的hash算法。颁发者名称 实际颁发该证书的证书颁发机构的标识。有效期 数字证书保持有效的时间段并包含起始日期和过期日期。使用者名称 数字证书所有者的姓名。使用者公钥信息 与数字证书所有者关联的公钥以及与该公钥关联的特定公钥算法。颁发者唯一标识符 可以用来唯一标识数字证书颁发者的信息。使用者唯一标识符 可以用来唯一标识数字证书所有者的信息。扩充信息 与证书的使用和处理有关的其他信息。证书颁发机构的数字签名 使用指纹算法中指定的HASH算法以及证书颁发机构的私钥进行加密的数字签名。 服务器生成的随机数稍后用于生成对话密钥 3. 客户端利用服务器传过来的信息验证服务器的合法性。如果合法性验证没有通过通讯将断开如果合法性验证通过则可以知道认证服务器的公开密钥的是真实有效的数字证书认证机构并且服务器的公开密钥是值得信赖的。此处认证机关的公开密钥必须安全地转交给客户端。使用通信方式时如何安全转交是一件很困难的事因此多数浏览器开发商发布版本时会事先在内部植入常用认证机关的公开密钥。
4. 客户端随机产生一个用于后面通讯的对称密钥然后用服务器的公钥对其加密然后将加密后的对称密钥传给服务器。
HTTPS的安全通信机制 client向server发送请求https://baidu.com然后连接到server的443端口发送的信息主要是随机值1和客户端支持的加密算法。 server接收到信息之后给予client响应握手信息包括随机值2和匹配好的协商加密算法这个加密算法一定是client发送给server加密算法的子集。 随即server给client发送第二个响应报文是数字证书。服务端必须要有一套数字证书可以自己制作也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过才可以继续访问而使用受信任的公司申请的证书则不会弹出提示页面这套证书其实就是一对公钥和私钥。传送证书这个证书其实就是公钥只是包含了很多信息如证书的颁发机构过期时间、服务端的公钥第三方证书认证机构(CA)的签名服务端的域名信息等内容。 客户端解析证书这部分工作是由客户端的TLS来完成的首先会验证公钥是否有效比如颁发机构过期时间等等如果发现异常则会弹出一个警告框提示证书存在问题。如果证书没有问题那么就生成一个随即值预主秘钥。 客户端认证证书通过之后接下来是通过随机值1、随机值2和预主秘钥组装会话秘钥。然后通过证书的公钥加密会话秘钥。 传送加密信息这部分传送的是用证书加密后的会话秘钥目的就是让服务端使用秘钥解密得到随机值1、随机值2和预主秘钥。 服务端解密得到随机值1、随机值2和预主秘钥然后组装会话秘钥跟客户端会话秘钥相同。 客户端通过会话秘钥加密一条消息发送给服务端主要验证服务端是否正常接受客户端加密的消息。
同样服务端也会通过会话秘钥加密一条消息回传给客户端如果客户端能够正常接受的话表明SSL层连接建立完成了
工作流程可大致分为三个阶段
1、认证服务器浏览器内置一个受信任的CA机构列表并保存了这些CA机构的证书。第一阶段服务器会提供经CA机构认证颁发的服务器证书如果认证该服务器证书的CA机构存在于浏览器的受信任CA机构列表中并且服务器证书中的信息与当前正在访问的网站域名等一致那么浏览器就认为服务端是可信的并从服务器证书中取得服务器公钥用于后续流程。否则浏览器将提示用户根据用户的选择决定是否继续。当然我们可以管理这个受信任CA机构列表添加我们想要信任的CA机构或者移 除我们不信任的CA机构。
2、协商会话密钥客户端在认证完服务器获得服务器的公钥之后利用该公钥与服务器进行加密通信协商出两个会话密钥分别是用于加密客户端往服务端发送数据的客户端会话密钥用于加密服务端往客户端发送数据的服务端会话密钥。在已有服务器公钥可以加密通讯的前提下还要协商两个对称密钥的原因是因为非对称加密相对复杂度更高在数据传输过程中使用对称加密可以节省计算资源。另外会话密钥是随机生成每次协商都会有不一样的结果所以安全性也比较高。
3、加密通讯此时客户端服务器双方都有了本次通讯的会话密钥之后传输的所有Http数据都通过会话密钥加密。这样网路上的其它用户将很难窃取和篡改客户端和服务端之间传输的数据从而保证了数据的私密性和完整性。
4、PKIPublic Key Infrastructure公钥基础设施是提供公钥加密和数字签名服务的系统或平台目的是为了管理密钥和证书。一个机构通过采用PKI 框架管理密钥和证书可以建立一个安全的网络环境。PKI 主要包括四个部分
1. X.509 格式的证书X.509 V3和证书废止列表CRLX.509 V2 2. CA 操作协议 3. CA管理协议 4. CA 政策制定。
X.509通用的证书格式包含三个文件keycsrcrt。
key是私钥文件。csr是证书签名请求文件用于提交给证书颁发机构CA对证书签名。crt是由证书颁发机构CA签名后的证书或者是开发者自签名的证书包含证书持有人的信息持有人的公钥以及签署者的签名等信息。
-----------------------------------------RHEL7-----------------------------------
-
(第一种) [rootlocalhost certs]# make jiami.crt
--------------------------------------------------------------------------------
-----
注意
(第二种) #openssl req -newkey rsa:4096 -nodes -sha256 -keyout haha.key -x509 -days 365 -out haha.crt
-------------------------------------x509 key csr crt---------------------------
[rootwww certs]# openssl genrsa -aes128 2048 openlab.key
(第三种) #openssl req -utf8 -new -key openlab.key -x509 -days 365 -out openlab.crt [rootlocalhost ~]# yum install mod_ssl -y [rootlocalhost ~]# vim /etc/httpd/conf.d/host.conf [rootlocalhost ~]# systemctl restart httpd 通过浏览器访问或者curl --insecure https://IP地址 二、搭建基于https协议的静态网站
第一步关闭防火墙和SELinux
[rootlocalhost node1]# systemctl stop firewalld
[rootlocalhost node1]# setenforce 0
第二步安装httpd 准备工作web服务器搭建
1、挂载
[rootlocalhost node1]# mount /dev/sr0 /mnt/ 2、编辑配置文件
[rootlocalhost node1]# vim /etc/yum.repos.d/web.repo
[BaseOS]
nameBaseOS
baseurlfile:///mnt/BaseOS
gpgcheck0[AppStream]
nameAppStream
baseurlfile:///mnt/AppStream
gpgcheck0 3、安装软件包
[rootlocalhost node1]# dnf install httpd -y [rootlocalhost ~]# rpm -ql httpd [rootlocalhost httpd]# tree /etc/httpd
/etc/httpd
├── conf
│ ├── httpd.conf
│ └── magic
├── conf.d
│ ├── autoindex.conf
│ ├── README
│ ├── userdir.conf
│ └── welcome.conf
├── conf.modules.d
│ ├── 00-base.conf
│ ├── 00-dav.conf
│ ├── 00-lua.conf
│ ├── 00-mpm.conf
│ ├── 00-proxy.conf
│ ├── 00-systemd.conf
│ └── 01-cgi.conf
├── logs - ../../var/log/httpd
├── modules - ../../usr/lib64/httpd/modules
└──
run - /run/httpd 4、启动httpd
[rootlocalhost node1]# systemctl start httpd.service
注1、启动用start再次启动用restart2、.service后缀可加可不加
查看配置文件
[rootlocalhost node1]# rpm -ql httpd | grep etc 5、设置防火墙状态
[rootlocalhost ~]# systemctl status firewalld
[rootlocalhost ~]#systemctl stop firewalld#可不用
[rootlocalhost ~]#systemctl disable firewalld 注意 systemctl start/restart/enable/disable/stop/status/reload 的区别 重启服务:
[rootlocalhost ~]# systemctl restart httpd
查看状态 查看是否启动成功
[rootlocalhost node1]# systemctl is-active httpd
active##测试状态代码
[rootlocalhost node1]# systemctl stop httpd.service
[rootlocalhost node1]# systemctl is-active httpd
inactive
6、测试
在客户端curl http://ip地址 curl -I 可以查看http报文信息通过浏览器访问http://ip地址 第三步安装mod_ssl模块
mod_ssl是一种以openssl 的工具箱为基础专门为apache webserver 提供密码保护的软件
[rootlocalhost node1]# dnf install mod_ssl -y [rootlocalhost node1]# rpm -ql mod_ssl 第四步、生成密钥
方法一
-----------------------------------------RHEL7-----------------------------------
[rootlocalhost certs]# make jiami.crt
方法二
[rootlocalhost node1]# cd /etc/pki/tls/certs/
[rootlocalhost certs]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout haha.key -x509 - days 365 -out https.crt 生成本地密钥可任意填写 方案三
1、创建自私钥
[rootlocalhost node1]# cd /etc/pki/tls/certs/
[rootlocalhost certs]# /usr/bin/openssl genrsa -aes128 2048 https.key 2、颁发证书和公钥
[rootlocalhost certs]# openssl req -utf8 -new -key https.key -x509 -days 365 -out https.crt 对于 https.key 和 https.crt 这种非对称的加密文件只有所属者才能可读可写所以需要修改这两个文件的权限 [rootlocalhost certs]# chmod 600 https.crt https.key 注 公钥和私钥配置默认路径 /etc/pki/tls/private 证书文件默认路径 /etc/pki/tls/certs/ 第五步定义基于https协议的静态网站的配置文件
1、查看示例
[rootlocalhost node1]# vim /etc/httpd/conf.d/ssl.conf
VirtualHost 192.168.126.140:443
• SSLEngine on ##开启认证引擎
• SSLHonorCipherOrder on #密码算法套件
• SSLProtocol all -SSLv2
• SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA密码套件列出允许客户端协商的
密码。
• SSLCertificateFile /etc/pki/tls/certs/jiami.crt指定证书路径
• SSLCertificateKeyFile /etc/pki/tls/certs/jiami.key指定密钥文件路径
• DocumentRoot /www/jiami
• ServerName 192.168.126.140
/VirtualHost 2、配置文件 [rootlocalhost node1]# vim /etc/httpd/conf.d/https.conf
VirtualHost 192.168.17.171:443ServerName 192.168.17.171DocumentRoot /www/httpsSSLEngine onSSLCertificateFile /etc/pki/tls/certs/https.crt SSLCertificateKeyFile /etc/pki/tls/certs/https.key
/VirtualHostDirectory /www/httpsAllowOverRide noneRequire all granted
/Directory 第六步创建资源文件
[rootlocalhost certs]# cd /etc/httpd/conf.d/
[rootlocalhost conf.d]# mkdir /www/https -pv [rootlocalhost conf.d]# echo this is https /www/https/index.html
第七步重启 httpd 服务
[rootlocalhost node1]# systemctl restart httpd
使用第三中方法会弹出来需要输入密钥的窗口第二种则正常重启 第八步查看
[rootlocalhost conf.d]# curl https://192.168.17.171 -k
this is https