当前位置:首页 > 技术文章 > 正文内容

如何申请免费的HTTPS证书(网站免费证书申请)

arlanguage3个月前 (02-01)技术文章23

今天,如果你要运营一个网站,那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证书申请, 比我以*.taoofcoding.tech来申请,这样一个证书适合任意二级域名,非常方便实用.

因而,如果不是对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方式申请)

安装acme.sh

# 执行以下命令
wget -O -  https://get.acme.sh | sh -s email=lingen.liu@gmail.com

email改为你自己的邮箱

申请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="abcdefg"
export CF_Email="lingen.liu@gmail.com"

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

切换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

申请HTTPS证书

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

# 注意不同DNS商的 --dns 值不同,不能搞混

# 如果是Cloudflare申请
~/.acme.sh/acme.sh --issue --dns dns_cf -d taoofcoding.tech -d *.taoofcoding.tech

# 如果是DNDPOD申请
~/.acme.sh/acme.sh --issue --dns dns_dp -d taoofcoding.tech -d *.taoofcoding.tech

稍微解释下这个命令

  • --dns dns_dp: 以dns的方式,并且指定使用DnsPod来进行申请
  • -d taoofcoding.tech: 指定申请的域名,同一个证书可以指定多个,*.taoofcoding.tech是通配符方式,指定此网站下的所有二级域名

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

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

4. 配置使用HTTPS证书

配置使用HTTPS

server
{
     # SSL configuration
     listen 443 ssl http2;
     listen [::]:443 ssl http2;
     ssl_certificate /home/lingen/.acme.sh/taoofcoding.tech_ecc/fullchain.cer;
     ssl_certificate_key /home/lingen/.acme.sh/taoofcoding.tech_ecc/taoofcoding.tech.key;
     root /usr/share/nginx/taoofcode_tech;
     
     index index.html index.htm index.nginx-debian.html;

     server_name www.taoofcoding.tech taoofcoding.tech;
}

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

server {
    listen 80 ;
    server_name www.taoofcoding.tech taoofcoding.tech;
    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 taoofcoding.tech -d *.taoofcoding.tech --force

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

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

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

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

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

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/2042.html

分享给朋友:

“如何申请免费的HTTPS证书(网站免费证书申请)” 的相关文章

安装Code-server并配置用于多用户的反向代理(Nginx)

1.安装code-servercode-server的项目网址在cdr/code-server.在code-server的README中, 提供了两份部署指南, 一份是用于部署在AWS等云服务的deploy, 另一份则是我们要用的用于部署在本地的quickstart.Guide非常简洁明了, 就三步...

网站nginx配置限制单个IP访问频率,预防DDOS恶意攻击

一、简介对于网站来说,尤其是流量较大出名的网站,经常遇到攻击,如DDOS攻击等,虽然有些第三方,如Cloudflare可以挡,但对于动态网站PHP来说,只能挡一部分。这时候需要对于单个IP恶意攻击做出限流。nginx的两个模块可以限流。nginx两个限流模块:连接频率限制,ngx_http_lim...

如何让Nginx更安全? nginx怎么保证高可用

网络安全的重要性不言而喻。那么小伙伴们有没有在日常使用 Nginx 的时候,特意去关注下它的安全配置呢?今天松哥和小伙伴们讨论一下如何安全的使用 Nginx,给大伙几个建议。一 使用最新版建议使用最新版的 Nginx,对于已经部署的 Nginx,要及时更新到最新版本,以确保所有已知的安全漏洞都已修补...

轻量级日志平台 Loki 2.3 发布:15 倍最近数据查询速度提升

一、前言Loki v2.3.0 中添加了出色的新功能,进行了 bug 修复。除此之外,性能也得到了提升。二、自定义保留规则Loki 中的保留对于集群来说一直是全局的,并推迟到底层对象存储。Loki 现在可以通过 Compactor 组件处理保留。 你可以配置每个租户和每个流的保留时间。 这些不同的保...

「网络」运维需要掌握的 17 个实用技巧

1、查找当前目录下所有以.tar结尾的文件然后移动到指定目录find . -name “*.tar” -execmv {}./backup/ ;注解:find –name 主要用于查找某个文件名字,-exec 、xargs可以用来承接前面的结果,然后将要执行的动作,一般跟find在一起用的很多,fi...

为什么服务器管理用户都使用宝塔面板?

宝塔面板宝塔面板到底是个什么鬼?为什么这么多站长使用宝塔面板?宝塔Linux面板是提升运维效率的服务器管理软件,支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等100多项服务器管理功能。有30个人的专业团队研发及维护,经过200多个版本的迭代,功能全,少出错且足够安全,已获得...