如何申请免费的HTTPS证书

原创 九站  2023-02-14 10:51:30  阅读 281 次 评论 0 条

今天,如果你要运营一个网站,那HTTPS已经是必不可少的了. 现在,如果仍然使用HTTP,会面临一些障碍,包括但不限于:

  • 部分浏览器会将HTTP视为不安全的,给以警示甚至是阻止

  • 移动开发中(苹果)已默认禁止HTTP请求

  • HTTP网站容易被劫持并植入广告,非常影响体验

因而,给你的网站加上HTTPS是非常有必要的. 我个人的网站,都一律只支持HTTPS

但是一直以来,影响HTTPS普及的最大问题主要是HTTPS证书需要付费. 如果你知道有完全免费的HTTPS的证书,会不会更积极的使用HTTP?

今天我就简单讲下如何申请免费的HTTPS证书

1. 免费?

是的,有一些商业组织及非赢利组织允许申请免费的HTTPS证书.最著名的包括:

  • Let's Encrypt: 非赢利组织,目的就是为了普及HTTPS

  • ZeroSSL: 一个提供HTTPS证书服务的商业组织,其提供的服务中包含免费版本

并且,上述涉及到的无论是Let's Encrypt还是ZeroSSL,都支持通配符HTTPS证书申请, 比如我以 *.lpv4.cn来申请,这样一个证书适合任意二级域名,非常方便实用.

因而,如果不是对HTTPS证书级别要求非常高的需求,比如支付或其它,针对个人网站在内的大部分完全可以考虑申请这样的HTTPS免费证书

当然免费的HTTPS有一些限制, 上述免费HTTPS限制主要是每次申请的证书的有效期只有90天(可无限续期),不过这个问题容易解决,很多开源的工具都支持自动续期。

2. 如何申请

当然,上述所说的无论是 Let's Encrypt还是 ZeroSSL免费证书,你都可以访问其官网,按照它的文档步骤进行申请.

不过按照官网的做法,申请下来并不是非常方便和简单

好在,互联网上永远有优秀的人提供优秀的工具与服务, acme.sh就是这么一个工具.它是专门简化申请免费HTTPS证书的.

acme.sh的特点是:

  • 简化申请流程,在SHELL上就直接完成申请

  • 支持包括Let's Encrypt以及ZeroSSL等多个HTTPS提供商

  • 支持以DNS API以及Nginx或Standalone等不同方式来申请

  • 支持自动续期 (基于Linux的crontab机制)

因此,使用 acme.sh是最方便的申请HTTPS证书的方式之一.

3. 申请步骤

接下来详细的阐述下如何申请免费的HTTPS证书

前提

你需要有一个注册及购买一个能自己管理的域名,同时能SHELL到服务器上(因为acme.sh是以shell方式申请)

1. 安装acme.sh


 执行以下命令
 wget -O -  https://get.acme.sh | sh -s email=idc@mail.qqdns.top


email改为你自己的邮箱

2. 申请DNSPOD或Cloudfalre的API KEY

acme.sh支持非常多的申请方式,这篇文章中,我选择DNS API的方式,我个人认为它最简单

因为是使用DNS API的方式,所以我们要申请DNS服务提供的API KEY,这里我以国内最著名的DNSPOD以及国外的Cloudflare来简单说明下

DNSPOD申请API KEY*

  1. 进入DNSPOD管理控制台

  2. 个人头像 -- API密钥 --DNSPod Token

  3. 新建密钥


export DP_Id="******"export DP_Key="******"


Cloudflare申请API KEY

  1. 进入Cloudflare管理后台

  2. 进入My Profile -- API TOKENS

  3. 新建Global Key


export CF_Key="******"export CF_Email="idc@mail.qqdns.top"


其它DNS服务提供商到acme.sh文档上查阅,步骤大都非常类似

3. 切换HTTPS证书提供商

如前所述, acme.sh支持多个不同的HTTPS服务提供商,包括Let's Encrypt以及ZeroSSL, 它默认使用的是ZeroSSL

我更喜欢Let's Encrypt,它是一个非赢利组织,纯粹为普及HTTPS,而且它的证书更普遍及通用



