虽然Nginx比较流行,但是由于一些老项目用到了Apache2来支持Web服务,最近想给服务上一个Https支持,虽然看似教程简单,但是也遇到一些特殊情况,经历了一番折腾也算是解决了所有问题,将过程记录如下。演示是基于Ubantu系统。
申请ssl证书
首先为自己的域名申请好ssl证书,这里用到了阿里云的免费证书。下载的时候选择apache的版本。解压后里面包含三个文件,这三个文件后面都要放到服务器上面。
配置证书
然后登录到服务器上面,进行相应的文件与配置调整,首选是要配置Apache2支持ssl,在服务器上面运行如下命令。
apt-get install openssl
a2enmod ssl
然后 vim /etc/apache2/ports.conf
,看是否配置了443的监听,一般情况下内容如下表示是正常情况。
然后继续配置证书相关的东西,先把证书上传到服务器并放到指定位置,ftp
或者rz
命令都可以,后面要用到。
cd /etc/apache2/sites-available/
可以看到上图有两个文件,这里主要用到了default-ssl.conf
,然后选择编辑它。核心就是下面的一些内容,重点是证书的应用决定了https服务能不能配置成功。
<IfModule mod_ssl.c>
#<VirtualHost _default_:443>
<VirtualHost *:443>
ServerName 你的域名
DocumentRoot WEB根目录
SSLEngine on
SSLCertificateFile public.crt证书文件位置
SSLCertificateKeyFile key证书文件位置
SSLCertificateChainFile chain.crt证书文件位置
</VirtualHost>
</IfModule>
检测配置
上面内容配置了就基本差不多了,使用命令service apache2 restart
或者service apache2 reload
重启/重新载入服务。然后https访问一下自己的域名。如果浏览器地址栏出现了安全锁
,则表示配置成功。下图为成功示范。
如果访问出现异常,可以尝试做以下检查。
1. 自己的ssl证书路径是否配置错了。
2. a2ensite default-ssl.conf 应用一下ssl配置
3. 443端口阿里云后台安全组有没有放行
配置Http跳转
如果需要http
自动跳转到https
,可以做如下配置。
a2enmod rewrite #开启重定向模块
vim /etc/apache2/sites-available/000-default.conf
,做如下三行配置。
<VirtualHost *:80>
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]
...
</VirtualHost>
结尾
今天的内容就分享到这里,如果配置过程出现了问题 欢迎评论区留言或者私信我
,一起来解决。如果有帮助到您给个关注
吧,更多精彩即将到来。