Linux Apache配置https访问

配置https访问

该环境是rh254课程配套的一个环境,不过配置方法步骤相同。

要求:
使用虚拟主机技术部署两个网站:
网站1:

  • 绑定域名 www0.example.com
  • 目录在 /srv/www0/www
  • 要求支持https加密访问
  • 所有通过http访问该网站都会自动调转到https

网站2:

  • 绑定域名 webapp0.example.com
  • 目录在 /srv/webapp0/www
  • 要求支持https加密访问
  • 所有通过http访问该网站都会自动调转到https

1、安装软件包

[root@server0 ~]# yum install httpd mod_ssl -y

2、下载证书

[root@server0 ~]# wget -O /etc/pki/tls/certs/example-ca.crt http://classroom.example.com/pub/example-ca.crt    --->    根证书
[root@server0 ~]# wget -O /etc/pki/tls/certs/www0.crt http://classroom.example.com/pub/tls/certs/www0.crt www0    --->    证书
[root@server0 ~]# wget -O /etc/pki/tls/private/www0.key http://classroom.example.com/pub/tls/private/www0.key www0    --->    私钥

[root@server0 ~]# wget -O /etc/pki/tls/certs/webapp0.crt http://classroom.example.com/pub/tls/certs/webapp0.crt	webapp0    --->    证书
[root@server0 ~]# wget -O /etc/pki/tls/private/webapp0.key http://classroom.example.com/pub/tls/private/webapp0.key webapp0    --->    私钥

注意一定不能将文件路径下载错或者记错,否则后期检查很麻烦

3、建立虚拟主机

直接拷贝一份模板文件进行编辑

[root@server0 conf.d]# cp /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/www0.conf

多余部分删除,只保留如下部分进行修改
[root@server0 conf.d]# vim www0.conf 

<VirtualHost *:443>
DocumentRoot "/srv/www0/www/"
ServerName www0.example.com:443

SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5

SSLCertificateFile /etc/pki/tls/certs/www0.crt	--->www0证书路径
SSLCertificateKeyFile /etc/pki/tls/private/www0.key --->www0私钥路径

<Directory /srv/www0/www/>
Require all granted
</Directory>
</VirtualHost>

<VirtualHost *:80>	--->要求http跳转,配置这个VirtualHost
Servername www0.example.com	--->绑定域名
RewriteEngine On	--->跳转开启
RewriteRule ^(./*)$ https://%{HTTP_HOST}$1 [redirect=301]	
</VirtualHost>

  

^(./*)$ 正则表达式,表示访问的
%{HTTP_HOST} 表示对方访问时所用的域名
$1 表示匹配的内容


将www0.conf拷贝一份,名字为webapp0.conf,然后修改webapp0.conf的内容

[root@server0 conf.d]# cp {www0,webapp0}.conf
[root@server0 conf.d]# sed -i 's/www0/webapp0/g' webapp0.conf

4、创建主页目录并修改权限

[root@server0 ~]# mkdir -p /srv/{www0,webapp0}/www
[root@server0 ~]# echo "I'm www0" >> /srv/www0/www/index.html
[root@server0 ~]# echo "I'm webapp0" >> /srv/webapp0/www/index.html
[root@server0 ~]# chown apache:apache -R /srv/*

5、修改selinux安全上下文

[root@server0 ~]# semanage fcontext -a -t 'httpd_sys_content_t' '/srv(/.*)?'
[root@server0 ~]# restorecon -Rv /srv/
[root@server0 ~]# ll -Zd /srv/www0/
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /srv/www0/

6、更改防火墙配置

[root@server0 ~]# firewall-cmd --permanent --add-service=http
[root@server0 ~]# firewall-cmd --permanent --add-service=https
[root@server0 ~]# firewall-cmd --reload
[root@server0 ~]# firewall-cmd --list-all
public (default, active)
interfaces: eth0
sources: 
services: dhcpv6-client http https ssh
ports: 
masquerade: no
forward-ports: 
icmp-blocks: 
rich rules:

7、启动httpd服务并设定开机自启动

[root@server0 ~]# systemctl start httpd
[root@server0 ~]# systemctl enable httpd

8、验证
desktop0在导入证书之后使用浏览器访问

http://www0.example.com 会被跳转到 https://www0.example.com 页面显示I'm www0
http://webapp0.example.com 会被跳转到 https://webapp0.example.com 页面显示I'm webapp0

 这里使用curl访问会有问题,需要导入证书,本人学艺不精,后期更新,谢谢支持。

有什么疑问请留言或者私信我,看到第一时间回复。

本人linux菜鸟一个,欢迎linux大佬多多指教。

猜你喜欢

转载自www.cnblogs.com/despotic/p/10754074.html