申请并部署免费的 SSL/TLS 证书

简介: 本文介绍了如何免费获取和部署 SSL/TLS 证书,主要针对囊中羞涩的用户。方法包括:云服务平台的限量提供、使用 Cloudflare 等网络服务商以及直接向免费证书颁发机构(如 Let’s Encrypt 和 ZeroSSL)申请。文章重点讲述了通过自动化脚本 acme.sh 与 Let’s Encrypt 配合申请和部署证书的步骤,包括设置默认 CA、安装 acme.sh、使用 http 模式验证和部署到 nginx 服务器。此外,还提到了配置 nginx.conf 文件以启用 SSL。

对于囊中羞涩的我们来说,只要能白嫖,就绝不乱花钱。惯常申请免费 SSL/TLS 证书的途径有:

  • 各大云服务平台限量提供。比如阿里云会给每个账号每年 20 个证书的申请额度。缺点是不支持泛域名,且一年(目前已缩短至三个月)后须重新申请并部署;
  • 一些网络服务商如Cloudflare会提供自动化的证书服务,只要在它们的官网作简单配置即可。缺点是流量都要经其中转,在某些未很好覆盖的区域网站性能会受限;
  • 直接从免费证书颁发机构(CA)那里申请。通过脚本可使得获取、安装和续期 SSL/TLS 证书完全自动化。缺点是有一定的操作门槛。

本文介绍最后这种方式。

免费 CA 选择#

免费 CA,常考虑的有 Let’s EncryptZeroSSL。两者差异可自行网搜,基本上都能满足我们普通用户的需求,选择哪一个更依赖于申请过程是否顺利。

以 Let’s Encrypt 作一简单介绍。它是由 Internet Security Research Group (ISRG) 发起的公共利益项目,于2016年推出,由 Mozilla, Cisco, Akamai, Linux Foundation, Google, Microsoft, OVH 和其它一些组织支持。这个项目的主要目标是促进 HTTPS 协议的普及。Let’s Encrypt 使用 ACME 协议来验证您对给定域名的控制权并向您颁发证书,也就是说,要获得 Let’s Encrypt 证书,需要选择一个 ACME 客户端。

这里以 acme.sh 为例。acme.sh 实现了 ACME 协议, 默认 CA 是 ZeroSSL。然而笔者在申请时一直报Order status is processing, lets sleep and retry,retry 多次后报 504,不知为何。所以笔者将默认 CA 设置为 Let’s Encrypt:acme.sh --set-default-ca --server letsencrypt

申请并部署证书#

安装 acme.sh#

不清楚 docker 模式安装会否自动续期,所以直接安装到宿主机 curl https://get.acme.sh | sh -s email=xxx@xxx。直接安装会自动创建 cronjob, 每天自动检测所有的证书, 如果快过期了, 则会自动更新证书。

如前所述,设置默认 CA:acme.sh --set-default-ca --server letsencrypt

申请#

在证书申请过程中,acme.sh 需要确认域名属于你本人,有两种验证方式:http 和 dns。

  • http mode: 支持自动更新证书;不支持通配符即泛域名。
  • dns mode:支持泛域名;但如果不同时配置 Automatic DNS API,将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。所以,如果你有多个二级域名需要绑定证书,要么就使用下述 http mode 的指令,要么就去 dns 服务商处拿到 API Access(可能会有一些要求)。 参看acme.sh 支持的 dns 服务商列表

这里我们以 http mode 为例。

先设置好 DNS 解析记录,将待申请证书的域名 A 记录到服务器 IP。然后如下脚本申请证书,acme.sh 会同时进行域名验证。

Copy

acme.sh --issue -d demo.com -d www.demo.com -d admin.demo.com --webroot /srv/www/html/

只需要指定域名,并指定对应的网站根目录,acme.sh 会自动生成验证文件,并放到网站根目录,然后自动完成验证,最后会删除验证文件。

如果你用的是直接在宿主机安装的 nginx 服务器,甚至不需要指定网站根目录。acme.sh 可以智能地依据 nginx 配置自动完成验证:

Copy

acme.sh --issue -d demo.com ... --nginx

上述脚本的前提是 acme.sh 可以调用 nginx 指令,否则会报 nginx command is not found 错误。所以如果 nginx 是以 docker 方式安装,这种方式将无法成功;还是得使用 --webroot 的方式,只要将 nginx 根目录映射出来即可,如下:

