Apache中https的详解及应用案例

Apache中https的详解及应用案例

一、https的简介

它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版。

它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的安全全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。

二、https中的工作原理

https的工作原理过程,如图1所示:

图1:https的工作原理图

从上面的工作原理图可以看出:①客户端产生的密钥只有客户端和服务器端能得到。②加密的数据只有客户端和服务器端才能得到明文。③客户端到服务端的通信是安全的。

三、https中的两种加密算法

https的两种基本加密算法是:对称加密算法,非对称加密算法(公私钥加密),下面介绍这两种加密算法的特点:

1、对称加密算法:

对称加密的密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES、AES等,如图2所示:

图2:对称加密

2、非对称加密算法:

非对称加密的密钥是成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥),加密解密使用不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有RSA、DSA等,如图3所示:

图3:非对称加密

根据上面的两种加密方法,我们就可以设计一种无法让他人在互联网上知道你的通讯信息的加密方法,步骤如下:

①在服务器端产生一个公钥和私钥。

②客户端从服务器取得这个公钥。

③客户端产生一个随机的密钥。

④客户端通过公钥对密钥加密(非对称加密)

⑤客户端发送到服务器端

⑥服务器端接受这个密钥并且以后的服务器端和客户端的数据全部通过这个密钥加密(对称加密)

四、https的应用案例

案例(站点安全维护)

(1)实施环境:Centos 64为,PC机

(2)案例要求:

现有一个网站站点,要求允许某个网段的人访问,不允许其他人访问,并且访问要通过用户验证访问。

(3)实施拓扑图:

根据实施的要求使用绘图工具绘制出网络拓扑图,如图4所示:

图4:网络拓扑图

(4)案例实施:

案例的实施大致可以归纳为以下四点:

① httpd的安装和ssl模块的安装:

首先查看本机是否安装有httpd,如果有可以直接使用,如果没有则,先挂载光盘,然后进入光盘的软件包目录下查找安装包,最后进行安装。

//查看本机是否安装httpd

[[email protected] ~]# rpm -qa httpd  //若果安装则下面会显示安装包,否则没有

//挂载光盘

[[email protected] ~]# mount /dev/cdrom /media/cdrom

mount: block device /dev/sr0 is write-protected, mounting read-only  //显示光盘已挂载上

//进入光盘的安装目录下

[[email protected] ~]# cd /media/cdrom/Packages/

//查找有关httpd的安装包

[[email protected] Packages]# ll |grep httpd

-r--r--r--. 2 root root   840792 Feb 24  2013 httpd-2.2.15-26.el6.centos.x86_64.rpm  //httpd的安装包

-r--r--r--. 2 root root    74100 Feb 24  2013 httpd-tools-2.2.15-26.el6.centos.x86_64.rpm  //httpd工具安装包

//使用yum工具把这两个安装包安装上

[[email protected] Packages]# yum install httpd-2.2.15-26.el6.centos.x86_64.rpm httpd-tools-2.2.15-26.el6.centos.x86_64.rpm

//httpd的相关软件包安装完后,然后查找ssl模块,

[[email protected] Packages]# ll |grep ssl

-r--r--r--. 2 root root    92248 Feb 24  2013 mod_ssl-2.2.15-26.el6.centos.x86_64.rpm  //这个就是要安装ssl模块

//安装ssl模块

[[email protected] Packages]# yum install mod_ssl-2.2.15-26.el6.centos.x86_64.rpm

//安装完后启动httpd服务

[[email protected] ~]# service httpd start

Starting httpd:                 [  OK  ]  //表明服务已启动

//永久开启httpd服务

[[email protected] ~]# chkconfig httpd on

//查看端口号

[[email protected] ~]# netstat -tupln |grep 80

tcp     0      0 :::80      :::*    LISTEN       2469/httpd   //表明httpd端口已开启

② 编辑身份验证:

httpd安装完后会产生一些配置文件,在这里首先找到配置文件所在的目录,然后编辑配置文件。

//进入/etc/httpd目录下

[[email protected] ~]# cd /etc/httpd

//查看该目录下的配置文件,可以看到两个存放置文件的目录

[[email protected] httpd]# ll

drwxr-xr-x. 2 root root 4096 May 14 14:47 conf  //httpd的配置文件的存放位置。

drwxr-xr-x. 2 root root 4096 May 14 14:47 conf.d  //额外的功能模块的配置文件存放位置

//打开配置文件存放位置conf目录下的httpd.conf配置文件

[[email protected] httpd]# vim conf/httpd.conf

//编辑该配置文件

打开文件后输入:,进入底行模式,在底行模式下输入set nu     //显示行号,然后找到338行进行修改如下:

编辑完后保存退出,然后到主站点目录下编辑一个.htaccess文件,操作如下:

//进入到主站点目录下

[[email protected] httpd]# cd /var/www/html/

//编辑生成一个.htaccess文件

[[email protected] html]# vim .htaccess

