建站教程(5):网站升级为HTTPS

HTTPS,是一种通过计算机网络进行安全通信的传输协议。经由HTTP进行通信,但是利用SSL/TLS来加密数据包。网站升级HTTPS,在网站前面会有一把小锁,并且Google官方也承认过HTTPS是影响搜索排名的一个因素,那么如何将站点升级为HTTPS呢?本文的内容就介绍如何将部署在Nginx的WordPress全站升级为HTTPS。 :smile:

 

选择SSL证书

升级HTTPS,第一步就是获取一个SSL证书,我用的是Let’s Encrypt,免费,开放,支持自动更新。

 

在服务器配置SSL证书(Ubuntu 16.04 Nginx为例

1.安装Nginx版本的Cerbot,Certbot有PPA,直接安装就好:

2.安装Nginx版本的证书:

这一步需要你输入邮箱以及域名信息,邮箱用来接收证书即将过期的信息(3个月要更新一次)以及安全信息。域名则是你这个证书所应用的网址,如果提示Cannot find a VirtualHost matching domain,可能是你的Nginx里的server_name配置有误,看看是否正确指向了自己的域名。之后会让你选择Redirect还是No redirect,前者是将所有HTTP请求都重定向到HTTPS去。

用这个命令安装是让Certbot自动帮你修改Nginx配置文件实现HTTP变为HTTPS(方便,推荐使用),当然你也可以手动配置,通过命令sudo certbot –nginx certonly,这样你就可以自己来设置信息,官方文档参考:https://certbot.eff.org/docs

 

设置证书自动更新

Certbot的证书有效期是90天,过了90天就得手动更新一次~但是它有自动更新机制,可以通过以下命令测试一下是否正常:

如果运行正确的话,那么你就可以设置shell+crontab来实现定时任务,以后也不用烦90天更新一次的事了~ :evil:  :evil:

1.在/root下新建一个update.sh:

2.新建一个crontab任务(crontab -e),设置每天执行一次update.sh:

3.重启crontab任务:

 

修改非HTTPS资源

全部更新完后,如果前面已经变成了https,但是没有高亮成绿色(以Chrom为例),那么可能是你的页面还有非HTTPS资源。在Chrom中进入开发者工具(F12),选择Security,根据提示修改掉非HTTPS资源即可~:

fix-unhttps

 

更多图解适合新手教程请戳:手把手教你搭建自己的个人网站~ :cowboy:

Telegram频道已经开通,关注flyzythink,随手分享正能量,了解VPS优惠与补货
Telegram群组已经开通,加入flyzy小站,FREE TO TALK
点赞
  1. 雍正说道:

    麻烦问一下,如果没有域名的话Nginx证书应该怎么安装啊?

    1. flyzy小站说道:

      没有域名不可以用https证书

  2. guochens说道:

    作者你好,我都是按照您的步骤来的,执行
    sudo certbot renew --dry-run命令后出现了以下结果:
    /usr/lib/python3/dist-packages/ndg/httpsclient/subj_alt_name.py:22: UserWarning: Error importing pyasn1, subjectAltName check for SSL peer verification will be disabled. Import error is: No module named 'pyasn1'
    warnings.warn(import_error_msg)
    /usr/lib/python3/dist-packages/ndg/httpsclient/ssl_peer_verification.py:25: UserWarning: SubjectAltName support is disabled - check pyasn1 package installation to enable
    warnings.warn(SUBJ_ALT_NAME_SUPPORT_MSG)
    /usr/lib/python3/dist-packages/ndg/httpsclient/subj_alt_name.py:22: UserWarning: Error importing pyasn1, subjectAltName check for SSL peer verification will be disabled. Import error is: No module named 'pyasn1'
    warnings.warn(import_error_msg)
    Saving debug log to /var/log/letsencrypt/letsencrypt.log

    -------------------------------------------------------------------------------
    Processing /etc/letsencrypt/renewal/guochens.com.conf
    -------------------------------------------------------------------------------
    Cert not due for renewal, but simulating renewal for dry run
    Plugins selected: Authenticator nginx, Installer nginx
    Starting new HTTPS connection (1): acme-staging-v02.api.letsencrypt.org
    Renewing an existing certificate
    Performing the following challenges:
    http-01 challenge for guochens.com
    Waiting for verification...
    Cleaning up challenges

    -------------------------------------------------------------------------------
    new certificate deployed with reload of nginx server; fullchain is
    /etc/letsencrypt/live/guochens.com/fullchain.pem
    -------------------------------------------------------------------------------

    -------------------------------------------------------------------------------
    Processing /etc/letsencrypt/renewal/www.guochens.com.conf
    -------------------------------------------------------------------------------
    Cert not due for renewal, but simulating renewal for dry run
    Plugins selected: Authenticator nginx, Installer nginx
    Starting new HTTPS connection (1): acme-staging-v02.api.letsencrypt.org
    Renewing an existing certificate
    Performing the following challenges:
    http-01 challenge for http://www.guochens.com
    Waiting for verification...
    Cleaning up challenges

    -------------------------------------------------------------------------------
    new certificate deployed with reload of nginx server; fullchain is
    /etc/letsencrypt/live/www.guochens.com/fullchain.pem
    -------------------------------------------------------------------------------

    -------------------------------------------------------------------------------
    ** DRY RUN: simulating 'certbot renew' close to cert expiry
    ** (The test certificates below have not been saved.)

    Congratulations, all renewals succeeded. The following certs have been renewed:
    /etc/letsencrypt/live/guochens.com/fullchain.pem (success)
    /etc/letsencrypt/live/www.guochens.com/fullchain.pem (success)
    ** DRY RUN: simulating 'certbot renew' close to cert expiry
    ** (The test certificates above have not been saved.)

    但是用https://www.域名.com访问是无法访问,不知道是什么问题?

    1. flyzy小站说道:

      这个没有遇到过 我现在已经改用cloudflare了。但是你如果之前的安装好了,就算不加自动更新的内容,https应该也是可以用的

      1. guochens说道:

        博主,我发现之前443端口被占用了。。现在问题解决了,并且证书也安装了,但是用https://www.guochens.com打开chrome说是证书丢失是什么意思。。。

      2. guochens说道:

        https://zhuanlan.zhihu.com/p/33518941
        网上查了好多,找到了一个靠谱的cloudflare教程,亲测有效

        1. flyzy小站说道:

          我也有cloudflare的教程啊 :symbols: 使用Cloudflare免费https证书,还是非插件版的

          1. guochens说道:

            之前没看到 :evil: 你的更吊

  3. T_T说道:

    下午注册了vultr,试了两个服务器完全ping不通啊,咋办

    1. flyzy小站说道:

      换新的location试试

  4. sawyer说道:

    升级https后提示不安全怎么解决

    1. flyzy小站说道:

      提示什么?证书不可信还是什么?

      1. sawyer说道:

        提示与网站链接不安全

      2. sawyer说道:

        用chrome之外的浏览器访问css都不能加载了 security提示This page is not secure (broken HTTPS).

        1. flyzy小站说道:

          是不是你css还是http的?

          1. sawyer说道:

            我手动改了style.css 还是不行

  5. 火火火说道:

    崩了,升级这个https,界面直接没有css一样崩了,然后删除证书后,直接不能访问了,重装软件都不行了,gg

    1. flyzy小站说道:

      不知道你是什么情况。
      用certbot可以选择修改nginx的配置文件增加redirect,你也可以手动修改nginx的配置文件。
      至于没有css,你可以看控制台报什么错,是mixed content吗?
      重装软件又是什么意思?

发表评论

电子邮件地址不会被公开。 必填项已用*标注