搭建安全的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.key给web服务器公钥签名,生成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服务器下载证书并且布署

1、CA服务器签名完生成的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服务器上操作

3、在web服务器上安装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    →可以直接显示网页内容

时间: 2024-10-12 03:25:54

搭建安全的Web服务器的相关文章

【重要】怎么自行搭建简单的web服务器

# -*- coding: utf-8 -*- #python 27 #xiaodeng #CGI模块 #怎么自行搭建简单的web服务器 #用途: #内网中,提供文件的共享服务非常有用,在cmd下启动运行服务器命令之后,其他电脑也是可以通过url访问的 #可以实现pdf.zip等压缩文件.exe.apk等软件的下载服务. ###搭建基本流程## #1.假定共享文件的目录为:/home/test,ip为#192.168.1.101 ''' 怎么查看本机IP? import socket mynam

linux系统下搭建自己的web服务器

之前在windows 2008 server上搭建了一个用于测试的web服务器,但是在打开网站的时候特别的慢,尤其是图片的加载都会失败,当时以为是路径的问题,但是在服务器上自己打开都特别慢,自己实在找不到原因,所以打算不在一棵树上面吊死,准备去linux下试试. 经常被拿来当服务器的有centos.ubuntu......考虑到自己只有ubuntu的镜像并且只是自己做一些简单的测试使用,所以选择的版本是ubuntu14.04LTS.在这个平台上搭建自己的web服务器 相比在windows下的wa

阿里云CentOS搭建wordpress的Web服务器环境(nginx+php+mysql)

本博客每天会坚持写一篇原创技术文章,每天积累一点,每天进步一点. 在linux服务器搭建web服务器环境是做网站的基础功底,根据服务器端使用的编程语言不同有不同的搭建方法,比如服务器采用PHP,Java,Python,Ruby,Go语言等,本文就基于php的wordpress程序的服务器环境搭建做一些简单的探讨,如有遗漏和错误,欢迎大家进行指正和补充. Nginx安装 1,yum命令安装:yum install nginx2,测试nginx启动状态:service nginx status3,测

python搭建简单的web服务器

由于要做自动化和性能测试,工作中需要有一个能够控制返回消息数据的web服务器,所以用python初步实现了一个简单的web服务器,能够处理HTTP的请求(GET,POST,PUT),并完成响应.先简单说明下原理,python中实现web服务器大概分两个步骤: 1.      创建一个套接字,绑定到指定的IP和端口,保持监听 2.      创建一个handle类,当收到请求消息时,作出响应 主要使用的类有两个: HTTPServer:HTTP服务器的基类,提供了HTTP服务器的常用方法,创建服务

【小姿势】如何搭建ipa下载web服务器(直接在手机打开浏览器安装)

前提: 1) 有个一个现成的web服务器,我用是nodejs. 2) 有个能在用你手机安装的ipa 3) 有个github账号 开搞: 1.用http://plist.iosdev.top/plisthelper.php/Index/makePlist生成一个plist文件,请确保里面的内容的正确性,用你的web服务器当文件服务器,并填入正确的ipa的url 2.把这个plist文件上传到github,然后在目录下找到这个文件,点下raw按钮,复制浏览器中的url(例如https://raw.g

Keepalived + LVS-DR搭建高可用Web服务器集群

导航: Keepalived概述 LVS概述 编译安装keepalived 配置主调度器 双机热备 一.Keepalived概述 keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层.第4层和第5层交换.Keepalived是自动完成,不需人工干涉,需要人工做的只是修复故障的web服务器.Layer3,4&5工作在IP/TCP协议栈的IP层,TCP层,及应用层,原理分别如下:Layer3:Keepalived使用Layer3的方式工作式时,Ke

为HT公司搭建一台 web 服务器

1.基本设置(截图) (1)将主机名更改为WEBServer (2)该计算机的内网IP地址为192.168.1.1/24 (3)在本机上搭建DNS服务器,并为本机网站解析名称:www.HT.com,oa.HT.com,web.HT.com,support.HT.com,mail.HT.com,www2.HT.com 二.WWW服务器设置(截图) 1.公司OA站点的配置 利用默认端口配置一个公司内网oa主站,路径为D:\OA文件夹,站点首页名称为default.htm.公司主站的名称为:oa.HT

Anroid搭建一个局域网Web服务器

前言   很多开发者看到这个标题表示很怪异,Android怎么可能搭建服务器呢?根本用不到呀,这个项目毫无价值.我表示很理解这一类的开发者,毕竟每个人的经验经历都是有限的. 必须要说说我们的用处(需要用这个功能的人自然不用解释),比如在TV开发中,现在我们有一个电视盒子,上面跑着我们的一个apk,假如我们现在用微信网页或者QQ网络连接了我们的apk软件,我们需要把一个视频传到电视上播放,这个时候是不是需要我们的apk作为服务端来接受文件了?这只是一个例子,可能还有局限性,更多的用处大家自己去发挥

linux搭建简单的web服务器

主要想法是:使用虚拟机的Ubuntu系统搭建http服务器,然后在window的浏览器上测试 1.先测试windows和虚拟机上的ubuntu能否相互ping通 2.下载http.tar.gz并拷贝到linux系统的工作目录下 3.解压该文件tar -vxzf http.tar.gz 4.进入该文件的解压目录,然后执行make 5.编译成功后,执行sudo ./myhttp start启动web服务 6.打开windows的浏览器输入对应地址 7.停止http服务,sudo ./myhttp s