阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

如何搭建HTTP/HTTPS服务

376次阅读
没有评论

共计 9922 个字符,预计需要花费 25 分钟才能阅读完成。

1、建立 httpd 服务器 (基于编译的方式进行),要求:
    提供两个基于名称的虚拟主机:
    (a)www1.itab.com,页面文件目录为 /web/vhosts/www1;错误日志为 /var/log/httpd/www1.err,访问日志为 /var/log/httpd/www1.access;
    (b)www2.itab.com,页面文件目录为 /web/vhosts/www2;错误日志为 /var/log/httpd/www2.err,访问日志为 /var/log/httpd/www2.access;
    (c) 为两个虚拟主机建立各自的主页文件 index.html,内容分别为其对应的主机名;
    (d)通过 www1.itab.com/server-status 输出 httpd 工作状态相关信息,且只允许提供帐号密码才能访问(status:status);
    (e) www1 不允许 192.168.1.0/24 网络中的主机访问;

2、为上面的的第 2 个虚拟主机提供 https 服务,使得用户可以通过 https 安全的访问此 web 站点;
  (1)要求使用证书认证,证书中要求使用的国家 (CN)、州(HA)、城市(ZZ) 和组织 (iTab);
  (2) 设置部门为 Ops,主机名为 www2.itab.com,邮件为 admin@stuX.com;

现在分别使用 httpd-2.2 和 httpd-2.4 搭建符合以上要求的 HTTP/HTTPS 服务。

httpd-2.2

(1) 使用 yum 安装 httpd 服务程序。
[root@web ~]# yum -y install httpd

(2) 要想使用虚拟主机,必须先注释掉中心主机的文档根路径(DocRoot)。
[root@web ~]# vim /etc/httpd/conf/httpd.conf
 
#DocumentRoot “/var/www/html”

(3) 在 /etc/httpd/conf.d 目录下创建 vhost.conf 文件,专门用于配置虚拟主机。
NameVirtualHost 192.168.10.128:80
 
<VirtualHost 192.168.10.128:80>    # 第一台虚拟主机配置
    ServerName www1.itab.com      # 第一台虚拟主机的主机名
    DocumentRoot “/web/vhosts/www1”        # 第一台虚拟主机的 DocRoot
    ErrorLog logs/www1.err                # 错误日志路径
    CustomLog logs/www1.access combined    # 访问日志路径
    <Directory “/web/vhosts/www1”>        # 基于 IP 地址做访问控制
        Order allow,deny
        Deny from 192.168.1                # 不允许 192.168.1.0/24 网络中的主机访问
    </Directory>
    <Location /server-status>              # 第一台虚拟主机开启 server-status 工作状态输出功能
        SetHandler server-status
        AuthType Basic                    # 基于账号密码做控制
        AuthName “Enter your username and password.”    # 认证提示
        AuthUserFile “/etc/httpd/.htpasswd”            # 存放账号密码的文件路径
        Require user status                # 只允许 status 用户登录
    </Location>
</VirtualHost>
 
<VirtualHost “192.168.10.128:80”>          # 第二台虚拟主机配置
    ServerName www2.itab.com              # 第二台虚拟主机的主机名
    DocumentRoot “/web/vhosts/www2”        # 第二台虚拟主机的 DocRoot
    ErrorLog logs/www2.err                # 错误日志路径
    CustomLog logs/www2.access combined    # 访问日志路径
</VirtualHost>

(4) 创建虚拟主机的文档根目录,并为两个虚拟主机建立各自的主页文件 index.html,内容分别为其对应的主机名。
[root@web ~]# mkdir -pv /web/vhosts/{www1,www2}
mkdir: created directory `/web’
mkdir: created directory `/web/vhosts’
mkdir: created directory `/web/vhosts/www1′
mkdir: created directory `/web/vhosts/www2′
 
[root@web ~]# cat /web/vhosts/www1/index.html 
<h1> www1.itab.com </h1>
 
[root@web ~]# cat /web/vhosts/www2/index.html 
<h1> www2.itab.com </h1>

(5) 设置站点主页面。
[root@web ~]# vim /etc/httpd/conf/httpd.conf
DirectoryIndex index.html

(6) 创建访问 status 页面的账号 (status) 和密码(status)。
[root@web ~]# htpasswd -cm /etc/httpd/.htpasswd status
New password: 
Re-type new password: 
Adding password for user status

(7) 检查语法错误,如果没有错误,则启动 http 服务。
[root@web ~]# httpd -t
Syntax OK
[root@web ~]# service httpd start
Starting httpd:                                            [OK]

(8) 查看 httpd 是否已经监听在 80 端口。
[root@web ~]# ss -tnl | grep 80
LISTEN    0      128                      :::80                      :::*

(9) 测试。

9.1 测试 status 页面。

使用 192.168.10.140 的主机测试,如下。
[root@test1 ~]# elinks www1.itab.com/server-status

打开页面如下。

如何搭建 HTTP/HTTPS 服务

如何搭建 HTTP/HTTPS 服务

如何搭建 HTTP/HTTPS 服务

