一.https 简介

      HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的安全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是像HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。  也就是说它的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

二.实现原理及流程

SSL协议的握手过程

    为了便于更好的认识和理解SSL 协议,这里着重介绍SSL 协议的握手协议。SSL 协议既用到了公钥加密技术又用到了对称加密技术,对称加密技术虽然比公钥加密技术的速度快,可是公钥加密技术提供了更好的身份认证技术。SSL 的握手协议非常有效的让客户和服务器之间完成相互之间的身份认证,其主要过程如下: 

    ①客户端的浏览器向服务器传送客户端SSL 协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息。 

    ②服务器向客户端传送SSL 协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书。 

   ③客户利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,通讯将断开;如果合法性验证通过,将继续进行第四步。 

   ④用户端随机产生一个用于后面通讯的“对称密码”,然后用服务器的公钥(服务器的公钥从步骤②中的服务器的证书中获得)对其加密,然后将加密后的“预主密码”传给服务器。 

   ⑤如果服务器要求客户的身份认证(在握手过程中为可选),用户可以建立一个随机数然后对其进行数据签名,将这个含有签名的随机数和客户自己的证书以及加密过的“预主密码”一起传给服务器。 

   ⑥如果服务器要求客户的身份认证,服务器必须检验客户证书和签名随机数的合法性,具体的合法性验证过程包括:客户的证书使用日期是否有效,为客户提供证书的CA 是否可靠,发行CA 的公钥能否正确解开客户证书的发行CA 的数字签名,检查客户的证书是否在证书废止列表(CRL)中。检验如果没有通过,通讯立刻中断;如果验证通过,服务器将用自己的私钥解开加密的“预主密码”,然后执行一系列步骤来产生主通讯密码(客户端也将通过同样的方法产生相同的主通讯密码)。 

   ⑦服务器和客户端用相同的主密码即“通话密码”,一个对称密钥用于SSL 协议的安全数据通讯的加解密通讯。同时在SSL 通讯过程中还要完成数据通讯的完整性,防止数据通讯中的任何变化。 

   ⑧客户端服务器端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知服务器客户端的握手过程结束。 

   ⑨服务器向客户端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知客户端服务器端的握手过程结束。 

   ⑩SSL 的握手部分结束,SSL 安全通道的数据通讯开始,客户和服务器开始使用相同的对称密钥进行数据通讯,同时进行通讯完整性的检验。

三.基于多ip站点的简介

       实现同一台主机上添加多块网卡。配置多个服务器站点。实现原理是在httpd的服务器配置文件中添加多个虚拟主机。格式如下:

<VirtualHost  站点的ip地址:80>

//虚拟主机的框体,指明主机的ip地址及使用端口

ServerAdmin      master@sina.com.cn

//指定管理员的邮箱

DocumentRoot     /var/www/html

//当前站点名称为“www.abc.com”的服务器的主目录

ServerName       www.abc.com

//当前站点名称为“www.abc.com”

ErrorLog         logs/www_80_error_log

//当前站点的错误日志

CustomLog logs/www_80_access_log common

//当前站点的访问日志

</VirtualHost >

//虚拟主机的结束框体

 

四.实验案例

 

案例名: 在多ip的主机上实现加密传输

案例目的:实现同一个主机的多站点共存。并实现主目录能够不加密的简单访问,访问tec 及 mkt 站点需要使用加密的方式访问。

案例配置过程,如下:

1.安装httpd服务器

Yum   install  httpd

2.修改"/etc/httpd/conf"目录下的 httpd.conf 文件。

Vim /etc/httpd/conf/httpd.conf

编辑内容如下

134     Listen 192.168.10.244:80

//监听 192.168.10.244 网卡的 80 端口

985 <VirtualHost 192.168.10.244:80>

986     ServerAdmin master@sina.com.cn

987     DocumentRoot /var/www/html

988     ServerName www.abc.com

989     ErrorLog logs/www_80_error_log

990   CustomLog logs/www_80_access_log common

991 </VirtualHost>

3.创建站点主目录

Mkdir  /var/www/etc

Cd    /var/www/etc

Echo "welcome to my  tec  home " &gt;&gt;index.html

Mkdir  /var/www/mkt

Cd    /var/www/mkt

Echo "welcome to my  mkt  home " &gt;&gt;index.html

4.新建CA认证服务器

①.cd  /etc/pki/CA/

//切换到CA的主目录

②.新建两个文件三个文件夹

mkdir  certs  crl  newcerts

  touch index.txt

  touch serial

  echo "01" &gt;&gt;serial

③. 生成密钥

openssl  genrsa 1024 &gt;private/cakey.pem

修改 密钥的权限

chmod 600 private/cakey.pem

④.创建自签名证书

openssl req -new -key  private/cakey.pem -x509 -out cacert.pem -days  3650

5.生成服务器的密钥,请求文件,证书。

