ubunut apache2下配置和https重定向

发布时间 2023-03-31 23:55:53作者: lisenMiller

apache2的目录文件详解

Apache在启动的时候自动读取文件配置信息 apache2引用到以下文件;

#包含动态模块的配置
include /etc/apache2/mods-enabled/*.load
include /etc/apache2/mods-enabled/*.conf
#包含用户自己的配置
include /etc/apache2/httpd.conf
#包含端口监听的配置
include /etc/apache2/ports.conf
#包含一般性的配置语句片段
include /etc/apache2/conf.d/
#包含虚拟主机的配置指令
include /etc/apache2/sites-available
包含两个文件 000-default.conf 和default-ssl.conf文件
000-default.conf是使用http协议网站的默认网站配置文件
default-ss.conf是https协议网站才使用的默认网站配置文件。
#软连接指向
include /etc/apache2/sites-enables/

Apache2绑定域名

1. 打开/etc/hosts文件 

添加 127.0.0.1 test.com

2.配置/etc/apache2/sites-availables/000-default.conf

#如果包含了很多子域名的话
添加
ServerName test.com 
ServerAlias  *.testclom

#如果只绑定一个就直接写上www
ServerName www.test.com

Apache自签证书

一.启用mod_ssl

使用ssl证书之前首先得启用mod_ssl,提供ssl加密的支持的apache模块

#开启ssl模块,提供对ssl加密的支持的apache模块
sudo a2enmod ssl
#启动重定向
sudo a2enmod rewrite

二.创建ssl证书

1.进入/etc/apache2/ports.conf 

配置
Listen 80
Listen 443

apache使用加密后生成新的ssl证书

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-cert.key -out /etc/ssl/certs/apache-cert.crt
#openssl 创建和管理openssl证书
#req -x509   指定我们要用x.509证书签名请求(CSR)管理 X.509是ssl和TLS用于密钥和证书管理的共用密钥基础结构标准
#-nodes 告诉openssl跳过使用密码短语保护我们的证书选项 因为不跳过的话 apache服务的读取文件可以在没有用户的情况下读取文件
#-days 365 这是时间365天过期
#-newkey rsa:2048 指定生成一个新证书和一个新密钥
#-keyout 告诉openssl在何处放置我们生成的私钥文件
#-out: 这告诉openssl在哪里放置我们在创建的证书
会有要创建的提示

Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:Example
Locality Name (eg, city) [Default City]:Example
Organization Name (eg, company) [Default Company Ltd]:Example Inc
Organizational Unit Name (eg, section) []:Example Dept
Common Name (eg, your name or your server's hostname) []:your_domain_or_ip
Email Address []:webmaster@example.com

三.生成了apache配置为了使用ssl

1.有一个自签名证书和密钥,更新apache配置使用他们

cd /etc/apache2/sites-available 

vim /etc/apache2/sites-available/default-ssl.conf 使用

#删除所有的注释的猴,虚拟主机配置下的文件如下所示
<IfModule mod_ssl.c>
        <VirtualHost _default_:443>
                ServerAdmin webmaster@localhost
​
                DocumentRoot /var/www/html
​
                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined
​
                SSLEngine on
​
                SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
                SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
​
                <FilesMatch "\.(cgi|shtml|phtml|php)$">
                                SSLOptions +StdEnvVars
                </FilesMatch>
                <Directory /usr/lib/cgi-bin>
                                SSLOptions +StdEnvVars
                </Directory></VirtualHost>
</IfModule>

修改http主机文件重定向到HTTPS

2.将伪加密的虚拟主机文件以所有流量重定向到ssl加密

sudo vim /etc/apache2/sites-availables/000-default.conf

 <\VirtualHost *:80><\VirtualHost> 标签内随便一个地方加入以下三行
        RewriteEngine on
        RewriteCond %{HTTPS} !=on
        RewriteRule  ^(.*) https://%{SERVER_NAME}$1 [L,R]

3. ufw放行apache端口

ufw  allow 'Apache full'

4.重启apache2服务激活

#重启apache以激活该模块
sudo systemctl restart apache2