9.2 测试两个虚拟主机的页面。

同样使用 192.168.10.140 这台主机来测试,如下。
[root@test1 ~]# elinks www1.itab.com

访问 www1.itab.com 时,打开页面如下。

如何搭建 HTTP/HTTPS 服务

[root@test1 ~]# elinks www2.itab.com

访问 www2.itab.com 时,打开页面如下。

如何搭建 HTTP/HTTPS 服务

对于 192.168.1.0/24 网段的主机,则无法访问 www1.itab.com,其打开页面如下。

如何搭建 HTTP/HTTPS 服务

(10) 现在为上面的的第 2 个虚拟主机提供 https 服务,使得用户可以通过 https 安全的访问此 web 站点。
为了方便,这里通过建立私有 CA 来提供服务器证书。CA 主机和 Webf 服务器主机如下:
CA 主机:192.168.10.140
Web 服务器主机:192.168.10.128

10.1 在 CA 主机(192.168.10.128 上)建立私有 CA

① CA 生成私钥。

[root@test1 ~]# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

② 生成自签证书。
[root@test1 ~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:HA
Locality Name (eg, city) [Default City]:ZZ
Organization Name (eg, company) [Default Company Ltd]:iTab
Organizational Unit Name (eg, section) []:Ops
Common Name (eg, your name or your server’s hostname) []:ca.itab.com
Email Address []:caadmin@itab.com

③ 为 CA 提供所需的目录及文件。
[root@test1 ~]# mkdir -pv /etc/pki/CA/{certs,crl,newcerts}
[root@test1 ~]# touch /etc/pki/CA/{serial,index.txt}
[root@test1 ~]# echo 01 > /etc/pki/CA/serial

10.2 在 Web 服务器主机(192.168.10.128)上创建证书签署请求。

① Web 服务器主机生成私钥。
[root@web ~]# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)

② Web 服务器生成证书签署请求。
[root@web ~]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:HA
Locality Name (eg, city) [Default City]:ZZ
Organization Name (eg, company) [Default Company Ltd]:iTab
Organizational Unit Name (eg, section) []:Ops
Common Name (eg, your name or your server’s hostname) []:www2.itab.com
Email Address []:admin@itab.com
 
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

③ 通过可靠方式将证书签署请求发送给 CA 主机。这里为了演示方便,所以直接通过 scp 命令传送。
[root@web ~]# scp /etc/httpd/ssl/httpd.csr root@192.168.10.140:/tmp/

10.3 在 CA 主机(192.168.10.140)上签署证书请求。

① CA 主机为 Web 服务器签证。

[root@test1 ~]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 1 (0x1)
        Validity
            Not Before: May 21 13:50:38 2017 GMT
            Not After : May 21 13:50:38 2018 GMT
        Subject:
            countryName              = CN
            stateOrProvinceName      = HA
            organizationName          = iTab
            organizationalUnitName    = Ops
            commonName                = www2.itab.com
            emailAddress              = admin@itab.com
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                C9:0A:4A:B8:2C:67:8A:1C:68:D5:1E:F6:40:57:21:BD:48:75:D5:75
            X509v3 Authority Key Identifier: 
                keyid:81:F9:59:3E:F7:7C:8C:A4:1A:6B:7F:6F:9E:4F:8B:A6:18:A5:20:30
 
Certificate is to be certified until May 21 13:50:38 2018 GMT (365 days)
Sign the certificate? [y/n]:y
 
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

② CA 主机将已签署的证书通过可靠方式传送给该 Webf 服务器。这里同样使用 scp 命令。
[root@test1 ~]# scp /etc/pki/CA/certs/httpd.crt root@192.168.10.128:/etc/httpd/ssl/

(11) Web 服务器在已经得到 CA 签署的证书了,现在开始配置 HTTPS 服务,首先安装 mod_ssl 模块。
[root@web ~]# yum install mod_ssl

查看 ssl_module 是否已经加载。
[root@web ~]# httpd -M | grep ssl_module
 ssl_module (shared)    # ssl 模块已经加载
Syntax OK

(12) 修改 /etc/httpd/conf.d/ssl.conf 配置文件。
[root@web ~]# vim /etc/httpd/conf.d/ssl.conf
 
# 修改以下配置项
 
<VirtualHost 192.168.10.128:443>
DocumentRoot “/web/vhosts/www2”
ServerName www2.itab.com
SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key

检查语法错误。

[root@web ~]# httpd -t
Syntax OK

重载服务。
[root@web ~]# service httpd reload

查看是否监听在 443 端口。
[root@web ~]# ss -tnl | grep 443
LISTEN    0      128                      :::443                    :::*

(13) 使用 Web 服务器本主机测试。

[root@web ~]# openssl s_client -connect www2.itab.com:443 -CAfile /etc/pki/CA/cacert.pem 
CONNECTED(00000003)
……(中间省略)……
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
    Session-ID: 379BE969583B315BC9C8C43F64107EE2CD9CB12668ECA26725D8749BA9CDABD2
    Session-ID-ctx: 
    Master-Key: FB5258D5C5FB3EF484831FC306B883EA84D106399CC5630A34169E7B2949FD45A9B90D025AB82EC34887A7C9D8E3F7E2
    Key-Arg  : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    TLS session ticket lifetime hint: 300 (seconds)
    TLS session ticket:
    0000 – 55 ba da 0d 93 a9 67 a4-46 1b 21 ab 6f a3 03 5d  U…..g.F.!.o..]
    0010 – 6e aa d8 23 25 8d 7d 8a-41 db 47 ea a9 3b fb 7c  n..#%.}.A.G..;.|
    0020 – 70 59 b2 a3 6c cd 7e 00-4e 8a 3e ef 7d 6b f4 68  pY..l.~.N.>.}k.h
    0030 – 59 0a 2d 6d a1 1b 36 84-62 7c 3f 51 5d 24 aa 90  Y.-m..6.b|?Q]$..
    0040 – a8 7f 0a a9 f7 a3 fa b2-a0 ea 30 ef 35 80 7d 13  ……….0.5.}.
    0050 – 66 8c d2 47 be b5 47 1f-64 90 e9 c7 ce 7e a6 6f  f..G..G.d….~.o
    0060 – 10 e5 ab 58 98 70 ab 14-07 ca 04 b0 c4 2f d8 f6  …X.p……./..
    0070 – 70 52 85 f2 1c 93 13 ca-0c ef 7e b2 5a f3 f2 09  pR……..~.Z…
    0080 – e3 fd e6 d1 01 18 4b 63-74 ce b9 9c c0 a5 2e 1e  ……Kct…….
    0090 – 8c 9a 7d 7f 35 69 b3 81-01 64 7a 9c 2c 61 24 07  ..}.5i…dz.,a$.
    00a0 – 29 69 af b8 19 a7 78 ff-2a 2e a5 8f fe 11 21 b0  )i….x.*…..!.
    00b0 – 86 78 fd b7 ae 55 3b 10-44 b4 81 25 02 40 0a c5  .x…U;.D..%.@..
 
    Start Time: 1491487607
    Timeout  : 300 (sec)
    Verify return code: 21 (unable to verify the first certificate)