Copy

docker run --name ngix -v /srv/www/html:/usr/share/nginx/html:ro -v /srv/www/nginx.conf:/etc/nginx/nginx.conf:ro -p 80:80 -p 443:443 --network inner_net --restart=always -d --label=sh.acme.autoload.domain=anything nginx:stable-alpine

注意脚本中的 label,用于后续部署证书时 acme.sh 定位该容器。这里的 anything 可以替换为任意字符。

域名验证无误的话,acme.sh 会去 CA 那里获取证书,并下载到本地。一个主域名及其多个子域名同时申请的话,CA 只为它们签发一张证书。

部署#

还是以 nginx docker 容器为例。

Copy

# The label value to find the container
# 多个不同域名申请证书时可重复使用该容器
export DEPLOY_DOCKER_CONTAINER_LABEL=sh.acme.autoload.domain=anything

# The target file path in the container.
# The files will be copied to the position in the container.
export DEPLOY_DOCKER_CONTAINER_KEY_FILE="/etc/nginx/ssl/demo.com/key.pem"
export DEPLOY_DOCKER_CONTAINER_CERT_FILE="/etc/nginx/ssl/demo.com/cert.pem"
export DEPLOY_DOCKER_CONTAINER_CA_FILE="/etc/nginx/ssl/demo.com/ca.pem"
export DEPLOY_DOCKER_CONTAINER_FULLCHAIN_FILE="/etc/nginx/ssl/demo.com/full.pem"

# The command to reload the service in the container.
export DEPLOY_DOCKER_CONTAINER_RELOAD_CMD="nginx -s reload"

# -d 指定 acme.sh --issue 时第一个[二级]域名或其执行结果产生的目录名
acme.sh --deploy --deploy-hook docker -d demo.com

笔者尚不清楚自动更新证书时是否会将新证书自动拷贝至容器内,推测应该是会的,这些临时环境变量应该会以当前申请的域名配置项的形式固化到磁盘中。

配置 nginx.conf#

在 http 节中加入如下配置

Copy

