环境概述
- Debian 10.x
- 安装apache服务
- Client可供管理员使用,有三台服务器Rserver,Server01,Server04
- Client:10.10.100.x(DHCP获取)
- Rserver: CA签发方
- Server01:172.16.100.201 (CA使用方)
- Server04:192.168.10.4 (CA使用方)
需求概述
由Server01,04提供www.sdskills.com
skills公司的门户网站;
使用apache服务;
网页文件放在/data/share/htdocs/skills;
服务以用户webuser运行;
首页内容为“This is the front page of sdskills’s website.”;
网站使用https协议;
SSL使用RServer颁发的证书, 颁发给:
C = org
ST = China
L = ShangDong
O = skills
OU = Operations Departments
org = *.skills.com
Sever01,04的CA证书路径:/CA/cacert.pem
签发数字证书,颁发者:
C = org;
O = Inc
OU = www.skills.com
org = shill Global Root CA
客户端访问https时应无浏览器(含终端)安全警告信息;
当用户使用http访问时自动跳转到https安全连接;
当用户使用sdskills.com或any.sdskills.com(any代表任意网址前缀)访问时,自动跳转到www.sdskills.com。
实现流程
实施步骤
PS:IP地址跟环境概述略有不同,请随机应变
安装Apache:
apt install -y apache2
安装bind9 :
apt install -y bind9
配置dns
创建区域文件
nano /etc/bind/name.conf
zone “sdskills.com”{
type master;
file “/etc/bind/db.sdskills.com”;
};
zone “100.16.172.in-addr-arpa”{
type master;
file “/etc/bind/db.100.16.172”;
};
创建正反向解析文件
首先复制模板 正向模板:db.local 反向模板 db.127
cp -p db.local db.sdskills.com
cp -p db.127 db.100.16.172
nano /etc/bind/db.sdsills.com
nano /etc/bind/db.100.16.172
配置dns转发 nano /etc/bind/named.conf.options
修改主机dns nano /etc/resolv.conf
重启服务:
systemctl restart bind9
测试:
apt install -y dnsu*
nslookup sdskills.com
nslookup 172.16.100.201
CA服务端:
apt install openssl
测试:openssl
修改CA证书路径:nano /etc/ssl/openssl.conf
创建CA目录 mkdir /CA
复制配置模板 cp -rf /etc/ssl/* /CA
进/CA目录创建索引 touch index.txt
echo 01 > serial
生成根密钥
openssl genrsa -out private/cakey.pem 2048 //生成一个2048位根密钥,放在/CA/private目录下
生成根证书
openssl req -new -x509 -key ./private/cakey.pem -out cacert.pem //利用根密钥生成一个根证书(不要放在private目录,此目录专门存放私钥)
查看证书
openssl x509 -in cacert.pem -text -noout
web服务器端
生成私钥
openssl genrsa -out server01.key 2048
生成证书请求
openssl req -new -key server01.key -out server01.csr
传送请求到CA服务端 scp -P {对方ssh服务端端口号} server01.csr {对方服务器IP}:/CA
注意:传输过程中两边文件夹权限要一致!
CA服务器端
生成证书
openssl x509 -req -in server01.csr -CA /CA/cacert.pem -CAkey /CA/private/cakey.pem -CAcreateserial -out server01.crt -days 365
传输证书 scp
web服务器端
创建web站点文件: mkdir /data/share/htdocs/skills
创建web页面:
echo “This is the front page of sdskills's website.” > /data/share/htdocs/skills/index.html
echo “Staff Information.” > /data/share/htdocs/skills/staff.html
注意:对文件创建相应权限!
修改apache2主配置文件
nano /etc/apache2/apache2.conf
修改apache2自带ssl配置文件 nano /etc/apache2/site-available/default-ssl-conf
注意:暂时先不写servername 本机测试成功后再写
添加文件映射
ln /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/ssl-default.conf
激活ssl站点模块a2enmod ssl
重启服务 systemctl restart apache2
在浏览器输入域名或IP访问
配置虚拟主机文件 nano /etc/apache2/sites-enabled/000-default.conf
重启apache2 systemctl restart apache2
web站点根目录创建.htaccess
并编写如下内容,开启https重定向
在站点虚拟主机配置文件000-default.con
f 添加如下内容
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://www.skills.com
开启https重定向 注意:最好也在.htaccess文件也添加
web站点根目录创建.htaccess 并编写如下内容,开启{any}.sdskills.com自动跳转到www.sdskills.com
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [L,R]
修改apache.conf
启动rewrite模块 a2enmod rewrite
再启动ssl模块 a2enmod ssl
重启服务 systemctl restart apache2
创建webuser用户 使该用户运行apache2
useradd -G www-data webuser
修改apache2.conf配置文件 nano /etc/apache2/apache2.conf
注释前两行 添加后两行
重启服务
top查看
cp -p cacert.pem /usr/local/share/ca-certificates/cacert.crt #以crt方式添加到证书信
任列表
update-ca-certificates #更新证书列表
火狐导入pem证书文件到根证书颁发机构
视频教程:https://www.bilibili.com/video/BV1pg41177Ev?share_source=copy_web