为了搭建用于测试heartbleed漏洞(CVE-2014-0160)的环境,于是乎做了这个博文里搭建的环境,不是太难,但由于不太懂,也耗了几天时间,下面开始。

环境:win7(32bit)+apache2.2.25+openssl1.0.1b

整体过程:先安装带ssl模块(httpd-2.2.25-win32-x86-openssl-0.9.8y.msi),然后将openssl升级到1.0.1b(直接安装openssl的win32版本,然后拷贝相关的文件到apache相关模块下),然后利用网上的python测试脚本进行测试。

第一部分:Apache的安装方面:

基本就是一路next,主要需要注意的就是正确设置Network Domain和Server Name这两项,如果想远程也能访问,这里就填你的ip地址,比如我填的就是自己的ip:115.156.x.x,如果只想本地测试,那么就填localhost就可以了。

p.s.关于这个的解释请参考:http://blog.sina.com.cn/s/blog_6013f66201019wj0.html

apache安装好后需要修改配置文件的相关设置

修改httpd.conf(在 [Apache安装目录]/conf下)三处:
1.DocumentRoot "D:/www"(这个蓝色的可以自己设置,就是http将要访问的文件的位置,可以根据自己的设置来修改,下面第2点一样)
2.<Directory "D:/www">
3.<IfModule dir_module>
    DirectoryIndex index.html index.htm(这个是默认的访问文件,具体可google,不解释)
</IfModule>

第二部分:openssl的配置

ssl需要的文件在如下的位置:(安装了apache之后就会有)
  [Apache安装目录]/modules/ mod_ssl.so
  [Apache安装目录]/bin/ openssl.exe, libeay32.dll, ssleay32.dll
  [Apache安装目录]/conf/ openssl.cnf

----------
创建SSL证书(关于数字签名,证书相关的知识我在最后给出了相关的科普链接)
----------
 1. 打开cmd, cd到apache安装目录的bin目录
  2. 运行openssl

openssl req -config ..\conf\openssl.cnf -new -out my-server.csr 

(注意, my-server是自己起的名字, 以下步骤中提到my-server的也是自己起的名字) 
这一步需要设置一系列的问题, 包括密码(这个密码要记住, 以后要用) 和其他的问题. 全部完成之后会生成一个my-server.csr和 privkey.pem 文件在bin文件夹中.相关运行过程截图:

继续下面的输入:

(注意,其实我自己把ip搞错了的,应该是192.168.138.151我上面的这个是网络地址,搞错了,还要到后面配置文件去修改,这个大家注意下。)

好,下面还有要填写的:

3. 运行

openssl rsa -in privkey.pem -out my-server.key

此时要输入密码, 就是步骤2中设定的密码:

4. 运行

openssl x509 -in my-server.csr -out my-server.cert -req -signkey my-server.key -days 4000

这将创建一个4000天后才过期的证书(注意一下,这里的my-server.cert最好改成my-server.crt,后来实验配置发现不换也可以,换了之后完成步骤5后就会有两个crt文件,但是最后在浏览器中导入的证书应该是5中生成的xxx.der.crt文件,而不是这里的my-server.crt,因为我实验了几次,我也被自己搞昏了,所以如果你发现你的https最后总是出现证书问题,不妨把这里重新运行一遍,改下这个,把cert改成crt,然后最后在浏览器中导入的时候把这个crt的也导入,注意,如果这里改了,那么第5步也要相应的改)

5. 运行
openssl x509 -in my-server.cert -out my-server.der.crt -outform DER
(结果上面有,在dos下不会有任何回应,主要是产生文件的)

全部运行过后这些命令会在bin文件夹中生成6个文件:

.cnt(这个文件不知道怎么滴,没有)
privkey.pem
my-server.der.crt
my-server.csr
my-server.key
my-server.cert

