简介HTTPS
HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),时以安全为主要目标的HTTP通道,简单讲是HTTP的安全版。它的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
HTTPS解决的问题:
一、解决了信任主机的问题:采用https的服务器必须从CA (Certificate Authority)
申请一个用于证明服务器用途类型的证书。该证书只有用于对应的服务器的时候,客户端才信任此主机。客户通过信任该证书,从而信任了该主机。
二、解决了通讯过程中的数据的泄密和被篡改的问题:服务器和客户端之间的所有通讯,都是加密的,加密的详细内容就需要SSL
客户端通过https方式访问服务器的过程:
1.客户机通过https访问web服务器,web服务器向客户机出示自己的证书
- 客户机验证证书的有效性,包括发证时间,发证机关,执行者标识。
3.如果客户机验证证书通过,客户机随机产生128位的key,再利用证书文件传递的public key对该随即key机进行加密。
4.加密后传送至服务器端,服务器再利用自己的public key对加密的key进行解密,得到客户机的随机key值。
5.这时两端的key值相同,利用该key进行加密通讯。
实现Https的详细步骤
开启一台linux机器作为web服务器,例如centos6.9,地址为172.16.253.88,先在web服务器上准备好光盘和yum源,并安装好httpd
安装httpd软件包,建立www服务器:
[root@centos6 ~]#yum install httpd
在这个www服务器的机器上做个小的页面,里面内容就是“hello internet
”:
编辑httpd的主配置文档:
[root@centos6 html]#vim /etc/httpd/conf/httpd.conf
改变此行,开启身份验证:
然后编辑.htaccess文件(这是个隐藏文件),用来创建身份验证的一个文件:
[root@centos6 html]#vim .htaccess
添加几行命令:
验证用户文件的位置;验证的基本方式;提示语;设置中有有效账户才能访问
编辑好之后保存退出;
添加登陆web的用户:
用户user1添加完成; 当再次增加一个用户时,不要再加参数 -c 了; 如果加上 -c 时,user1就会被挤掉,所以只是第一次增加用户时才加上参数 -c ;
查看信息:
启动 httpd 服务:
[root@centos6 www]#service httpd start
完成了httpd的一系列操作,已经可以用http服务web站点了,但是不安全,我们要用https安全访问web站点,这样我们要做CA服务器 创建证书CA服务器:
进入pki目录,编辑CA的配置文件:
把原来的参数改为optional,这样外来站点可以访问CA:
更改默认值,当向CA提出申请的时候,可以简单明了:
创建上面文件中提到的目录和文件:
创建序列号,并追加到serial中:
[root@centos6 CA]#echo "01" >serial
先产生CA服务器自己的私钥; 添加1024位的非对称钥匙:
把产生的私钥放在private/cakey.pem文件中:
为安全起见去掉里面的权限:
有了钥匙,再来产生CA服务器自己的证书:
根据自己的情况填写里面的内容:
然后做WEB服务器的证书和私钥:
新建一个文件,来存放私钥和证书:
创建Web服务器的私钥:
Web服务器通过自己的私钥创建一个证书请求:
CA服务器根据请求给web服务器一个证书:
为了证书的安全性,修改证书文件的权限:
Alt textWeb服务器有了证书和私钥,必须向客户端显示自己的证书,需要安装ssl模块:
现在可以看到mod-ssl的包:
用yum安装mod-ssl软件包即可:
[root@centos6 cd]#yum install mod_ssl
回到httpd目录下,可以看到一个新产生的文件
编辑这个文件:
[root@centos6 conf.d]#vim ssl.conf
检查编辑的是否有语法错误:
[root@centos6 conf.d]#service httpd configtest
Syntax OK
重启httpd服务:
完成后就可以安全的访问了:
测试结果:
在你机器的windows上找到 C:\windows\System32\drivers\etc
在hosts文件中加上一条信息
我的浏览器可能有点问题无法访问,所以我在centos7机上安装了links; 然后直接用links www.zzdx.com连接了,输入用户名(user1或者时user2)和密码。
可以看到我们在web服务器上做的网页内容:
或者也可以在浏览器上访问 https://www.zzdx.com
到此我们就完成了https访问web站点的操作。
网友评论