本文原创,未经允许,严禁装载

刚做本站的时候,我也不知道为什么要开启https协议,只是发现有很多网站都是https。当用Chrome浏览器打开本社区网站的时候,发现现实”不安全”,这对于有强迫症的我来说,是不能忍的,于是申请了免费的证书,花了一个多小时才搞定。开启https协议本身不难,但是内容很繁琐。

https具有加密传输通道,有效保障隐私数据密文传输,截取也无法解密。HTTP明文传输,没有SSL加密通道,任何人都可以轻松截取或篡改机密数据。

好了废话不多说,首先,需要申请证书,我用的是亚洲诚信(https://www.trustasia.com/)的免费证书,至于证书申请流程可以看看这里:https://www.trustasia.com/doc/how-to-get-digital-certificates,如果你已经拥有了证书,请跳过这一步。

有与本站用的是apache2,apache2服务器需要用到for Apache.zip的文件以及自主生成的私钥.key文件(申请证书过程中创建CSR时生成),具体文件见下图:

f65beb05a4287da8f4c4517a04e7f1af.png

将SSL证书上传至apache2的目录下,记录一下证书的绝对地址,方便等下使用。

上传好之后,我们需要为apache服务器添加ssl模块支持,命令如下:

sudo a2enmod ssl

然后进入apache2的配置文件目录/etc/apache2/sites-available,找到对应的配置

文件,默认为default-ssl.conf(根据实际环境),找到VirtualHost *:443的配置,并参考如下配置(修改或增加):

<VirtualHost *:443>

DocumentRoot 网站根目录

SSLEngine on

SSLCertificateFile /etc/ssl/certs/frostless.net.crt

SSLCertificateKeyFile /etc/ssl/private/frostless.net.key

SSLCertificateChainFile /etc/ssl/certs/root_bundle.crt

SSLProtocol  all -SSLv2 -SSLv3

SSLCipherSuite ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!aNULL:!eNULL

SSLHonorCipherOrder on

</VirtualHost>

添加上述配置,保存后,给配置文件建立一个软连接,命令如下:

sudo a2ensite default-ssl

进入apache2的配置文件目录,找到ports.conf,添加Listen 443,如果默认已添加,忽略此步骤。

检测SSL配置

上述的配置完成后,可先用命令检测配置是否正确,若不正确,请不要重启apache2!检测命令如下:

/usr/sbin/apache2ctl -t

输入命令后,若提示Syntax OK,则表示配置正常(如果提示错误,请根据具体错误修改,直到提示Syntax OK),可以重启apache2,命令如下:

sudo service apache2 restart

打开浏览器,输入https://你的域名,如浏览器地址栏显示加密小锁,则表示证书配置成功。若显示无法连接,请确保防火墙或安全组等策略有放行443端口(SSL配置端口)。

http重定向到https(可选)

若可以成功访问https,那么我们再执行最后一步,强制用户即使输入http,也跳转到https上来,操作很简单,添加下列三行代码即可。修改默认网站配置 /etc/apache2/site-avaliable/000-default.conf

<VirtualHost *:80>
...
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
...
</VirtualHost>

保存后执行以下命令,

sudo a2enmod rewrite

然后再次重启一下apache服务器:

sudo service apache2 restart

好了,大功告成,大家加油!

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