将这些文件移到 conf/ssl目录中(如果不存在这个目录就创建一个(这个步骤中放到其他的目录也可以 关键是记住文件的位置, 在接下来的设置中会用到,所以就不要瞎整,免得给自己找麻烦)
[关于网站如果ip改变后修改证书,就需要重新执行上述步骤,然后在ie的那个选项中重新导入证书,并将之前的证书删除掉,然后关闭httpd,并重启,再次访问https才会提示证书正确。]
----------
设置Apache支持SSL
----------
注意: 本设置步骤针对针对Apache 2.2.x版本, 如果正在使用的是Apache 2.0.x版本, 请摸索相似的设置.
在Apache的conf目录中用文本编辑器打开httpd.conf
1. 去掉下面设置行前面的#
LoadModule ssl_module modules/mod_ssl.so

2. 去掉下面设置行前面的# (在2.0.x版本中没有这一项)

Include conf/extra/httpd-ssl.conf

3.修改以下信息:(这是单独配置httpd-ssl.conf文件,在conf/extra目录下)
    3.1. 修改这一段:

<VirtualHost _default_:443>
          #   General setup for the virtual host
          DocumentRoot "D:/wwws" (主要是该这个目录,这个目录就是https要访问的目录,尽量与http要访问的目录区别开,可以自己设置)
          ServerName 192.168.138.151:443
          ServerAdmin a@a.com
      (p.s.参考了:http://forums.devside.net/index.php?topic=70.0)
    3.2.增加:(使访问https有访问权限)
          <Directory "D:/wwws">
Options +Indexes FollowSymLinks +ExecCGI
AllowOverride AuthConfig FileInfo
Order allow,deny
Allow from all
          </Directory>

(位置的话,在配置文件中找到 </Directory>,然后最好就是把上面的代码放在这个的后面)
      (p.s.参考:http://www.cyberciti.biz/faq/apache-403-forbidden-error-and-solution/)

3.3. 更改如下设置.:([apache安装目录]是指Apache的安装目录, 比如c:/Apache; my-server的两个文件就是前一个步骤制作的文件, 文件的位置就是这些文件在磁盘中的位置 (在2.0.x版本中这些设置仍然在 httpd.conf文件中进行)

找到以下相关代码并对应修改即可:
SSLMutex  default
SSLCertificateFile "[Apache安装目录]/conf/ssl/my-server.der.crt"(最好也和前面的一样 改成my-server.crt)
SSLCertificateKeyFile "[Apache安装目录]/conf/ssl/my-server.key"

----------
测试
----------
    1. 保存设置文件
    2. 在开始菜单中运行Apache的Test Configuration工具, 检查设置文件是否正确
    3. 重新启动Apache 2.2.x
    4. 顺利启动之后, 在浏览器中输入 https://localhost  看看是否可以访问, 如果可以访问, 则设置成功!

(ip请无视,此处按照上面的应该是https://192.168.138.151)
当然,可以不会一下就成功,比如地址栏可以出现一片红色,然后那个右边钥匙那里提示证书不正确之类的:(比如下面这样)

那么就还要在浏览器中导入上面我们拷贝到ssl文件夹里面的crt文件,步骤如下:

1.打开ie浏览器,然后打开那个internet选项:

2.点击证书,然后进入这个:

在上面圈出的两个地方都要在下面的“导入”按钮中导入前面我们生成的my-server.der.crt文件,完成后确定,然后关闭浏览器,再次用https://192.168.138.151访问,就发现地址栏是白色的,没有什么提示了,表示证书已经被浏览器信任了,这样就OK了。

----------
升级openssl
----------

以上就是apache2.2.25在win32(32bit)下配置openssl-0.9.8y的全部过程,接下来我们还要将openssl升级到1.0.1b,因为只要1.0.1a-f才有heartbleed漏洞,其实很简单,两步:

1.安装Win32_OpenSSL_v1.0.1b.exe

2.把openssl的bin目录下的libeay32.dll,ssleay32.dll,openssl.exe拷贝到[apache安装目录]/bin/下(注意,直接不能覆盖,要先去关掉apache的服务才能覆盖)

完成后再用cmd进入[apache安装目录]/bin/下,输入命令:openssl version,查看openssl版本,发现已经更新:

至于那句warning,我也不知道是咋回事,但是这是在win下运行,查看linux下的配置也没用,而且我们apache自己有openssl的配置,在[apache安装目录]/conf/extra/http-ssl.conf,所以应该没有什么影响(主要是后面的攻击可以正常进行)

----------
利用python重现heartbleed漏洞
----------

利用网上的python来重新攻击,拷贝ssltest.py至d盘下,然后运行:

进入d盘运行 (ip继续无视,按照上面的设置应该是192.168.138.151)

python ssltest.py 115.156.236.202

即可看到结果:(中间内容太多,仅截取最后的提示)

开始部分因为DOS下无法拉到最上面,来看一下在linux下的一个截图,基本一样:

能到3ff0表示基本已经能获取到内存中客户端请求后的大片内存区数据了(64kb),攻击成功。

好,到此基本就结束了,环境搭建也基本完成,我将相关的资料上传到了这里,包括上面用的文件,httpd-2.2.25-win32-x86-openssl-0.9.8y.msi是从官方网站上下载的,后面的那个openssl是网上下载的(地址:https://code.google.com/p/cntc2/downloads/detail?name=Win32_OpenSSL_v1.0.1b.exe&can=2&q=),官网已经没有1.0.1a-f的win版下载了(见:http://slproweb.com/products/Win32OpenSSL.html)

----------
后续
----------

后面如果还有更新的进展,比如如何利用openssl官方给的tar.gz包来编译生成lib文件等我会继续跟进,但是搭建环境的这个过程基本就是上面的了,希望对有需要的人有帮助。

本文主要参考了:

1.http://www.cnblogs.com/rockin/articles/943668.html

(基本是按照这个来做的,但是还有一些细节需要注意,里面提到的一个连接(windows安装基于Apache的SVN服务器(包括SSL配置)):http://www.uml.org.cn/pzgl/200804038.asp)

2.http://www.sunzhenghua.com/wamp-config-ssl-https(但是按这个来没有成功,没去找原因,毕竟是个套件,所以后来单独安装apache后再做的)

3.http://blog.wangzhan.360.cn/?p=165    比想象中更恐怖!OpenSSL“心血”漏洞深入分析(这个主要是关于漏洞的分析以及上面的python文件的一个解释)

4.关于本实验中数字签名,证书的一些命令的解释可参考:

http://dufei.blog.51cto.com/382644/90532

http://www.360doc.com/content/11/0813/16/3837165_140113234.shtml

以及电子工业出版社的 密码学原理与实践(第三版)的P92页,P353页中相关的解释(不过感觉我上面的命令好像没有涉及到ca相关东西,现在还没弄太明白)

win7(32bit)下完整的搭建apache(2.2.x)+openssl(0.9.6-1.0.1升级)过程相关推荐

  1. win7环境下visualsvn-server的搭建与使用(Eclipse)整合版

    一.WIN7下Visual SVN安装与配置操作方法 常用的配置管理工具有VSS.开源软件CVS.Borland StarTeam.IBM Rational ClearCase,而时下最流行的是Sub ...

  2. 64位win7搭建php mysql_[转]Win7 64位操作系统下配置PHP+MySql+Apache环境

    Win7 64位操作系统下配置PHP+MySql+Apache环境 注: 1./* */ 之间的为步骤或注释,不要粘到配置文件内 2.Apach配置时是用的"/",而php配置时用 ...

  3. Linux环境下搭建Apache服务器(完整版)

    Linux下搭建Apache服务器(完整版) 什么是Apache? Apache Licence是著名的非盈利开源组织Apache采用的协议.该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权, ...

  4. WIN7下使用iis搭建php环境(上)

    Win 7下使用iis搭建php环境 上 在win7下进行php环境搭建,因为自己最近也在自学php,在搭建php环境的时候遇到了很多问题,也上网查了很多的资料来学习怎么搭建,但是还是不能很好的解决我 ...

  5. Win7环境下搭建Android安卓开发环境

    Win7环境下搭建Android安卓开发环境(原创教程) 此教程以32位win7旗舰版系统为基础,其它版本系统请根据情况自行调整.教程在2012年9月16日写,所有软件为当时的最新版. 准备文件(文件 ...

  6. Linux下搭建Apache服务器

    Linux下搭建Apache服务器(完整版) 什么是Apache? Apache Licence是著名的非盈利开源组织Apache采用的协议.该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权, ...

  7. Win7环境下搭建GO开发平台——SublimeText 2

    Sublime Text 是近几年才流行起来的一个代码编辑器(Sublime Text 2是收费软件,但可以无限期试用),也是HTML和散文先进的文本编辑器.Sublime Text是由程序员Jon ...

  8. PHP环境搭建:Windows 7下安装配置PHP+Apache+Mysql环境教程(转)

    转至:http://www.leapsoul.cn/?p=695 这两天刚装好Windows 7,碰巧前段时间有朋友问我Windows下如何安装搭建PHP环境,所以打算勤劳下,手动一步步搭建PHP环境 ...

  9. linux apache 文件服务器,Linux下搭建Apache服务器全过程详解

    什么是Apache? Apache Licence是著名的非盈利开源组织Apache采用的协议.该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件) ...

最新文章

  1. proe输入数字时成双出现_罗斯蒙特温度变送器3144P单只和双只输入输出的的含义...
  2. 浅谈工作流引擎的几个关键因素
  3. Centos换源 加快软件安装速度 2021-03-17
  4. ASP.NET Core on K8s学习之旅(14)Ingress灰度发布
  5. Android之Intent深入
  6. jQuery编写插件()
  7. 计算机odbc数据源管理位置,使用 ODBC 数据源管理器
  8. php框架laravel构造者,Laravel框架的体系结构
  9. 视频怎么剪辑才好看?学视频剪辑必读入门指南
  10. C++ 语言指针 (pointer)
  11. SQL用month()函数当前月时,不足10的前面补0
  12. 拉勾课程--性能优化记录
  13. 理解Java heap内存和Java direct内存
  14. java 使用class转型_java中向上转型(upcast)和向下转型(downcast)
  15. 为什么说 Ubuntu 22.04 LTS 是史诗级的版本
  16. 网络安全热门资料 精品工具——下载目录
  17. torch.squeeze
  18. 【AI特训营】:柯西分布 Paddle API实现
  19. 《廖雪峰Git教程》学习记录
  20. 潍坊职业学院计算机应用技术代码,潍坊职业学院计算机应用(软件外包)专业开展“日语书法比赛”活动...

热门文章

  1. Anker-一个研发工程师的电商梦
  2. 谷歌浏览器不支持ocx控件
  3. Beyond Compare实现Class文件对比
  4. NEAT(基于NEAT-Python模块)实现监督学习和强化学习
  5. 第三课:布尔逻辑与逻辑门
  6. localstorage ie11不支持
  7. Android M App Permissions
  8. 大学计算机案例教程旧照片修复,破损旧照片修复教程
  9. JavaScript 数组拼接打印_JavaScript 中的“黑话”
  10. 北京大学C语言学习第4天