首先是申请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服务