搭建安全的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、根据私钥生成证书请求文件

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


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

。。。。。。   。。。。。。。

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服务器 ,位置随便

# scp www.csr 192.168.1.20:/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 [email protected]:/root/   //CA服务器上操作,上传到WEB服务器


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

[[email protected]~]# cp www.crt /etc/pki/tls/certs/   //WEB服务器上操作


3web服务器上安装mod_ssl模块

 # rpm -qa |grep mod_ssl

 # yum -y install mod_ssl //默认在/etc/httpd/conf.d/ssl.conf下生成ssl配置文件,生成套接                     层,https默认监听TCP 443


4、编辑配置文件

# vi /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端口自动跳转        到https443端口,注意这三行必须写在所有容器外,就是放在配置文件最后

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

 RewriteEngine  on    

 RewriteCond %{SERVER_PORT}  !^443$

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

  

五、测试linux客户端访问

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

  # cat /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服务器下载根证书,要先把my-ca.crt拷到http路                              径/var/www/html/下

 技术分享


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

技术分享

技术分享


查看证书

技术分享


win7客户端访问:

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

 

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

技术分享


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

运行→ 安装→

技术分享

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

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

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

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

web服务器安全设置

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

小迪安全web学习笔记

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

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