首先是申请ssl证书,如果作为个人建站,我们可以在云服务商处申请免费的ssl证书,这里以腾讯云的ssl证书申请为例。
我们需要提前做好以下准备:
- 拥有一个属于自己的域名
- 保证自己能够正常操作域名的解析
接下来我们登录腾讯云后台,在商品服务目录中找到ssl证书,点击后在页面中找到申请免费证书,这里以TrustAsia的证书为例,我们在申请时建议选择手动验证,根据服务商要求在域名的DNS解析中添加相应的解析记录,随后等待域名服务商将解析上传到DNS服务器并且腾讯云会进行验证,验证成功后基本上十分钟就能签发ssl证书。这一步中“新添加的记录集在DNS中的同步”和“完成验证后等待ssl证书的签发”是需要一些时间的,但是不长,可以耐心等待。
在成功签发后,我们下载apache2版本的证书,下载解压后的结果基本是下面的格式:
- root_bundle.crt
- xxx.xxx.xxx.key
- xxx.xxx.xxx.crt
- xxx.xxx.xxx.csr
现在我们开始正式的ssl配置工作:
1.进入到apahce2的配置文件目录/etc/apache2
2.首先我们设置一个软链接,将sites-available中的default-ssl.conf链接到sites-enabled文件夹中
ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/000-default-ssl.conf
3.我们在/etc/apache2目录下创建一个目录/ssl,将我们的证书文件传进去
4.然后我们开始配置/etc/apache2/sites-enabled中的000-default-ssl.conf,使用vim编辑器进行配置
咱们除去注释的内容不看,修改第一个
<VirtualHost _default_:443>
ServerName xxx.xxx.xxx #这里可以输入你的ssl认证的网址
DocumentRoot /var/www/html #这里输入你的网站根目录
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on #需要设置sslengine开启
SSLCertificateFile /etc/apache2/ssl/xxx.xxx.xxx.crt
SSLCertificateKeyFile /etc/apache2/ssl/xxx.xxx.xxx.key
SSLCertificateChainFile /etc/apache2/ssl/root_bundle.crt #按照证书的实际路径链接这几个文件
</VirtualHost>
5.修改完成后我们加载apache2的ssl模块
sudo a2enmod ssl #加载ssl模块
sudo service apache2 restart #重启apache2服务
此时再去访问你的链接应该已经可以使用https访问啦
6.另外如果需要强制开启https,可以编辑/etc/apache2/sites-available中的000-defaul.conf文件,使访问你的站点是强制重定向到https,只需要在文件中<VirtualHost*:80>标签内随表找个地方添加
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]
然后启动重定向功能并重启服务即可
sudo a2enmod rewrite
sudo service apache2 restart #重启apache2服务