//编辑该文件的内容如下:

编辑完后保存退出,又因为在上面编辑时用到了账号库,因此接下来创建账号库。

//查看账号库htpasswd所在的位置

[[email protected] html]# which htpasswd

/usr/bin/htpasswd   //显示出了账号所在的位置

//查看账号库所属的软件包

[[email protected] html]# rpm -qf `which htpasswd`

httpd-tools-2.2.15-26.el6.centos.x86_64  //显示出账号库所属的软件包

//创建账号,操作如下:

//然后进入/var/www目录下看是否有.htpasswd

[[email protected] www]# ll -a  // 加-a表示看所有文件包括隐藏文件

-rw-r--r--.  1 root root   40 May 14 15:39 .htpasswd  //表示已生成账号库文件

//查看账号库文件的内容

[[email protected] www]# cat .htpasswd

user1:cKnI1SE/VKRjs

user2:w7nEdaxrZf94A    //显示刚才已创建的账号

③ 编辑来源控制:

//打开配置文件存放位置conf目录下的httpd.conf配置文件

[[email protected] httpd]# vim conf/httpd.conf

//编辑该配置文件

打开文件后输入:,进入底行模式,在底行模式下输入set nu     //显示行号,找到337行往下,然后编辑,编辑内容如下:

④ 利用非对称加密算法实现加密访问

加密包括非对称加密和对称加密,在上面的加密算法中已提到了两者加密算法的特点,我在这讲的是利用非对称加密算法实现的加密算法,非对称加密算法包括CA的实现和站点证书的生成,具体实现如下操作:

第一步:首先查看你的本机是否安装了openssl,如果未安装进行挂载光盘查找安装。

//查看本机是否安装openssl

[[email protected] ~]# rpm -qa |grep openssl

openssl-1.0.0-27.el6.x86_64  //从这里可以看到已经安装过了,那么就不需安装直接用。

第二步:编辑配置文件,操作如下:

//进入配置文件所在的目录下

[[email protected] ~]# cd /etc/pki/tls

//查看有没有要找的配置文件

[[email protected] tls]# ll

-rw-r--r--. 1 root root 10906 Oct 12  2012 openssl.cnf  //可以看到这个就是我们要找的配置文件

//打开配置文件

[[email protected] tls]# vim openssl.cnf

//查看该配置文件内容如下:

打开文件后输入:,进入底行模式,在底行模式下输入set nu     //显示行号,查看需要配置的内容如下:

从上面的配置文件中可以看到首先在/etc/pki/CA目录下创建两个文件index.txt和serial,然后再产生私钥和公钥。

//创建index.txt文件

[[email protected] CA]# touch index.txt

//创建serial文件

[[email protected] CA]# touch serial

//先产生私钥

[[email protected] CA]# openssl  genrsa  1024  >private/cakey.pem

//查看该私钥文件

[[email protected] CA]# ll private/cakey.pem

-rw-r--r--. 1 root root 891 May 14 21:37 private/cakey.pem

//查看该私钥的内容

[[email protected] CA]# cat private/cakey.pem

//从查看私钥文件可以看出是不安全的,在这里要修改权限

[[email protected] CA]# chmod 600 private/cakey.pem

//从私钥中提取产生公钥,操作如下:

编辑完后公钥就产生了导出CA就实现了,接下来就是站点证书以及私钥的产生,操作如下:

//产生站点私钥

[[email protected] certs]# openssl   genrsa 1024 >httpd.key

//生成站点请求文件

//让CA进行办法证书

[[email protected] certs]# openssl ca   -in   httpd.req   -out httpd.cert

//查看生成的数据

[[email protected] CA]# cat index.txt

V150514150433Z00unknown/C=CN/ST=henan/O=12

//把证书与web进行编辑访问,编辑下列文件如下:

[[email protected] CA]# vim /etc/httpd/conf.d/ssl.conf

编辑完后保存退出,然后重启httpd服务,并查看端口。

//重新启动httpd服务

[[email protected] CA]# service httpd restart

Stopping httpd:                                [  OK  ]

Starting httpd:                                 [  OK  ]

//查看端口

[[email protected] CA]# netstat -tupln |grep httpd

tcp        0      0 :::80           :::*        LISTEN    2799/httpd

tcp        0      0 :::443       :::*      LISTEN    2799/httpd  //从端口可以看出已经开启

因为我们这里使用的是https所以关闭80端口,操作如下:

//打开配置文件

[[email protected] ~]# cd /etc/httpd/conf

打开后然后找到136行把80端口关闭,然后重新启动服务,然后通过网页访问该服务如下:

然后点击安装此证书,然后就完成了。

(5)测试与验证:

在测试前在这里首先创建一个测试网页,具体操作如下:

//进入/var/www/html目录下

[[email protected] httpd]# cd /var/www/html/

//编辑创建测试网页

[[email protected] html]# echo "hello,my name is huangzhong" >index.html

编辑完创建测试网页后,然后进行测时如下:

