天天看点

Linux下Web服务器应用之网站安全-https

<b>Linux</b><b>下Web服务器应用之网站安全(https)解决方案</b>

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之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

<b>案例应用1:Web服务器应用之https</b>

<b>1.   </b><b>企业实现要求:</b>

某公司要求在公司内部自行搭建CA证书服务器,用于提高证书服务(在windows server 2008上实现);并且为公司内部的WWW服务器提供证书服务,提供正常服务。

<b>2.   </b><b>案例应用简化拓扑图:</b>

<a target="_blank" href="http://blog.51cto.com/attachment/201203/001931847.png"></a>

<b>3.</b><b>案例实现步骤:</b>

<b>(1)在windows server2008上搭建CA证书服务器</b>

<a target="_blank" href="http://blog.51cto.com/attachment/201203/002027224.png"></a>

<b>(2)在web服务器上安装相应的软件</b>

<b>[root@www ~]# mkdir /mnt/cdrom</b>

<b>[root@www ~]# mount /dev/cdrom /mnt/cdrom/</b>

<b>[root@www ~]# cd /mnt/cdrom/Server/</b>

<b>[root@www Server]# rpm -ivh httpd-2.2.3-22.el5.i386.rpm</b>

<b>[root@www ~]# yum install -y mod_ssl</b>

<b>(3)配置web服务器的虚拟主机</b>

#创建网页文件

<b>[root@www www]# cat html/index.html</b>

<b>--www</b>

<b>--xjzhujunjie</b>

<b>--2012/03/17</b>

<b>[root@www www]# cat tec/index.html</b>

<b>--tec</b>

<b>[root@www www]# cat mkt/index.html</b>

<b>--mkt</b>

#编辑apache配置文件

[root@www ~]# vim /etc/httpd/conf/httpd.conf  

<b>134 Listen 80</b>

<b> </b>

<b>973 NameVirtualHost 192.168.101.111:80</b>

<b>992 &lt;VirtualHost 192.168.101.111:80&gt;</b>

<b> 993     ServerAdmin [email protected]</b>

<b> 994     DocumentRoot /var/www/html</b>

<b> 995     ServerName www.junjie.com</b>

<b> 996     ErrorLog logs/www-error_log</b>

<b> 997     CustomLog logs/www-access_log common</b>

<b> 998 &lt;/VirtualHost&gt;</b>

<b> 999 &lt;VirtualHost 192.168.101.111:80&gt;</b>

<b>1000     ServerAdmin [email protected]</b>

<b>1001     DocumentRoot /var/www/tec</b>

<b>1002     ServerName tec.junjie.com</b>

<b>1003     ErrorLog logs/tec-error_log</b>

<b>1004     CustomLog logs/tec-access_log common</b>

<b>1005 &lt;/VirtualHost&gt;</b>

<b>1006 &lt;VirtualHost 192.168.101.111:80&gt;</b>

<b>1007     ServerAdmin [email protected]</b>

<b>1008     DocumentRoot /var/www/mkt</b>

<b>1009     ServerName mkt.junjie.com</b>

<b>1010     ErrorLog logs/mkt-error_log</b>

<b>1011     CustomLog logs/mkt-access_log common</b>

<b>1012 &lt;/VirtualHost&gt;</b>

<b>(4)重启web服务器,测试虚拟主机</b>

[root@www ~]# service httpd restart          #重启apache服务

Win7客户端测试在C:\Windows\System32\drivers\etc\hosts添加:

192.168.101.250          www.junjie.com

192.168.101.250          tec.junjie.com

192.168.101.250          mkt.junjie.com

Win7客户端使用IE9浏览器测试结果如下(虚拟主机完成):

<a target="_blank" href="http://blog.51cto.com/attachment/201203/002053313.png"></a>

<b>(5)为web服务器申请证书</b>

<b>[root@www httpd]# mkdir certs</b>

<b>[root@www httpd]# cd certs/</b>

<b>[root@www certs]# openssl genrsa 1024 &gt;httpd.key</b>