GET /index.html HTTP/1.1    # 测试能否获取 www2.itab.com 的主页面资源
Host: www2.itab.com
 
HTTP/1.1 200 OK            # 获取成功
Date: Thu, 06 Apr 2017 14:06:57 GMT
Server: Apache/2.2.15 (CentOS)
Last-Modified: Thu, 06 Apr 2017 11:29:45 GMT
ETag: “4342e-19-54c7dd36ab98c”
Accept-Ranges: bytes
Content-Length: 25
Connection: close
Content-Type: text/html; charset=UTF-8
 
<h1> www2.itab.com </h1>
closed
[root@web ~]#

测试完毕,使用 httpd-2.2 搭建 HTTP/HTTPS 服务成功。接下来使用 httpd-2.4 搭建同样的 HTTP/HTTPS 服务。

httpd-2.4

httpd-2.4 跟 httpd-2.2 不同在于任意目录下的页面只有显式授权才能被访问,因此,在配置虚拟主机访问控制时,如下所示。
[root@test1 ~]# cat /etc/httpd/conf.d/vhosts.conf
 
<VirtualHost 192.168.10.140:80>
    ServerName www1.itab.com
    DocumentRoot “/web/vhosts/www1”
    ErrorLog logs/www1.err
    CustomLog logs/www1.access combined
    <Location /server-status>
        SetHandler server-status
        AuthType Basic
        AuthName “Enter your username and password”
        AuthUserFile “/etc/httpd/.htpasswd”
        Require user status
    </Location>
    <Directory “/web/vhosts/www1”>
        <RequireAll>        # 显示授权
            Require all granted
            Require not ip 192.168.10.128
        </RequireAll>
    </Directory>
</VirtualHost>
 
<VirtualHost 192.168.10.140:80>
    ServerName www2.itab.com
    DocumentRoot “/web/vhosts/www2”
    ErrorLog logs/www2.err
    CustomLog logs/www2.access combined
    <Directory “/web/vhosts/www2”>
        <RequireAll>        # 显示授权
            Require all granted
            Require not ip 192.168.10.128
        </RequireAll>
    </Directory>
</VirtualHost>

还有在配置 HTTPS 时,也是需要显式授权才能被访问到,如下。
[root@test1 ~]# vim /etc/httpd/conf.d/ssl.conf 
 
<VirtualHost 192.168.10.140:443>
 
DocumentRoot “/web/vhosts/www2”
ServerName www2.itab.com
 
<Directory “/web/vhosts/www2”>    # 显式授权
    Require all granted
</Directory>
 
SSLCertificateFile /etc/httpd/ssl/httpd2.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
 
</VirtualHost>

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-06/144433.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计9922字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7990508
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛 NAS-1:安装飞牛 NAS 前言 在家庭和小型工作室场景中,NAS(Network Atta...
星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛 NAS-5:飞牛 NAS 中的 Docker 功能介绍 大家好,我是星哥,今天给大家带来如何在...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...