Ubuntu基于Apache为自己的网站开启HTTPS

现今蛮多网站都开启了https,就我个人感觉,对于浏览器地址栏显示了安全两个字的网站看起来就舒服很多,所以最近折腾了一下也给自己的博客全站开启了https。

我之前也有去搜索过ubuntu开启https的文章,上面基本上都是用openssl来生成证书然后自签名,不想搞这么麻烦,刚好现在百度,阿里等都提供了免费证书,索性直接拿来用了,简单的介绍一下阿里云免费证书的申请步骤:

1、登录阿里云进入控制台在域名和网站下会列出当前账户购买的所有域名,对于已经备案的域名后面会显示SSL证书

2、进入SSL证书,选择单域名免费证书,输入要申请证书的域名然后确定,等待审核通过,一般都会通过。

3、审核通过后进入CA证书服务栏目,找到刚申请证书的域名可以看到状态是已签发

然后点击下载

切换到Apache,下载证书包,下面已经列出了具体的配置方法。证书包包含三个文件:证书私钥文件1524474440078.key、证书公钥文件public.pem、证书链文件chain.pem,然后将这三个文件都上传到服务器比如/etc/apache2/ssl/目录下。

接下来就是服务器端的配置了

1、运行命令a2enmod  ssl 开启SSL模块

2、加入监听端口, 编辑Apache端口配置(sudo vim /etc/apache2/ports.conf),加入443端口(HTTPS采用的443端口传输数据)

...
Listen 443
...

3、在/etc/apache2/sites-available下编辑ssl站点配置文件(sudo vim default-ssl.conf),加入配置:

...
SSLEngine on
SSLCertificateFile    /etc/apache2/ssl/public.pem
SSLCertificateKeyFile /etc/apache2/ssl/1524474440078.key
SSLCertificateChainFile /etc/apache2/ssl/chain.pem
...

4、运行命令a2ensite default-ssl.conf启用ssl站点

5、重启Apache(service apache2 restart),这个时候站点就可以通过https访问了,但是默认访问的还是http的,如需全站https,则在http的站点配置文件中加入配置代码:

...
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]
...

这样访问http的地址也会自动跳转到https了,接着访问一下网站发现浏览器已经为我们的站点打上了安全的标签

但是有时候我们会发现浏览器并没有显示安全的标签,而是像下图这样显示了感叹号

点击查看详情,浏览器提示与网站之间建立的链接并非完全安全,可能部分资源会被中途篡改,造成这个问题的原因是在https页面上请求了非https的资源,比如图片,js/css文件等,这个时候我们只需要对症解决就好了。

打开浏览器开发者工具,点击Security标签可以知道这个证书是受信的,但是页面中存在混合内容

在开启开发者工具的情况下,重新刷新页面就可以看到那些资源是有问题的,解决完这些问题再次打开页面就会发现熟系的安全标签已经亮起来了。

  • 支付宝二维码 支付宝
  • 微信二维码 微信
相关文章