退出

  • 文章收藏

  • 消息

  • 修改资料

  • 关于网站部署HTTPS的内容网上有很多,但是我的情况比较复杂:我的网站部署在阿里云ECS上,网站上的静态资源通过阿里云CDN分发,上传的图片附件会自动转存到oss并且分发出来,另外还有一个CDN用于获取gravatar头像并转发出去。这样我一共有4个不同的地址:一个网页地址和3个资源地址,涉及到ECS,CDN,OSS三个方面。基本的架构如图所示:

    由于阿里云自带的免费证书只支持一个域名,我们选择方便易用的Let's Encrypt来申请证书。

    Let's Encrypt的说明中,介绍了自动部署Let's Encrypt证书的方式。其他安装方式可以在Getting Certificates中找到。由于我们所使用的域名并不全在服务器上,所以我们只能选择最后一项:manual的方式,来手动安装。

    manual安装的方式简单来说就是引导你在指定位置下放置指定内容的文件,来证明你对路径的所有权。

    首先我们用SSH工具连接到阿里云的ECS。如果你是mac用户,只需要打开终端,输入:

    $ ssh username@address

    就可以了。其中username是你登录ECS的用户名,阿里云默认会给你一个root用户名。address是你能够访问ECS的ip地址或域名。然后会提示你输入密码。

    安装Certbot

    登陆后,首先在ECS服务器上安装Certbot工具:

    $ wget https://dl.eff.org/certbot-auto
      chmod a+x certbot-auto

    默认会安装在当前路径下,如果当前路径不在lilux的Path路径中,是无法运行的,你需要把它移动到Path路径之一的文件夹里,例如:/etc/init.d中。输入$PATH即可查看当前所有的路径。

    我们选择manual的方式进行安装:

    $ sudo ./path/to/certbot-auto certonly --manual

    接下来程序会提示你如何操作,根据要求一步步来就可以了。邮件地址可以输入也可以选择跳过。

    需要注意的是,验证权限的时候,ECS、OSS、CDN能通过http的方式访问。对于ECS,需要开放80端口。对于OSS和CDN,需要把HTTPS设置关掉。

    ECS服务器的验证:

    根据Certbot工具的提示,用FTP的方式,在指定的路径建立指定文件,并把指定内容复制进去就可以了。注意要用纯文本类型的编辑器,如notepad++,windows自带的记事本是不行的。

    OSS服务器的验证:

    一般我们验证的是OSS绑定的CDN地址,当然如果你用OSS自己的域名也可以。类似的,我们在本地制作好文件,上传到OSS中对应路径下即可。

    需要注意的是,如果你的OSS设置了防盗链(refer),一定要把“允许从浏览器直接访问资源”的选项开启。如果你是通过CDN转发的,那么CDN也要做同样的设置。

    CDN服务器的验证:

    对于静态转发的CDN,其回源还是在ECS服务器上,操作也是一样的,注意防盗链(refer)的设置。

    对于转发avatar头像的CDN,由于你不具有avatar服务器的权限,是无法直接验证的。但是我们验证的是你对域名的所有权。所以我们可以先把CDN绑定回ECS服务器上进行验证,验证完成后,再绑回avatar服务器即可。

    接下来会生成4个证书相关的文件,包含了对上述4个域名的验证。文件的地址会在终端里面给出。

    我们需要的是其中fullchain.pem和privkey.pem两个文件。我们同时也要把这两个证书下载到本地,以便稍后上传到CDN和OSS。

    ECS部署:

    这个跟你使用的环境有关。我使用的是Apache,简单的说就是修改配置文件。一方面是引入上述两个https证书,另一方面是设置VirtualHost中443端口访问以及80端口的重定向。
    对于这方面的内容,网上已有诸多教程,大家参考对应的教程即可,这里不再赘述。注意,可能你看的教程中证书的名字以及后缀名都有所不同,Certbot生成的文件是可以直接放进去使用的。

    OSS和CDN部署:

    开启HTTPS设置,在内容和私钥里分别上传fullchain.pem和privkey.pem两个证书。上传一次后,在其他地方使用时可以直接选择已上传证书,不用再次上传。

    修改回源地址,把80端口改为443端口。修改防盗链设置中的域名,改为https。

    WordPress的一些后续操作:

    一是在设置中将站点地址修改为https。二是在数据库中将域名下所有http链接替换为https链接,除了你的主域名要替换,oss和cdn域名也要替换,否则一些通过CDN转发的资源将无法访问。

    同时如果你引用了一些外部http资源,例如baidu的分享代码,你需要将其转换为https资源才能访问。参考:百度分享不支持https的解决方案

    支付宝 微信 BTC
    支付宝扫一扫,向我打赏
    来源:原创

    声明:本站原创文章采用 BY-NC-SA 创作共用协议,转载时请以链接形式标明本文地址;非原创(转载)文章版权归原作者所有。 ©查看版权声明

  • 白銀の魔法師
  • 所有的信徒都别无二致,所有的信仰都一文不值
  • 发表评论

    你目前的身份是游客,请输入昵称和邮箱! 输入资料 关闭