<b>[root@www certs]# chmod 600 httpd.key</b>

CN/HENAN/ZHENGZHOU/zzu/junjie/www.junjie.com/[email protected]///

在linux的web服务器上启动桌面环境,用于申请证书

<a target="_blank" href="http://blog.51cto.com/attachment/201203/002122436.png"></a>

选择申请证书,即可进入申请证书页面,将刚才生成的请求文件填写在下面

<a target="_blank" href="http://blog.51cto.com/attachment/201203/002200154.png"></a>

可以看到,此时证书服务器已经向web服务器返回信息,提示正在审核中

此时进入windows server 2008证书服务器上,开始审核web服务器申请的证书,选择挂起的证书,即可看到web服务器提交的申请信息

<a target="_blank" href="http://blog.51cto.com/attachment/201203/002222200.png"></a>

选择信息时,右键,所有任务,颁发证书,为web服务器颁发证书;接下来便可以在颁发的证书中看到已经颁发的证书;

<a target="_blank" href="http://blog.51cto.com/attachment/201203/002236494.png"></a>

<a target="_blank" href="http://blog.51cto.com/attachment/201203/002330921.png"></a>

刚下载的证书,默认保存在桌面,将其移动到/etc/httpd/certs/下。

<b>(6)修改web服务器证书文件</b>

<b>[root@junjie ~]# cd /etc/httpd/conf.d/ssl.conf</b>

<b>112 SSLCertificateFile /etc/httpd/certs/httpd.cer</b>

<b>119 SSLCertificateKeyFile /etc/httpd/certs/httpd.key</b>

<b>128 SSLCertificateChainFile /etc/httpd/certs/cacert.p7b</b>

<b>(7)win7客户端使用https安全访问网页</b>

,此时浏览器提示安全警告,提示此网站的安全证书有问题,并将警告信息显示出来,具体如下:

<a target="_blank" href="http://blog.51cto.com/attachment/201203/002355818.png"></a>

如若:用户强制继续访问,侧依然可以访问,但是浏览器地址栏中,已经变成红色报警信息,提示此网站不安全

<a target="_blank" href="http://blog.51cto.com/attachment/201203/002547241.png"></a>

 说明:在此由于我没有使用IE9浏览器,没有解决证书问题,故又使用搜狗浏览器来解决证书错误问题!若,你可以帮助我解决请在本文留言,多谢了!

使用搜狗浏览器警报信息如下:

<a target="_blank" href="http://blog.51cto.com/attachment/201203/002612121.png"></a>

此时,选择查看证书-证书路径-查看安装根证书和web服务器证书

<a target="_blank" href="http://blog.51cto.com/attachment/201203/002648803.png"></a>

安装证书;

<a target="_blank" href="http://blog.51cto.com/attachment/201203/002742481.png"></a>

选择是继续安装证书,接着再查看就没有证书问题了,如下所示:

<a target="_blank" href="http://blog.51cto.com/attachment/201203/002802306.png"></a>

此时再win7下使用搜狗高速浏览器,Google Chrome 浏览器,Internet Explorer 9浏览器,都显示安全访问,如下所示:

<a target="_blank" href="http://blog.51cto.com/attachment/201203/002837800.png"></a>

<b>***********************************************</b>

<b>案例应用1:Web服务器应用之https自签发</b>

<b>1.</b><b>企业实现要求:</b>

某公司要求在Linux上实现web服务器功能,并要求实现自签发证书(及要求:linux服务器即为web服务器又为证书服务器)

<b>2.</b><b>案例应用简化拓扑图:</b>

<a target="_blank" href="http://blog.51cto.com/attachment/201203/002858708.png"></a>

<b>(1)在web服务器上安装相应的软件</b>

<b>(2)创建CA证书服务器的根证书文件</b>

<b>[root@www ~]# cd /etc/pki/</b>

<b>[root@www pki]# vim tls/openssl.cnf</b>

<b>45 dir             =/etc/pki/CA            # Where everything is kept</b>

<b>46 certs           = $dir/certs         # Where the issued certs are     kept</b>

