Apache服务
任务描述:请采用 Apache 搭建企业网站。
配置 linux1 为 Apache2 服务器,使用 skills.lan 或 any.skills.lan(any 代表任意网址前缀,用 linux1.skills.lan 和 web.skills.lan测试)访问时,自动跳转到 www.skills.lan。禁止使用 IP 地址访问,默认首页文档/var/www/html/index.html 的内容为HelloApache。
把/etc/pki/tls/skills.crt 证书文件和/etc/pki/tls/skills.key私钥文件转换成含有证书和私钥的/etc/pki/tls/skills.pfx文件;
然后把/etc/pki/tls/skills.pfx转换为含有证书和私钥的/etc/pki/tls/skills.pem文件,
再从/etc/pki/tls/skills.pem文件中提取证书和私钥分别到/etc/pki/tls/apache.crt和/etc/pki/tls/apache.key。
客户端访问 Apache 服务时,必需有 ssl 证书。
| 主机名 | 域名 | IP地址 |
|---|---|---|
| linux1 | linux1.skills.lan | 10.10.220.11 |
1.安装apache服务器
执行yum install apache* mod_ssl -y安装
2.配置默认首页文档/var/www/html/index.html
在目录下创建文件index.html,根据题目修改文件内容。
[root@linux1 ~]# cat /var/www/html/index.html
HelloApache
[root@linux1 ~]#修改完成后重启httpd服务,使用curl {IP地址} 可进行测试。
[root@linux1 ~]# curl 127.0.0.1
HelloApache
[root@linux1 ~]#3.修改apache配置文件 配置为只能使用域名访问,禁止IP直接访问。
配置文件默认存放在/etc/httpd/conf/httpd.conf
使用vim修改如下文件[root@linux1 ~]# vim /etc/httpd/conf/httpd.conf
关键配置如下 方法1:
<VirtualHost *:80>
# serverName 10.10.220.11
# serverAlias 10.10.220.11:*
<Location />
Order Allow,Deny
Deny from all
</Location>
</VirtualHost>
<VirtualHost 10.10.220.11:80>
serverName skills.lan
serverAlias *.skills.lan
RewriteEngine On
Redirect / https://www.skillstest.lan/
</VirtualHost>
<VirtualHost *:443>
serverName skills.lan
serverAlias *.skills.lan
SSLCertificateFile /etc/pki/tls/apache.crt
SSLCertificateKeyFile /etc/pki/tls/apache.key
SSLEngine on
SSLHonorCipherOrder on
RewriteEngine On
RewriteCond %{HTTP_HOST} ^((?!www).)+skills.lan*$ [NC] #访问非www开头的网页
RewriteRule ^(.*)$ https://www.skills.lan/$1 [L,R=301] #重定向为www.skills.lan
RewriteCond %{HTTP_HOST} ^([0-9]{1,3}[\.]){3}[0-9]{1,3} [NC] #直接IP访问的
RewriteRule ^(.*)$ https://www.skills.lan$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^skills.lan [NC] #直接访问skills.lan
RewriteRule ^(.*)$ https://www.skills.lan$1 [L,R=301]
# <Location />
# Order Allow,Deny
# Deny from all
# </Location>
</VirtualHost>方法二:
#无SSL配置
<VirtualHost *:80>
ServerName skills.lan
ServerAlias *.skills.lan
DocumentRoot /var/www/html
# 重写不符合规则的连接
<IfModule mod_rewrite.c>
RewriteEngine On
#IP请求直接返回403
RewriteCond %{HTTP_HOST} ^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$
RewriteRule ^ - [F,L]
#非www开头跳转
RewriteCond %{HTTP_HOST} ^(?!www\.)[a-z0-9]+(\.[a-z0-9]+)+$ [NC] #非www开头请求
RewriteRule ^(.*)$ http://www.skills.lan/$1 [R=301,L] #重定向到www
</IfModule>
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
#SSL配置
<VirtualHost *:443>
ServerName skills.lan
ServerAlias *.skills.lan
DocumentRoot /var/www/html
#开启ssl引擎,并配置证书
SSLEngine on
SSLCertificateFile /etc/pki/tls/apache.crt
SSLCertificateKeyFile /etc/pki/tls/apache.key
# 客户端访问需要提供证书
SSLVerifyClient require
# 客户端证书签发的CA服务器证书
SSLCACertificateFile /etc/pki/tls/CA/CA.crt
# 重写不符合规则的连接
<IfModule mod_rewrite.c>
RewriteEngine On
#IP请求直接返回403
RewriteCond %{HTTP_HOST} ^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$
RewriteRule ^ - [F,L]
#非www开头跳转
RewriteCond %{HTTP_HOST} ^(?!www\.)[a-z0-9]+(\.[a-z0-9]+)+$ [NC] #非www开头请求
RewriteRule ^(.*)$ https://www.skills.lan/$1 [R=301,L] #重定向到www
</IfModule>
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
</VirtualHost>4.证书转换
4.1 crt和key转pfx
skills.crt+skills.key = skills.pfx
openssl pkcs12 -export -out {输出pfx文件目录} -inkey {key密钥文件} -in {crt密钥对应的证书}
例如:
[root@linux1 html]# openssl pkcs12 -export -out /etc/pki/tls/skills.pfx -inkey /etc/pki/tls/skills.key -in /etc/pki/tls/skills.crt
Enter Export Password:
Verifying - Enter Export Password:过程中需要输入导出密码 请牢记。
4.2 pfx转pem
openssl pkcs12 -in {pfx证书} -nodes -out {输出pem证书}
例如:
[root@linux1 tls]# openssl pkcs12 -in skills.pfx -nodes -out skills.pem
Enter Import Password:转换过程中需要输入先前导出的密码。
4.3 pem转crt和key
4.3.1 pem转crt
openssl x509 -in {pem文件} -out {输出的crt文件}
[root@linux1 tls]# openssl x509 -in skills.pem -out apache.crt4.3.2 pem转key
openssl rsa -in {pem文件} -out {输出的key文件}
[root@linux1 tls]# openssl rsa -in skills.pem -out apache.key5.apache网页服务配置ssl证书访问。
使用yum install mod_ssl为apache安装ssl模块
[root@linux1 conf]# yum install mod_ssl修改配置文件/etc/httpd/conf/httpd.conf
详见第三步。
6. 验证
[root@linux1 ~]# curl -k https://10.10.220.11 --silent -H "Host:www.skills.lan"
HelloApache模拟直接访问https://10.10.220.11,提示需要跳转到https://www.skills.lan/
[root@linux1 ~]# curl -k https://10.10.220.11
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://www.skills.lan/">here</a>.</p>
</body></html>
[root@linux1 ~]#模拟访问https://test.skills.lan,提示需要跳转到https://www.skills.lan/
[root@linux1 ~]# curl -k https://10.10.220.11 --silent -H "Host:test.skills.lan"
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://www.skills.lan//">here</a>.</p>
</body></html>模拟访问http://10.10.220.11,提示需要跳转到https://www.skills.lan/
[root@linux1 ~]# curl 10.10.220.11
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="https://www.skillstest.lan/">here</a>.</p>
</body></html>模拟直接访问http://www.skills.lan,提示需要跳转到https://www.skills.lan/
[root@linux1 ~]# curl -k http://10.10.220.11 --silent -H "Host:www.skills.lan"
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="https://www.skillstest.lan/">here</a>.</p>
</body></html>本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