搭建安全的Web服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搭建安全的Web服务器相关的知识,希望对你有一定的参考价值。

三台Linux服务器:

web服务器:192.168.1.10

CA服务器: 192.168.1.20

客户机


web网站把公钥发给CA认证服务器CA用私钥给web公钥签名。然后把签名完的公钥在发给web服务器


一般  .Key结尾的是私钥

    .Csr结尾的是公钥

    .Crt结尾的是CA签名完的公钥证书

 

[[email protected] private]# gpg --gen-key


注意:RSA密钥长度为 1024-4096 (默认为2048)

 

一、WEB服务器生成密钥对

1、生成私钥

#cd /etc/pki/tls/private

#openssl  genrsa  2048 >  www.key    //生成私钥文件


2、根据私钥生成证书请求文件(CA服务搭建需事先做好)

  CA服务器请参考:http://blog.51cto.com/user_index.php?action=addblog_new&did=276127

  提示的问题中,国家/组织与根证书保持一致(根证书位置:/etc/pki/tls/openssl.cnf

#openssl  req  -new -key  www.key  >  ~/www.csr    //用私钥生成公钥


CountryName (2 letter code) [XX]:CN           //CA服务器住配置文件里填写的国家” CN=中国

Stateor Province Name (full name) []:Beijing    //CA服务器住配置文件里填写的/

LocalityName (eg, city) [Default City]:Beijing    //CA服务器住配置文件里填写的

OrganizationName (eg, company) [Default Company Ltd]:Dave Company Ltd //CA服务器住配置文件里填写的公司名

OrganizationalUnit Name (eg, section) []:     //部门名称,可回车

CommonName (eg, your name or your server‘s hostname) []:www.dave.com     //web服务器域名

EmailAddress []:[email protected]     //写维护人员的邮箱

 

Pleaseenter the following ‘extra‘ attributes

to besent with your certificate request

Achallenge password []:   回车

Anoptional company name []:  回车

[[email protected]]#

 

二、把CSR文件上传至CA服务器

1、把web服务器生成的公钥发给CA服务器 ,位置随便

[[email protected] ~]# scp www.csr [email protected]:/root/  //上传到CA服务器


2、在CA服务器的/root目录下查看csr文件内容

# openssl  req  -in www.csr  -text  -noout

 

三、CA服务器签发证书CA服务搭建需事先做好)

1、签发证书

# openssl ca -in www.csr -out www.crt   //CA服务器给web公钥签名,生成www.crt 公钥认证                               文件名字随便起以.crt结尾

Usingconfiguration from /etc/pki/tls/openssl.cnf

Enterpass phrase for /etc/pki/CA/private/s.key:   //此处要输入CA服务器的私钥密码(123456),写配置CA服务器创建私钥s.key的密码 ---CA服务器的私钥s.keyweb服务器公钥签名,生成www.crt

Checkthat the request matches the signature

Signatureok

CertificateDetails:

        Serial Number: 8 (0x8)

        Validity

            Not Before: Mar 20 23:54:19 2014GMT

            Not After : Mar 20 23:54:19 2015GMT

        Subject:

            countryName              = CN

            stateOrProvinceName       = Beijing

            organizationName           = Dave Company Ltd

            commonName               = www.dave.com

            emailAddress             = [email protected]

        X509v3 extensions:

            X509v3 Basic Constraints:

                CA:FALSE

            Netscape Comment:

                OpenSSL Generated Certificate

            X509v3 Subject Key Identifier:

               23:06:C0:53:BB:7D:75:11:F1:6D:BF:30:2E:0B:13:79:26:E8:49:E9

            X509v3 Authority Key Identifier:

                keyid:0B:97:E6:9D:83:31:38:A1:14:62:AC:29:4C:DE:6A:01:55:15:33:4C

Certificateis to be certified until Mar 20 23:54:19 2015 GMT (365 days)

Sign thecertificate? [y/n]:y      //确定以上内容是否正确

1 out of1 certificate requests certified, commit? [y/n]y      //确定以上内容是否正确

Writeout database with 1 new entries

DataBase Updated

2、验证

# cat /etc/pki/CA/index.txt

# cat /etc/pki/CA/serial

# ls /etc/pki/CA/newcerts

# openssl  x509  -in  ~/www.crt  -text  -noout    //查看crt文件内容

 

四、WEB服务器下载证书并且布署

1CA服务器签名完生成的www.crt公钥认证,发给web服务器

[[email protected]~]# scp www.crt 192.168.1.10:/root/


2、将CA发过来的证书拷贝到/etc/pki/tls/certs

[[email protected]~]# cp www.crt /etc/pki/tls/certs/


3、在web服务器上安装mod_ssl模块

 # rpm -qa |grep mod_ssl

 # yum -y install mod_ssl   //安装mod_ssl模块,默认在/etc/httpd/conf.d/ssl.conf下生                         成ssl配置文件,生成套接层,https默认监听TCP443端口


4、编辑配置文件

# vim /etc/httpd/conf.d/ssl.conf     

105  SSLCertificateFile   /etc/pki/tls/certs/www.crt     //填写公钥认证的路径 

112  SSLCertificateKeyFile  /etc/pki/tls/private/www.key   //填写私钥的路径


5、重启web服务器

  # service httpd restart


6、当访问http协议时,自动跳转到https

  在/etc/httpd/conf.d/ssl.conf中加入如下三行,使客户端访问http80端口自动跳转到https 443端   口,注意这三行必须写在所有容器外,就是放在配置文件最后

  vi  /etc/httpd/conf.d/ssl.conf

  RewriteEngine  on    

  RewriteCond %{SERVER_PORT}  !^443$

  RewriteRule (.*) https://%{SERVER_NAME}/$1  [R]

 

五、测试

linux客户端访问

1、客户端必须写hosts文件DNS解析

  vi /etc/hosts

  192.168.1.10 www.dave.com 


2、客户端浏览器访问:http://www.dave.com  // 提示证书不受信任,因为客户端没有信任CA

  技术分享


3、客户端将CA的根证书安装上,再次访问就不会再有提示了

  http://192.168.1.20/my-ca.crt      //CA服务器下载根证书

  技术分享

  

   若没有自动弹出“下载证书”窗口,就按如下操作

   技术分享

  技术分享

 

   查看证书

   技术分享

 

win7客户端访问


1、打开C:\Windows\System32\drivers\etc\hosts,在未尾添加:192.168.1.10  www.dave.com

 

2、未下载证书,访问http://www.tarena.com  ,显示如下

技术分享


下载证书:http://192.168.1.20/my-ca.crt

运行→ 安装→

技术分享

再访问:http://www.tarena.com    →可以直接显示网页内容

 

到此就部署完了!

本文出自 “Dave-技术博客” 博客,请务必保留此出处http://davewang.blog.51cto.com/6974997/1859204

以上是关于搭建安全的Web服务器的主要内容,如果未能解决你的问题,请参考以下文章

如何在Ubuntu上搭建一台安全的Apache Web服务器

web服务器安全设置

linux学习笔记-工程师技术:HTTP服务基础(Web服务基本搭建)网页内容访问安全Web服务动态网站的部署

小迪安全web学习笔记

CentOs web服务器安全防范经验总结

如何搭建web服务器?网站建设从它开始