Apache服务器(2)-https协议

  1. HTTPS协议简介

     HTTPS(Hypertext Transfer Protocol over Secure Socket Layer,基于SSL的HTTP协议)使用了HTTP协议,但HTTPS使用不同于HTTP协议的默认端口及一个加密、身份验证层(HTTP与TCP之间)。这个协议的最初研发由网警公司进行,提供了身份验证与加密通信方法,现在它被广泛应用于互联网上安全敏感的通信。

     在访问HTTPS网站时,客户端输入的URL路径中的http必须改为https。

     客户端在使用HTTPS方式与WEB服务器通信时有以下几个步骤。

(1)客户使用https的URL访问web服务器,要求与web服务器建立SSL连接。

(2)Web服务器收到客户端请求后,会将网站的证书(证书中包含公钥)传送一份给客户端。

(3)客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。

(4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。

(5)Web服务器利用自己的私钥解密出会话密钥。

(6)Web服务器利用会话密钥加密与客户端之间的通信。

2、HTTPS配置

   Apache实现HTTPS需要使用mod_ssl模块,无论采用下述哪种方式配置HTTPS首先需要安装该模块。

2.1 自颁发证书

自颁发证书是指HTTPS所使用的整数不是有一个权威的整数颁发机构(CA)所颁发,这样在客户端访问网站时会收到“该证书由您没有信任的公司颁发或类似的警告信息。”

(1)使用如下命令安装mod_ssl模块。

     Yum install mod_ssl.i

(2)建立一个用于存放证书的目录

     Mkdir  /usr/local/httpd/.sslkey

(3)建立网站私钥文件

     Cd /usr/local/httpd/.sslkey

     Openssl  genrsa   -out  server.key  1024

(4)建立网站证书文件,在建立网站证书时需要输入相关信息,这些信息可根据需要输入,但“Common Name”必须是客户端访问时的FQDN

     Cd /usr/local/httpd/.sslkey

     Openssl  req  -new  -x509  -key  server.key  -out  server.crt

(5)为了保证证书文件安全,可修改证书存放目录的权限

     Chmod  -R  400  /etc/httpd/.sslkey

(6)配置网站为HTTPS

     NameVirtialHost   192.168.0.10:80

    <VirtualHost   192.168.0.10:443>              //将网站侦听端口改为443     

        DocumentRoot   /var/site/bbs.example.com

        ServerName      bbs.example.com

        SSLEngine  on                        //开启SSL

        SSLCertificateFifle  /usr/local/httpd/.sslkey/server.crt      //指定证书文件

        SSLCertificateKeyFile  /usr/local/httpd/./sslkey/server.key    //指定私钥文件

    </VirtualHost>

 

2.2  CA颁发证书

   如果希望使用一个客户端信任的CA的整数必须首先生成一个CA的信任整数(当然也可以找一些商业机构申请网站证书)

(1)使用如下命令安装mod_ssl模块。

     Yum  install  mod_ssl.i*

(2)建立一个用于存放证书的目录

     Mkdir  /usr/local/httpd/.sslkey

(3)建立CA私钥,在建立CA私钥时系统会要求设置一个密码

     Cd  /usr/local/httpd/.sslkey

Openssl   genrsa  -des3  -out   ca.key  1024

(4)建立CA信任证书。在建立CA信任证书时系统首先会要求输入CA私钥的密码(上一步中设置的),然后输入CA的相关信息,这些信息可根据需要输入,其中Common  Name是CA的名字

     Cd  /usr/local/httpd/.sslkey

     Openssl  req  -new  -x509  -key  ca.key   -out   ca.crt

(5)建立网站私钥文件,在建立网站私钥时系统会要求设置一个密码

     Cd  /usr/local/.sslkey

     Openssl  genrsa  -des3  -out  server.key  1024

(6)使用网站私钥建立网站证书请求文件。在建立网站证书时系统首先会要求输入网站私钥的密码(上一步中设置的),这些信息可根据需要输入(“A challenge password” “An optional company name” 不需要输入直接回车),但Common Name必须是客户端访问网站时的FQDN。

     Cd  /etc/httpd/.sslkey

     Openssl  req  -new  -key   server.key   -out  server.csr

(7)使用脚本让CA签署网站的证书请求,在CA签署网站的整数请求时会要求输入CA私钥的密码。(该脚本本应在mod_ssl的源码包的pkg.contrib目录中,可以下载mod_ssl的源码包后,在其中找到sign.sh脚本使用)。

     Cd  /etc/httpd/.sslkey

     ./sign.sh   server.csr

(8)为了保证证书文件安全,可修改证书存放目录的权限。

     Chmod  -R  400  /usr/local/httpd/./sslkey

(9)配置网站为HTTPS。

      NameVirtialHost   192.168.0.10:80

    <VirtualHost   192.168.0.10:443>              //将网站侦听端口改为443     

        DocumentRoot   /var/site/bbs.example.com

        ServerName      bbs.example.com

        SSLEngine  on                        //开启SSL

        SSLCertificateFifle  /usr/local/httpd/.sslkey/server.crt      //指定证书文件

        SSLCertificateKeyFile  /usr/local/httpd/./sslkey/server.key    //指定私钥文件

    </VirtualHost>

在上述配置完成后,可将/usr/local/httpd/.sslkey/ca.crt(CA的信任证书)文件安装到客户端(把ca.crt复制到windows客户端后,双击后直接点击下一步安装)

3、要求客户端证书

     无论是使用自颁发证书还是生成CA颁发证书的配置中,客户端在连接后,apache会将网站的证书传输给客户端,而不检查客户端是否拥有相应证书。通过如下配置可以让Apache检查客户端是否拥有相应证书(只有拥有相应证书的客户端才可以访问网站)

(1)修改网站的HTTPS配置

     NameVirtialHost   192.168.0.10:80

    <VirtualHost   192.168.0.10:443>                

        DocumentRoot   /var/site/bbs.example.com

        ServerName      bbs.example.com

        SSLEngine  on                        

        SSLCertificateFifle  /usr/local/httpd/.sslkey/server.crt      

        SSLCertificateKeyFile  /usr/local/httpd/./sslkey/server.key

        SSLVerifyClient  require

        SSLVerifyDepth  1    

</VirtualHost>

 

(2)使用如下命令建立客户端证书,建立客户端证书首先会要求输入网站私钥的密码,然后设置客户端证书的密码

 

     Cd  /usr/local/httpd/./sslkey

     Openssl  pkcsl2  -export  -in  server.crt  -inkey  server.key   -out  client.p12  -name “client”

(3)将生成的client.pl2安装到客户端(把client.pl2复制到windows客户端后,双击后直接单击下一步安装)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值