HTTPS 服务器搭建(综合实验)

环境介绍

A 机器:CA 服务器,DNS 服务器,192.168.X.120,域名为 dns.xiandai.com

B 机器:WEB 服务器,域名为 www.xiandai.com,192.168.x.121,DNS 指向 A 机器

环境准备

配置 IP 地址

A 机器(CA 服务器,DNS 服务器)
  1. 编辑网络配置文件

    vi /etc/sysconfig/network-scripts/ifcfg-eth0  # 根据实际网卡名修改
    
  2. 配置静态 IP 地址

    TYPE=Ethernet
    BOOTPROTO=static
    DEFROUTE=yes
    PEERDNS=yes
    PEERROUTES=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_PEERDNS=yes
    IPV6_PEERROUTES=yes
    IPV6_FAILURE_FATAL=no
    NAME=eth0
    DEVICE=eth0
    ONBOOT=yes
    IPADDR=192.168.X.120
    NETMASK=255.255.255.0
    GATEWAY=192.168.X.1  # 根据实际网关填写
    DNS1=192.168.X.120
    
  3. 重启网络服务

    systemctl restart network
    
B 机器(WEB 服务器)
  1. 编辑网络配置文件

    vi /etc/sysconfig/network-scripts/ifcfg-eth0  # 根据实际网卡名修改
    
  2. 配置静态 IP 地址

    TYPE=Ethernet
    BOOTPROTO=static
    DEFROUTE=yes
    PEERDNS=yes
    PEERROUTES=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_PEERDNS=yes
    IPV6_PEERROUTES=yes
    IPV6_FAILURE_FATAL=no
    NAME=eth0
    DEVICE=eth0
    ONBOOT=yes
    IPADDR=192.168.X.121
    NETMASK=255.255.255.0
    GATEWAY=192.168.X.1  # 根据实际网关填写
    DNS1=192.168.X.120
    
  3. 重启网络服务

    systemctl restart network
    

挂载光盘,并配置 yum 源为本地磁盘

A 机器和 B 机器都需要执行以下操作
  1. 挂载光盘

    mount /dev/cdrom /mnt
    
  2. 配置源文件

    vi /etc/yum.repos.d/CentOS-Base.repo
    

    输入以下内容:

    [Base]
    name=Local Repo
    baseurl=file:///mnt
    gpgcheck=0
    

关闭防火墙

A 机器和 B 机器都需要执行以下操作
systemctl stop firewalld
systemctl disable firewalld
setenforce  0

配置 DNS 服务(在 A 机器上操作)

安装 Bind 软件

yum install -y bind bind-utils

配置主配置文件

vi /etc/named.conf

修改以下内容:

options {
    listen-on port 53 { any; };
    listen-on-v6 port 53 { ::1; };
    directory       "/var/named";
    dump-file       "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    allow-query     { any; };

    recursion yes;

    dnssec-enable yes;
    dnssec-validation yes;

    bindkeys-file "/etc/named.iscdlv.key";

    managed-keys-directory "/var/named/dynamic";

    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";
};

logging {
    channel default_debug {
        file "data/named.run";
        severity dynamic;
    };
};

zone "." IN {
    type hint;
    file "named.ca";
};

zone "xiandai.com" IN {
    type master;
    file "xiandai.com.zone";
    allow-update { none; };
};

创建区域文件

vi /var/named/xiandai.com.zone

输入以下内容:

$TTL 86400
@       IN      SOA     dns.xiandai.com. admin.xiandai.com. (
                        2025022201      ; Serial
                        3600            ; Refresh
                        1800            ; Retry
                        604800          ; Expire
                        86400 )         ; Minimum

        IN      NS      dns.xiandai.com.
dns     IN      A       192.168.X.120
www     IN      A       192.168.X.121

修改文件权限

chown named:named /var/named/xiandai.com.zone

启动并设置开机自启

systemctl start named
systemctl enable named

配置 CA 服务,为 B 机器申请证书

在 A 机器上配置 CA 服务

yum install openssl openssl-devel
创建 CA 工作目录
cd /etc/pki/CA
touch index.txt
echo 1000 > serial
生成 CA 私钥
openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048
chmod 400 /etc/pki/CA/private/cakey.pem
生成 CA 自签名证书
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650

在填写信息时,注意通用名称(Common Name)可以填写 xiandai.com

在 B 机器上生成私钥和证书签名请求(CSR)

yum install openssl openssl-devel
mkdir -p /etc/httpd/ssl
cd /etc/httpd/ssl
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr

在填写信息时,通用名称(Common Name)填写 www.xiandai.com

将 CSR 文件从 B 机器复制到 A 机器

可以使用 scp 命令:

scp /etc/httpd/ssl/server.csr root@192.168.X.120:/root

在 A 机器上使用 CA 签署 CSR

openssl ca -in /root/server.csr -out /root/server.crt -days 365

将签署好的证书从 A 机器复制回 B 机器

scp /root/server.crt root@192.168.X.121:/etc/httpd/ssl
# 在 A 机器上执行以下命令
scp /etc/pki/CA/cacert.pem root@192.168.X.121:/etc/httpd/ssl/

配置 WEB 服务(在 B 机器上操作)

安装 Apache 服务

yum install -y httpd mod_ssl

配置 Apache 支持 HTTPS

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

修改以下内容:

<VirtualHost _default_:443>
    ServerName www.xiandai.com:443
    DocumentRoot "/var/www/html"
    SSLCertificateFile /etc/httpd/ssl/server.crt
    SSLCertificateKeyFile /etc/httpd/ssl/server.key
    SSLCACertificateFile /etc/httpd/ssl/cacert.pem
    SSLProtocol all -SSLv2 -SSLv3
    SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
    SSLHonorCipherOrder on
</VirtualHost>

启动并设置开机自启

systemctl start httpd
systemctl enable httpd

测试

在浏览器中输入 https://www.xiandai.com,如果能正常访问,说明 HTTPS 服务器搭建成功。由于使用的是自签名证书,浏览器可能会提示证书不受信任,在测试环境中可以忽略该提示。