server {
     listen 443 ssl;
     # 二级域名配置相同,本文略过
     server_name demo.com;
     root /usr/share/nginx/html;
     # 上一步证书拷贝的地址
     ssl_certificate /etc/nginx/ssl/demo.com/cert.pem;
     ssl_certificate_key /etc/nginx/ssl/demo.com/key.pem;
 
     ssl_session_cache shared:SSL:1m;
     ssl_session_timeout 5m;
 
     #默认加密套件
     ssl_ciphers HIGH:!aNULL:!MD5;
     #表示优先使用服务端加密套件。默认开启
     ssl_prefer_server_ciphers on; 
 
    location / {
           index index.html index.htm;
    }
}
相关文章
|
2月前
|
算法 安全 应用服务中间件
云上部署WoSign SSL“国密RSA双证书”,助力国密合规建设
我国网络安全法规体系不断完善,形成了以《网络安全法》为核心的立体化法律框架。阿里云数字证书管理服务提供国产品牌SSL证书,支持签发基于国密算法的SSL/TLS证书,助力金融、政务等行业满足“网络与通信安全”合规需求。通过部署WoSign SSL国密RSA双证书方案,实现国际和国密算法自适应兼容,确保信息系统全球通用性与安全性。2025年3月阿里云“智惠采购季”活动期间,用户可享受SSL证书优惠折扣,助力信息安全建设。
140 2
云上部署WoSign SSL“国密RSA双证书”,助力国密合规建设
|
2月前
|
算法 应用服务中间件 网络安全
阿里云WoSign“国密RSA双SSL证书”应用实践
阿里云WoSign品牌SSL证书是阿里云平台热销的国产品牌证书之一,支持签发国密合规的SM2算法SSL证书以及全球信任的RSA算法SSL证书,能够满足平台用户不同的SSL证书应用需求,同时为用户提供国密模块支持,实现“国密/RSA双证书部署”。
446 6
阿里云WoSign“国密RSA双SSL证书”应用实践
|
2月前
|
算法 安全 应用服务中间件
2025阿里云智惠采购季,WoSign SSL国产证书折上折满减优惠
**2025阿里云“智慧采购季,就上阿里云”活动火热进行中!** 3月1日至31日,阿里云WoSign品牌SSL证书新老用户同享折上折满减优惠。DV SSL证书低至220元/年起,轻松实现HTTPS加密,保障数据传输安全。领取“智惠采购季上云礼包”,先领券再下单,享受满减优惠。WoSign品牌SSL证书国密RSA双算法支持,确保广泛兼容与可靠部署。
739 2
2025阿里云智惠采购季,WoSign SSL国产证书折上折满减优惠
|
2月前
|
运维 安全 网络安全
【运维实战分享】轻松搞定 SSL 证书管理,告别证书繁琐操作
Spug证书平台的最大亮点之一就是其极为简化的证书申请流程,无论是新手还是经验丰富的运维专家,都可以在几分钟内轻松完成证书的申请,通过微信扫码直接登录申请,无需复杂注册,整个过程既方便又快捷。
111 17
|
2月前
|
运维 安全 数据建模
阿里云数字证书管理服务免费版和收费版SSL证书区别、收费标准、申请及部署教程参考
阿里云数字证书管理服务提供多种SSL证书类型和品牌,适用于不同规模的网站,包括但不限于电商、小型企业、大型企业或个人等。阿里云SSL证书有收费版的也有免费版的,有的新手用户由于是初次在阿里云申请SSL证书,可能不是很清楚免费版证书的申请和部署流程,本文为以图文形式为大家展示阿里云免费版SSL证书最新的申请及部署教程,以供参考。
|
2月前
|
算法 数据建模 应用服务中间件
阿里云2025智惠采购季,WoSign SSL证书优惠叠加使用攻略
阿里云2025智惠采购季,WoSign SSL证书折上折满减优惠!活动月期间(2025年03月01日至03月31日)活动折扣叠加满减优惠券,具体如何操作才能获取组合优惠价格呢?快来get优惠券组合使用攻略吧!
480 4
|
2月前
|
安全 算法 网络安全
SSL/TLS:构建数字世界的加密长城
**协议演进:从网景实验室到全球标准** 1994年,网景公司推出SSL协议,首次实现40位密钥加密传输,开启网络安全新纪元。此后,SSL 3.0、TLS 1.0相继问世,至2018年TLS 1.3将握手速度提升60%,强制前向加密确保历史会话安全。TLS协议通过非对称加密、对称加密和证书信任链等多层架构保障通信安全。2014年POODLE漏洞促使全行业禁用SSL 3.0,催生防降级机制。
|
3月前
|
安全 算法 物联网
SSL/TLS:互联网通信的加密基石与安全实践
**简介:** 在数字化时代,互联网每天传输海量敏感数据,网络攻击频发。SSL/TLS协议作为网络安全的基石,通过加密技术确保数据安全传输。本文解析SSL/TLS的技术架构、密码学原理、应用场景及常见误区,探讨其在未来的发展趋势,强调持续演进以应对新型威胁的重要性。 SSL/TLS不仅保障Web安全,还广泛应用于API、邮件、物联网等领域,并遵循合规标准如PCI DSS和GDPR。
|
2月前
|
数据建模 网络安全
阿里云申请SSL证书价格多少钱一年?2025免费版和付费版收费标准
阿里云SSL证书提供免费和付费版本,适合不同需求。付费证书品牌涵盖WoSign、DigiCert、GlobalSign等,类型包括DV(域名验证)、OV(企业验证)和EV(扩展验证),价格从238元/年起,通配符和多域名证书价格更高。新用户享5折起优惠,全系列75折起。免费版由Digicert提供,仅支持单域名,有效期3个月,特殊域名可能无法申请。建议正式环境选用付费证书以确保稳定性与安全性。详情及申请流程可参考阿里云官方文档或控制台操作指引。
1170 0
|
3月前
|
安全 算法 网络协议
解析:HTTPS通过SSL/TLS证书加密的原理与逻辑
HTTPS通过SSL/TLS证书加密,结合对称与非对称加密及数字证书验证实现安全通信。首先,服务器发送含公钥的数字证书,客户端验证其合法性后生成随机数并用公钥加密发送给服务器,双方据此生成相同的对称密钥。后续通信使用对称加密确保高效性和安全性。同时,数字证书验证服务器身份,防止中间人攻击;哈希算法和数字签名确保数据完整性,防止篡改。整个流程保障了身份认证、数据加密和完整性保护。

热门文章

最新文章

相关实验场景

更多