杜郎俊赏 - dujun.io

开源实例之免费通配符SSL证书

前言

本篇介绍部署免费通配符SSL证书,开启 HTTPS 的方法。

背景知识

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)协议是由 HTTP 加上 TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护。

通配符SSL证书

通配符SSL证书用于为一个域名及其所有一级子域名启用SSL加密。例如 example.com 的通配符SSL证书,可以用于自身和 *.example.com 形式的所有子域名。

创建和部署

安装软件

使用acme.sh免费创建、续订单域名SSL证书。以 Debian 系统为例,root 安装:

sudo su
curl https://get.acme.sh -s | sh -s

重新打开 ssh,执行acme.sh --version,正确显示版本号即表示安装成功。

建议启用自动更新:

acme.sh --upgrade --auto-upgrade

会自动生成一条 crontab:

55 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

填写邮箱

acme.sh --register-account -m mail@example.com

验证域名

创建通配符SSL证书需要通过 DNS 验证域名所有权,DNS 需要具有相关 API,在/root/.acme.sh/account.conf中填入 API ID 和 API KEY。以 Cloudflare 和 DNSPod 为例:

Cloudflare

登录 Cloudflare,进入 API 令牌,查看 Global API Key。在 account.conf 中写入SAVED_CF_IdSAVED_CF_Key字段。

DNSPod

登录 DNSPod,点击右上角账号头像,选择 API 密钥 -> DNSPod Token -> 创建密钥。在 account.conf 中写入SAVED_DP_IdSAVED_DP_Key字段。

创建证书

以创建域名 dujun.eu.org 的通配符证书为例:

acme.sh --issue --dns dns_cf -d dujun.eu.org -d *.dujun.eu.org

如果是 DNSPod,将 dns 参数改为 dns_dp 即可。生成的证书在/root/.acme.sh/dujun.eu.org_ecc/

部署证书

以 Nginx 为例,vhost 配置如下:

server {
    listen 443 ssl http2;
    server_name *.dujun.eu.org dujun.eu.org;
    ...
    ssl_certificate /root/.acme.sh/dujun.eu.org_ecc/dujun.eu.org.cer;
    ssl_certificate_key /root/.acme.sh/dujun.eu.org_ecc/dujun.eu.org.key;
    ssl_trusted_certificate /root/.acme.sh/dujun.eu.org_ecc/ca.cer;
}

后记

体验更多开源实例

标签: 开源实例
日期:2023-02-22