侧边栏壁纸
  • 累计撰写 30 篇文章
  • 累计创建 35 个标签
  • 累计收到 4 条评论

Let’s Encrypt 免费SSL证书申请

GoDan
2022-04-15 / 0 评论 / 0 点赞 / 148 阅读 / 2,718 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-04-15,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

介绍

Let’s Encrypt 是国外一个公共的免费 SSL 项目,由 Linux 基金会托管。它的来头不小,由 Mozilla、思科、Akamai、IdenTrust 和 EFF 等组织发起,目的就是向网站自动签发和管理免费证书。以便加速互联网由 HTTP 过渡到 HTTPS,目前 Facebook 等大公司开始加入赞助行列。

Let’s Encrypt 已经得了 IdenTrust 的交叉签名,这意味着其证书现在已经可以被 Mozilla、Google、Microsoft 和 Apple 等主流的浏览器所信任。用户只需要在 Web 服务器证书链中配置交叉签名,浏览器客户端会自动处理好其它的一切,Let’s Encrypt 安装简单,使用非常方便。

使用工具

acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书.
copy 证书到 nginx/apache 或者其他服务

安装步骤

1、安装 acme.sh

curl  https://get.acme.sh | sh

acme.sh 安装到你的 home 目录下:

~/.acme.sh/

并创建 一个 bash 的 alias, 方便你的使用: alias acme.sh=~/.acme.sh/acme.sh

2、增加域名厂商的API KEY

需要通过云厂商管理后台生成

vim ~/.bash_profile

各厂商变量
阿里云

export Ali_Key="**********"
export Ali_Secret="**********"

Godaddy

export GD_Key="**********"
export GD_Secret="**********"

AWS

export AWS_ACCESS_KEY_ID="**********"
export AWS_SECRET_ACCESS_KEY="**********"

Azure

export AZUREDNS_SUBSCRIPTIONID="**********"
export AZUREDNS_TENANTID="**********"
export AZUREDNS_APPID="********"
export AZURENDS_CLIENTSECRET="*********"

使之立即生效

 source ~/.bash_profile

3、 修改默认证书厂商
acme.sh 该文件内查看支持的厂商

 ~/.acme.sh/acme.sh --set-default-ca  --server letsencrypt

4、生成证书
4.1、有域名的管理权限增加了API KEY生成办法

~/.acme.sh/acme.sh --issue --dns dns_ali -d blog.pdoof.com # 阿里域名
~/.acme.sh/acme.sh --issue --dns dns_gd -d blog.pdoof.com # godd域名

4.2、无域名的管理权限
配置80端口的nginx配置,并指定可访问的root目录
例:

server {
        listen 80;
	    server_name blog.pdoof.com;
	    root /data/app/www;
        index index.php index.html index.htm;
}

执行证书生成

~/.acme.sh/acme.sh --issue -d blog.pdoof.com --webroot /data/app/www

5、拷贝证书到nginx目录

~/.acme.sh/acme.sh --install-cert -d blog.pdoof.com \
--key-file       /usr/local/nginx/conf/cert/blog.pdoof.com.key  \
--fullchain-file /usr/local/nginx/conf/cert/blog.pdoof.com.crt \
--reloadcmd     "/etc/init.d/nginx restart"

6、nginx添加配置

    ssl_certificate   cert/blog.pdoof.com.crt;
    ssl_certificate_key  cert/blog.pdoof.com.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

全局配置

server {
    listen                  443 ssl;
    server_name             blog.pdoof.com;

    error_log /data/log/nginx/pdoof.error.log;
    access_log /data/log/nginx/pdoof.access.log;

    ssl_certificate cert/7612633_blog.pdoof.com.pem;
    ssl_certificate_key cert/7612633_blog.pdoof.com.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    #表示使用的加密套件的类型。
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型。
    ssl_prefer_server_ciphers on;

    location / {
        proxy_set_header    Host                    $http_host;
        proxy_set_header    X-Real-IP               $remote_addr;
        proxy_set_header    X-Forwarded-For         $proxy_add_x_forwarded_for;
        proxy_set_header    X-Scheme                $scheme;
        proxy_redirect      http://    https://;

        proxy_pass  http://localhost:8090;
    }
}

server {
    listen 80;
    server_name blog.pdoof.com;
    rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。
}
0

评论区