# 用这个命令来切换HTTPS证书提供商~/.acme.sh/acme.sh --set-default-ca  --server  letsencrypt# 切换到zerossl~/.acme.sh/acme.sh --set-default-ca  --server  zerossl


4. 申请HTTPS证书

申请了DNS服务商的相关KEY并export之后,就可以直接通过acme来申请相关的HTTPS证书了



# 注意不同DNS商的 --dns 值不同,不能搞混
# 如果是Cloudflare申请~/.acme.sh/acme.sh --issue --dns dns_cf -d lpv4.cn -d *.lpv4.cn
# 如果是DNDPOD申请~/.acme.sh/acme.sh --issue --dns dns_dp -d lpv4.cn -d *.lpv4.cn


稍微解释下这个命令

  • --dns dns_dp: 以dns的方式,并且指定使用DnsPod来进行申请

  • -lpv4.cn: 指定申请的域名,同一个证书可以指定多个, *.lpv4.cn是通配符方式,指定此网站下的所有二级域名

一切顺利的情况下,最后会输出生成的证书的相关信息





[Mon 30 Jan 2023 01:09:22 PM HKT] Your cert is in: /home/lingen/.acme.sh/lpv4.cn_ecc/lpv4.cn.cer
[Mon 30 Jan 2023 01:09:22 PM HKT] Your cert key is in: /home/lingen/.acme.sh/lpv4.cn_ecc/lpv4.cn.key
[Mon 30 Jan 2023 01:09:22 PM HKT] The intermediate CA cert is in: /home/lingen/.acme.sh/lpv4.cn_ecc/ca.cer
[Mon 30 Jan 2023 01:09:22 PM HKT] And the full chain certs is there: /home/lingen/.acme.sh/lpv4.cn_ecc/fullchain.cer


4. 配置HTTPS证书

以最流行的Nginx为例,配置使用HTTPS




server{    
 # SSL configuration   
   listen 443 ssl http2;   
     listen [::]:443 ssl http2;    
      ssl_certificate /home/lpv4/.acme.sh/taoofcoding.tech_ecc/fullchain.cer;    
       ssl_certificate_key /home/lpv4/.acme.sh/lpv4.cn_ecc/lpv4.cn.key;   
         root /usr/share/nginx/lpv4.cn;  
        index index.html index.htm index.nginx-debian.html;   
        server_name www.lpv4.cn lpv4.cn;}


如果你希望你的网站只支持HTTPS,不允许使用HTTP访问,那也比较简单,在nginx中加入以下配置




server {   
 listen 80 ;   
  server_name www.lpv4.cn lpv4.cn;   
   return 301 https://$host$request_uri;
   }


这样当访问HTTP时,会自动跳转到HTTPS

5 续期

需要注意的是,申请到的HTTPS证书只有90天有效期。需要在有效期到期前续期。

如果是用我在这篇文章中的 acme.sh申请的,它会基于Linux的crontab自动续期,无需你担心。

你也可以使用以下命令提前renew的你的证书


~/.acme.sh/acme.sh --issue --dns dns_dp -d lpv4.cn -d *.lpv4.cn --force


就是在申请的命令之上,添加 --force参数就可以了。

如果你想要查询本机上申请了哪些证书,到期时间及下次自动续期时间等。使用 ~/.acme.sh/acme.sh list就可以了。

需要说明的是,除了DNS API申请HTTPS以外, acme.sh还支持 Nginxmode, Standalonemode, Webrootmode等不同方式,适合不同的情况 (比如你没有DNSPOD的管理权限,无法获取KEY等)

总而言之,在今天的互联网,给你的网站加上HTTPS,已经是非常简单并且成本极低的事情了.

你应该毫不犹豫的给你的网站加上HTTPS,还在等什么呢,立刻行动起来!


本文地址:http://v6.lpv4.cn/?id=24
版权声明:本文为原创文章,版权归 九站 所有,欢迎分享本文,转载请保留出处!
未知IP

发表评论


表情

还没有留言,还不快点抢沙发?