Skip to content
Go back

使用 acme.sh 安装 Let's Encrypt 证书

Lets-Encrypt-1024x410.png

在开始安装之前,我们需要先思考下为什么要安装 TLS 证书?它解决了什么问题。

HTTP 三大风险

HTTPS 解决方案

既然有这么多风险,为什么早期大多数网站都还是使用 HTTP 协议呢?除去安全意识不够外,我认为证书成本也是不可忽略的因数。 像 mangobeta 这样的小博客,自然无力去购买 HTTPS 证书,而 Let’s Encrypt 将免费证书推广开来,让小网站也可以享受到通信的安全。

为什么使用 acme.sh?

acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书,简单方便。

这里以 DNS 为 DNSPOD,Nginx 作为 Server 为例:

acme.sh 使用示例

设置 DNSPOD key

到 DNSPOD 控制台去生成

export DP_Id="12345"
export DP_Key="abcdedf"

申请证书

申请泛域名证书,域名前面加 *即可。

acme.sh --issue --dns dns_dp -d mangobeta.com -d *.mangobeta.com

安装证书

由于 Let’s Encrypt 证书3个月就会过期,acme.sh 会创建一个定时任务,自动会为证书续期。

acme.sh --install-cert -d mangobeta.com \
--key-file /data/certs/mangobeta.com/mangobeta.com.key \
--fullchain-file /data/certs/mangobeta.com/fullchain.cer \
--reloadcmd "service nginx force-reload"

nginx 配置

server {
    listen 80;
    server_name  mangobeta.com www.mangobeta.com;
    return 301 https://mangobeta.com$request_uri;
}

server {
    listen 443 http2 ssl;
    server_name mangobeta.com;
    charset utf-8;
    ssl_certificate     /data/certs/mangobeta.com/fullchain.cer;
    ssl_certificate_key /data/certs/mangobeta.com/mangobeta.com.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;

    root /var/www/html/mangobeta;

    location / {
        index   index.html index.php;
    }

}

参考文档


Share this post on:

Previous Post
Glowroot 介绍和使用
Next Post
Mybatis 自定义类型处理器