在客户端上访问该网站,结果如下图:

然后我们在上面输入用户名user1,密码123登录后的结果如下图:

然后测试来源控制只允许192.168.2.101访问不允许其他2.0的网段访问该站点测试结果如下:

从上图可以看到它未访问到测试页面也就是说是不能访问该站点的。

Apache中https的详解及应用案例

时间: 2024-12-28 21:06:35

Apache中https的详解及应用案例的相关文章

JavaWeb中filter的详解及应用案例

一:Filter介绍 Filter可认为是Servlet的一种“变种”,它主要用于对用户请求(HttpServletRequest)进行预处理,也可以对服务器响应(HttpServletResponse)进行后处理,是个典型的处理链.它与Servlet的区别在于:它不能直接向用户生成响应.完整的流程是:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理. 二:Filter的几个用处 在HttpServletRequest到达

Android中HttpURLConnection使用详解

认识Http协议 Android中发送http网络请求是很常见的,要有GET请求和POST请求.一个完整的http请求需要经历两个过程:客户端发送请求到服务器,然后服务器将结果返回给客户端,如下图所示: 客户端->服务器 客户端向服务器发送请求主要包含以下信息:请求的Url地址.请求头以及可选的请求体,打开百度首页,客户端向服务器发送的信息如下所示: 请求URL(Request URL) 上图中的Request URL就是请求的Url地址,即https://www.baidu.com,该Url没

Ossim 中漏洞扫描详解

Ossim 中漏洞扫描详解 Openvas是一套开源漏洞扫描系统,如果手动搭建需要复杂的过程,花费不少人力和时间成本,此文主要针对OSSIM平台下如何以图形化方式操作漏洞扫描的过程. 准备工作:首先确保没有运行的扫描进程和任务 扫描漏洞同时升级漏洞库会导致升级失败. 第一步:同步插件 #openvas-nvt-sync 同步数万个插件时间比较长,可以去喝杯咖啡啦,或者了解一下插件的组成. 表1 Openvas主要脚本分类及分布情况 规则名称 数量 备注 IIS_frontpage_DOS_2.n

Apache的httpd命令详解

Apache的httpd命令详解 来源:全栈开发者 发布时间:2012-01-03 阅读次数:10965 4 httpd.exe为Apache HTTP服务器程序.直接执行程序可启动服务器的服务.本文以Apache2.2.21版本为例详细介绍该指令的各个参数及用法. 语法格式: httpd [-D name] [-d directory] [-f file]         [-C "directive"] [-c "directive"]         [-w]

Apache SSL服务器配置SSL详解

Apache SSL服务器配置SSL详解 最近想起在Apache网站配置SSL,实现网站用https访问,具体步骤如下: 1.实验环境:CentOS7 http-2.4.17.tar.gz 2..先解压Apache源码包,yum安装Apache所依赖的包 3.配置Apache 4.编译安装Apache 5.安装成功后确认安装结果 6.生成证书服务器 1)生成服务器用的私钥文件server.key 2) 生成未签署的server.csr 会提示输入一系列的参数 3)可以查看文件已经生成在当前文件夹

【转】Struts2中的OGNL详解 (1)

 转载声明:菰☆淚 - Struts2中的OGNL详解 首先了解下OGNL的概念: OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,能够遍历整个对象的结构图,实现对象属性类型的转换等功能. 此外,还得先需弄懂OGNL的一些知识: 1.OGNL表达式的计算是围绕OGNL上下文进行的. OGNL上下文实际上就是一个Map对象,由ognl.OgnlCont

Charles抓取https请求详解

大家好,我是TT,互联网测试行业多年,没有牛逼的背景,也没有什么可炫耀的,唯独比他人更努力,在职场打拼.遇到过的坑,走过的弯路,愿意与大家分享,分享自己的经验,少走弯路.首发于个人公众号[测试架构师] 原文如下: 现在基本大部分网站都使用了https,所以要想抓到https的请求,首要任务是先有工具:charles.fiddler,先介绍下charles针对https请求的抓取方法,此方法兼容windows和mac用户(mac用户方法类似,如果有必要,请关注微信公众号:测试架构师,留言给我.后续

ArcGIS Engine中的Symbols详解

转自原文ArcGIS Engine中的Symbols详解 本文由本人翻译ESRI官方帮助文档.尊重劳动成果,转载请注明来源. Symbols ArcObjects用了三种类型的Symbol(符号样式)来绘制图形特征:marker symbols(标记符号),line symbols(线符号),和fill symbols(填充符号).这些样式同样可以用来绘制elements(元素)图形,比如在地图或制版视图上的图表边线和指北针箭头.第四个样式text symbol(文字符号)是用来绘制标注和其他文

Python中time模块详解(转)

Python中time模块详解(转) 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. 在开始之前,首先要说明这几点: 在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素.由于Python的time模块实现主要调用C库,所以各个平台可能有所不同. UTC(Coordinated Universal Ti