为什么要配置SSL证书启用https协议,可以看这个视频
- 申请免费证书
先在阿里云数字证书管理服务界面-免费证书下购买20个免费,或者花68买一年的免费证书,然后等待CA机构签发激活。
激活后会显示已签发,然后下载对应版本的证书到自己本地电脑,选择我Apache会下载三个证书文件。
- 上传证书到服务器
在apache2目录下创建SSL目录
mkdir /etc/apache2/ssl
将下载的三个证书文件上传到服务器的 /etc/apache2/ssl
目录。
- 安装SSL证书所需的模块
sudo apt update
sudo apt install apache2 ssl-cert
- 启用SSL模块
sudo a2enmod ssl
/sites-available
目录存放的是可用的虚拟主机。
/sites-enabled
目录存放的是已经启用的虚拟主机。
SSL模块启用后,会在/etc/apache2/sites-available
目录生成SSL证书配置文件default-ssl.conf
。
- 打开default-ssl.conf配置文件中,定位到以下参数,按照中文注释修改
/etc/apache2/sites-available/default-ssl.conf
DocumentRoot /var/www/html #替换为网站的代码入口地址,比如我的是/var/www/html
ServerName www.coni.top #将www.coni.top替换为您证书绑定的域名。部分服务器,没有该配置参数,需要手动添加。
SSLCertificateFile /etc/apache2/ssl/coni.top_public.crt #证书文件路径。请替换为实际证书文件路径。
SSLCertificateKeyFile /etc/apache2/ssl/coni.top.key #证书私钥文件路径。替换为实际证书私钥文件路径。
SSLCertificateChainFile /etc/apache2/ssl/coni.top_chain.crt #证书链文件路径。请替换为实际证书链文件路径。
如果没有就在开头添加
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
- 将default-ssl.conf映射至
/etc/apache2/sites-enabled
目录,实现两者之间的自动关联
sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/001-ssl.conf
- 重新加载Apache2配置文件
sudo /etc/init.d/apache2 force-reload
- 重启Apache2服务
sudo /etc/init.d/apache2 restart
- 访问自己的网站,查看证书是否成功配置
对了,阿里云官方文档给的教程是apache1的,还是进的etc/httpd的目录,不是现在主流apache2的教程,别搞错了
开启http强制跳转https
在项目根目录下/var/www
,创建文件”.htaccess
“,内容如下
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.* https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
或者
打开 /etc/apache2/sites-available/000-default.conf
,
在 <\VirtualHost :80><\VirtualHost>
标签内随便一个地方加入以下三行
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R=301]
然后修改apache统一配置文件里面的”/etc/apache2/apache2.conf
“
# 找到<Directory />那一段,修改一下AllowOverride从None到All
<Directory />
Options FollowSymLinks
AllowOverride All
Require all denied
</Directory>
# 找到<Directory /var/www/>那一段,修改一下AllowOverride从None到All
<Directory /var/www/>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
重启apache服务:/etc/init.d/apache2 restartor
现在访问http的域名就会被强制跳转到https下