天天看点

httpd系列之三:https网络传输的实现

一、前言

1、http服务器安装方式

   这里主要讲的是https的实现,所以使用yum方式安装httpd,而不是编译安装

2、系统环境

   CentOS6.4

3、服务器环境

   私有CA和httpd服务器在同一台服务器上搭建

二、创建私有CA

HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

   如果一个组织、一个机构想要通过最具性价比的方式实现https的功能,那么通过使用openssl来实现是一个不错的选择。而如果是大公司,大机构,那样的跨国公司就不需要使用此工具了,而是使用open CA来实现

1、使用openssl实现么有CA

   1)生成CA的密钥对

1

2

<code>#cd /etc/pki/CA/</code>

<code>#(umask 077;openssl genrsa -out private/cakey.pem 2048)</code>

   2)生成自签证书

<code>#openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 36500</code>

   3)创建需要的文件

<code>#touch index.txt serial crlnumber</code>

<code>#echo 01 &gt; serial</code>

<a href="http://s3.51cto.com/wyfs02/M00/23/A7/wKiom1M9P-axpG2JAACsfS-tzWs260.png" target="_blank"></a>

2、用openssl实现证书申请

   1)在主机上生成密钥,保存到应用此证书的服务的配置文件目录下

3

<code>#mkdir /etc/httpd/ssl</code>

<code>#cd /etc/httpd/ssl</code>

<code>#(umask 077;openssl genrsa -out httpd.key 1024)</code>

   2)生成证书签署请求

<code>#openssl req -new -key httpd.key -out httpd.csr</code>

<a href="http://s3.51cto.com/wyfs02/M02/23/A8/wKioL1M9P-fwZ8LlAACej6BWZ-Q471.png" target="_blank"></a>

3、CA签署证书

<code>#openssl ca -in /etc/httpd/ssl/httpd.csr -out /etc/httpd/ssl/httpd.cer -days 36500</code>

<a href="http://s3.51cto.com/wyfs02/M01/23/A7/wKiom1M9QCjAn23EAACVwd75Bmw907.png" target="_blank"></a>

4、导出httpd.cer到windows主机

   为了稍后用windows主机做ssl的测试,先把生成的证书传到windows客户端上去,我这里使用了xshell管理工具,所以就yum了一个lrzsz的工具,就可以直接和windows进行文件传输了,很方便

<a href="http://s3.51cto.com/wyfs02/M02/23/A7/wKiom1M9QOPic75LAACaaT65FpQ294.png" target="_blank"></a>

5、安装证书

<a href="http://s3.51cto.com/wyfs02/M01/23/A8/wKioL1M9QODxCmueAAIYYVe8l_4174.png" target="_blank"></a>

三、安装配置httpd服务器

1、安装httpd服务

<code>#yum -y install httpd</code>

2、基于mod_ssl模块实现对ssl的支持

   1)安装mod_ssl模块

<code>#yum -y install mod_ssl</code>

   2)查看mod_ssl的安装位置

<a href="http://s3.51cto.com/wyfs02/M02/23/A8/wKioL1M9QRjR90cVAAAxS_5f4QU914.png" target="_blank"></a>

   3)配置/etc/httpd/conf.d/ssl.conf

   ①、配置使用ssl的虚拟主机

<a href="http://s3.51cto.com/wyfs02/M01/23/A7/wKiom1M9QVjQsSLpAAA5rkMB8nE381.png" target="_blank"></a>

   ②、配置证书和公钥

       这里必须要配置证书和公钥,因为你使用的是https,客户在访问你的网站时,是经过加密传输的,而刚才在客户机上装了证书就是为了让客户能够把加密过的数据发送给我们,再用我们服务器的私钥去解密,从而保证网络传输的安全

<a href="http://s3.51cto.com/wyfs02/M02/23/A7/wKiom1M9QWmA5ZnxAABN7KnMkHs860.png" target="_blank"></a>

   4)启动httpd服务并查看端口是否监听成功

<a href="http://s3.51cto.com/wyfs02/M01/23/A8/wKioL1M9QVCCYWmUAAA0v443MdY071.png" target="_blank"></a>

四、测试

   保证windows主机与linux主机在同一网段中,在浏览器中输入httpd的名称进行访问

<a href="http://s3.51cto.com/wyfs02/M00/23/A8/wKioL1M9Qbyw3oWLAAClTUV3lRE031.png" target="_blank"></a>

因为是我们自建的CA,所以会提示证书不受信任,无所大碍,我们仍然继续

成功访问,实现https网络传输成功!

本文转自 nmshuishui 51CTO博客,原文链接:http://blog.51cto.com/nmshuishui/1390093,如需转载请自行联系原作者

继续阅读