<b>47 crl_dir         = $dir/crl              # Where the issued crl are ke    pt</b>

<b>48 database        = $dir/index.txt        # database index file.</b>

<b>51 new_certs_dir   = $dir/newcerts         # default place for new certs</b>

<b>53 certificate     = $dir/cacert.pem       # The CA certificate</b>

<b>54 serial          = $dir/serial           # The current serial number</b>

<b>58 private_key     = $dir/private/cakey.pem# The private key</b>

<b>88 countryName             = optional</b>

<b>89 stateOrProvinceName     = optional</b>

<b>90 organizationName        = optional</b>

<b>[root@www pki]# cd /etc/pki/CA/</b>

<b>[root@www CA]# mkdir certs crl newcerts</b>

<b>[root@www CA]# touch index.txt serial</b>

<b>[root@www CA]# echo "01" &gt;serial</b>

<b>[root@www CA]# openssl genrsa 1024 &gt;private/cakey.pem</b>

<b>Generating RSA private key, 1024 bit long modulus</b>

<b>........................++++++</b>

<b>....++++++</b>

<b>e is 65537 (0x10001)</b>

<b>[root@www CA]# chmod 600 private/cakey.pem</b>

<b>[root@www CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365</b>

<b>Country Name (2 letter code) [GB]:CN</b>

<b>State or Province Name (full name) [Berkshire]:HENAN</b>

<b>Locality Name (eg, city) [Newbury]:ZHENGZHOU</b>

<b>Organization Name (eg, company) [My Company Ltd]:zzu</b>

<b>Organizational Unit Name (eg, section) []:junjie</b>

<b>Common Name (eg, your name or your server's hostname) []:rootca.junjie.com</b>

<b>Email Address []:[email protected]</b>

<b>(3)为web服务器的签发证书</b>

<b>[root@www CA]#</b> <b>mkdir /etc/httpd/certs</b>

<b>[root@www CA]#cd /etc/httpd/certs</b>

<b>[root@www certs]# openssl genrsa 1024 &gt;httpd.key</b>

<b>..............++++++</b>

<b>........++++++</b>

<b>[root@www certs]# chmod 600 httpd.key</b>

<b>[root@www certs]# openssl req -new -key httpd.key -out httpd.csr</b>

<b>Common Name (eg, your name or your server's hostname) []:www.junjie.com</b>

<b>///</b>

<b>[root@www certs]# openssl ca -in httpd.csr -out httpd.crt</b>

<b>[root@www certs]# chmod 600 *</b>

<b>(4)为web服务器的签发证书</b>

<b>[root@www certs]# cd /etc/httpd/conf.d</b>

<b>[root@www conf.d]# vim ssl.conf</b>

<b>112 SSLCertificateFile /etc/httpd/certs/httpd.crt</b>

<b>128 SSLCertificateChainFile /etc/pki/CA/cacert.pem</b>

<b>(5)win7客户端使用https安全访问网页</b>

<a target="_blank" href="http://blog.51cto.com/attachment/201203/002935692.png"></a>

<a target="_blank" href="http://blog.51cto.com/attachment/201203/002948128.png"></a>

说明:在此由于我没有使用IE9浏览器,没有解决证书问题,故又使用搜狗浏览器来解决证书错误问题!若,你可以帮助我解决请在本文留言,多谢了!

使用搜狗解决问题方案如下:

<a target="_blank" href="http://blog.51cto.com/attachment/201203/003137220.png"></a>

<a target="_blank" href="http://blog.51cto.com/attachment/201203/003102841.png"></a>

此时再win7下使用搜狗高速浏览器,Internet Explorer 9浏览器,都显示安全访问,如下所示:

<a target="_blank" href="http://blog.51cto.com/attachment/201203/003223831.png"></a>

查看证书信息:

<a target="_blank" href="http://blog.51cto.com/attachment/201203/003256815.png"></a>

《完》

本文转自xjzhujunjie 51CTO博客,原文链接:http://blog.51cto.com/xjzhujunjie/808983

继续阅读