• 推荐!搬瓦工官方代理,自动更换被封IPJust My Socks

ad

使用Cloudflare免费https证书

Cloudflare除了提供全球CDN加速,对于免费用户,它同样提供免费的https证书,并且这个https证书的有效期长达15年,于是给小站就使用了Cloudflare的免费https证书。

 

为什么选择Cloudflare

之前一直用的Let’s Encrypt免费https证书。但是它3个月需要更新一次,虽然可以写脚本更新,但是它的规则似乎会变化,对应的启动命令也不一样。并且,我用它的ssl证书,使用长城宽带无法与我的站建立安全连接,ssl握手会耗费非常久的时间,而如果科学上网后再连接就没有问题,我不知道是不是长城宽带做了什么限制。

选择Cloudflare一是因为已经使用了它提供的CDN加速服务,另一个就是看中它证书的时长,有效期长达15年。

cloudflare-https-expires-on

 

开启Cloudflare免费https

注册以及绑定域名就不再赘述了,详细可以参考我之前的一篇文章:开启Cloudflare免费CDN加速

选择https加密模式

登录后,选择Crypto模块:

cloudflare-https-levels

可以看到Cloudflare的免费https证书提供了4个层级,Off就是关闭https,Flexible就是http与https都可以访问,Full就是如果证书出了问题,会通过http请求继续访问,不会报错,而Full(strict)在https证书出问题的时候,因为全部时https连接,会直接报错。很明显,如果要全站做https,这里选择Full(strict)模式。

获取https证书

选择Create Certificate

cloudflare-create-https-certificates

之后就可以看到安装证书的界面:

cloudflare-https-install-certificate

将第三项过期时间调成最长的15年,点击Next。之后你就可以得到一个origin certificate和一个private key

 

服务器配置https证书

这里以Nginx为例配置Cloudflare免费https证书。

修改Nginx的配置文件,监听443端口,并且指向自己的证书地址:

    listen 80 default_server;
    listen [::]:80 default_server;
    listen 443 http2 ssl;
    ssl_certificate /etc/flyzy2005.com.pem; # 对应origin certificate
    ssl_certificate_key /etc/flyzy2005.com.key; # 对应private key

之后重启Nginx,就可以看到全站都以及使用上了Cloudflare提供的https加密服务了~

点赞
  1. gutt说道:

    我服务器上有自己的证书,也勾选了Full选项,然后现在提示我的网站使用了不受支持的协议。ERR_SSL_VERSION_OR_CIPHER_MISMATCH,这是咋回事 :cry:

    1. flyzy小站说道:

      我有的网站也是用的自己的证书,选择最后一个没出现过你这个问题啊

  2. ChrAlpha说道:

    请问如果过期后还可以继续申请这个证书吗?

    1. ChrAlpha说道:

      或者再申请的话是否收费呢?

      1. flyzy小站说道:

        不收费,一直免费的

    2. flyzy小站说道:

      可以申请。

  3. warm说道:

    博主晚上好!请问我添加了这个证书后 访问网站https报红 是什么原因造成的呢?应该怎样解决

    1. flyzy小站说道:

      Cloudflare的https证书好像是要Cloudflare的CDN的?我记不太清了。可以用letsencrpy升级为HTTPS

      1. warm说道:

        非常感谢,确实是需要他家的cdn

  4. candy说道:

    请问证书上传到服务器后,前台是显示的15年证书吗?为什么我的上传了之后还是显示,cloudflare原有的1年通用证书呢?

    1. flyzy小站说道:

      什么叫前台显示?

      1. candy说道:

        就是打开网站之后,查看证书,显示的有效期是1年还是15年呢?

        1. flyzy小站说道:

          应该跟我的网站是一样的,不是15年。但是它会自动更新,你不需要管理。我的这个证书是从1月17号生效的,我没更新过。

          1. candy说道:

            好的,谢谢博主

  5. 实在哥网赚说道:

    请问博主一个问题,宝塔面板搭建的网站 开启cloudflareCDN加速 ,流量选择·经过Cloudflare的服务器,宝塔面板上的搭建的网站使用 Let’s Encrypt免费https证书就无法访问,如果不使用宝塔上提供的免费 SSL,使用 cloudflare的 SSL,网站访问就变的很慢 ,请问有什么解决的方法吗 谢谢~

    1. flyzy小站说道:

      宝塔我不太了解。你可以尝试在cloudflare把crypto里将sll设置成off

  6. stefan说道:

    您好,这个生效需要多久呀,我的改过之后变成502了。。

    1. flyzy小站说道:

      502检查服务器的错误,https证书没有生效时间之说,时即时生效的

  7. xy916说道:

    配置nginx那步,能加个修改后的图片吗?我修改后出错,想对比下

    1. flyzy小站说道:

      已经在QQ群回复你了

      1. wang说道:

        博主能给我个图片吗,我也需要

        1. flyzy小站说道:

          你要什么图?就是在 Nginx 里加证书就好了

  8. Beyond0518说道:

    1
    2
    3
    4
    5
    listen 80 default_server;
    listen [::]:80 default_server;
    listen 443 http2 ssl;
    ssl_certificate /etc/flyzy2005.com.pem; # 对应origin certificate
    ssl_certificate_key /etc/flyzy2005.com.key; # 对应private key

    这里是在default中新增还是修改?server那部分吗?

    1. flyzy小站说道:

      就是对监听443的server节点指定ssl证书

      1. beyond说道:

        搞定了。多谢。评论后邮箱回复这个功能怎么搞的?写一篇呗。还有域名邮箱系统呢?

        1. flyzy小站说道:

          评论邮箱回复是主题里自带的,具体代码参考Kratos,搜索smtp关键字就能看到相关代码了。
          域名邮箱以后有机会可以考虑一波。

  9. Beyond0518说道:

    Failed to validate requested hostname *.ourfirstdog.com: This zone is either not part of your account, or you do not have access to it. Please contact support if using a multi-user organization. (Code: 1010)

    这是什么意思?有点不明白了。

    1. flyzy小站说道:

      你把DNS服务转到Cloudflare了吗?似乎是说无法验证你有这个域名的所有权

      1. Beyond0518说道:

        找到原因了,NameSilo那边的server name除了Cloudflare还多了一个NameSilo的。只保留Cloudflare的就ok了。DNS解析那里的配置能给我截个图吗?我不知道泛解析那个怎么配。

  10. alaivv说道:

    难怪是免费,而且15年,原来只是个外表,证书信息里面是颁发给sni209030.cloudflaressl.com而非本站点。

    1. flyzy小站说道:

      这有啥关系。你如果非要是颁给自己的,可以用Let's Encrypt,三个月更新一次

  11. guochens说道:

    "修改Nginx的配置文件"这个的配置文件在哪找啊。。。小白表示很无力。。

    1. flyzy小站说道:

      vim /etc/nginx/sites-available/default,可以参考:在Ubuntu上配置Nginx+MySQL+PHP7

      1. guochens说道:

        赞,好使了。。。
        期间执行
        nginx -t
        又出了
        SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting: TRUSTED CERTIFICATE
        的问题,不知道啥情况,瞎改了一下,把**.pem最后加了一个回车就好了 :mrgreen:
        然后一路绿灯。。。

        1. nhao212说道:

          同样问题我加回车没有用呀