①.mkdir -pv   /etc/httpd/certs

//新建密钥的目录

②.cd  /etc/httpd/certs/

//切换到该目录

③.openssl  genrsa  1024 &gt;httpd.key

//生成密钥

④.openssl  req -new  -key httpd.key -out httpd.csr

//创建请求文件

⑤.openssl  ca  -in httpd.csr   -out  httpd.cert

//创建证书

6.安装mod_ssl

rpm -ivh  mod_ssl-2.2.3-31.el5.i386.rpm

7. 修改"/etc/httpd/conf.d/"目录下的ssl.conf

Vim  /etc/httpd/conf.d/ssl.conf

233 <VirtualHost 192.168.10.243:443>

234 DocumentRoot "/var/www/tec"

235 ServerName tec.cj.com:443

236 ErrorLog logs/tec_ssl_error_log

237 TransferLog logs/tec_ssl_access_log

238 LogLevel warn

239 SSLEngine on

240 SSLProtocol all -SSLv2

241 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW

242 SSLCertificateFile /etc/httpd/certs/httpdtec.cert

243 SSLCertificateKeyFile /etc/httpd/certs/httpdtec.key

244 SSLCertificateChainFile /etc/pki/CA/cacert.pem

245 </VirtualHost>

246 <VirtualHost 192.168.10.242:443>

247 DocumentRoot "/var/www/mkt"

248 ServerName mkt.cj.com:443

249 ErrorLog logs/mkt_ssl_error_log

250 TransferLog logs/mkt_ssl_access_log

251 LogLevel warn

252 SSLEngine on

253 SSLProtocol all -SSLv2

254 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW

255 SSLCertificateFile /etc/httpd/certs/httpdmkt.cert

256 SSLCertificateKeyFile /etc/httpd/certs/httpdmkt.key

257 SSLCertificateChainFile /etc/pki/CA/cacert.pem

258 </VirtualHost>

8.重新启动httpd服务

Service  httpd   restart

9.安装bind 服务器

Yum  install   bind

10.在"/var/named/chroot/etc"目录下创建并修改named.conf

15         listen-on port 53 { any; };

//开启监听的 53 端口

27         allow-query     { any; };

//允许查询

28         allow-query-cache { any; };

//查询缓存

37         match-clients      { any; };

//匹配主机

38         match-destinations { any; };

//目的匹配

11.在区域生命文件中添加区域记录

26 zone "cj.com" IN {    //区域声明

27         type master;

28         file "cj.com.zone";

29         allow-update { none; };

30 };

32 zone "abc.com" IN {  //区域声明

33         type master;

34         file "abc.com.zone";

35         allow-update { none; };

36 };

12.创建对应的区域文件

Cp   -p  localhost.zone   abc.com.zone

Cp   -p  localhost.zone   cj.com.zone

[root@donghao244 named]# vim cj.com.zone

$TTL    86400

@  IN SOA  ns.cj.com.     root (

    42      ; serial (d. adams)

   3H       ; refresh

   15M      ; retry

   1W     ; expiry

     1D )    ; minimum

@       IN NS        ns.cj.com.

ns       IN A         192.168.10.244

tec       IN A         192.168.10.243

mkt      IN A         192.168.10.242

[root@donghao244 named]# vim abc.com.zone

$TTL    86400

@        IN SOA  ns.abc.com.       root (

     42     ; serial (d. adams)

    3H      ; refresh

    15M    ; retry

    1W     ; expiry

    1D )    ; minimum

@       IN NS           ns.abc.com.

ns       IN A            192.168.10.244

www    IN A            192.168.10.244

13.启动bind服务器

Service named restart

//重新启动dns 服务器

14.测试截图

https传输基于多ip实现的网站数据传输_https

安装证书

https传输基于多ip实现的网站数据传输_超文本传输协议_02

 安装 CA 的自签名证书

https传输基于多ip实现的网站数据传输_https_03

 查看访问的站点的证书

https传输基于多ip实现的网站数据传输_https_04

 安装 CA 及 站点的证书

https传输基于多ip实现的网站数据传输_https_05

不加密形式主站点可以访问

https传输基于多ip实现的网站数据传输_ssl_06

不加密方式两个子站点不能访问

https传输基于多ip实现的网站数据传输_超文本传输协议_07

不能访问

https传输基于多ip实现的网站数据传输_多ip搭建的多站点_08

五.实验总结

实验中的错误有

1.密钥的路径错误

编辑   Vim /etc/httpd/conf.d/ssl.conf

2.服务器未重启的错误

Service  httpd  restart

Service  named  restart

3.Ie浏览器未清空的错误

菜单栏上的“工具”---》“internat 选项”---》“浏览历史记录”---》勾选“退出时删除浏览历史记录”---》“删除”。勾选所有并应用推出。

4.本地dns缓存未清空

在window客户端使用“ipconfig  /flushdns”