侧边栏壁纸

免费证书申请地址(3个月有效期)

2023年08月03日 391阅读 0评论 0点赞

SSL

证书管理工具
https://keymanager.trustasia.com/release/KeyManager-Setup-4.4.19.exe

官方网站: https://app.zerossl.com/

官方网站: https://ohttps.com/

官方网站: https://freessl.cn/login

Centos 快速下载: curl https://get.acme.sh | sh -s email=my@example.com

Let’s Encrypt 是一个免费的,自动化的,开放的证书颁发机构(CA),为公众的利益而运行。 它是一项由 Internet Security Research Group(ISRG)提供的服务。

acme.sh 则是实现了 acme 协议, 可以从 letsencrypt 生成免费的证书。

安装 acme.sh

curl https://get.acme.sh | sh -s email=my@example.com
source ~/.bashrc


#如果你的 crontab -l 中确实没有acme定时任务的话, 可以执行:
acme.sh  --install-cronjob
#它会帮你安装 cronjob.
#如果有了, 就可以了.

配置DNS到acme文件 (这里推荐使用dns的方式申请证书)

vim /root/.acme.sh/account.conf

LOG_FILE='/root/.acme.sh/acme.sh.log'

#LOG_LEVEL=1
#AUTO_UPGRADE="1"
#NO_TIMESTAMP=1

ACCOUNT_EMAIL='freessl.com-email'
UPGRADE_HASH='16dc21afff11c1f4de7ebe627ed60d41496d1sxx'
USER_PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/var/lib/snapd/snap/bin:/usr/local/mysql/bin:/root/bin'
DEFAULT_ACME_SERVER='https://acme-v02.api.letsencrypt.org/directory'
SAVED_CF_Email='your@email.com'
SAVED_CF_Key='CloudFlare-key'

#wq保存退出



vim  /root/.acme.sh/acme.sh.env

export CF_Email="your@email.com"
export CF_Key="CloudFlare-key"

#wq保存退出

1、通过 http 方式申请证书

只需要指定域名, 并指定域名所在的网站根目录. acme.sh 会全自动的生成验证文件, 并放到网站的根目录, 然后自动完成验证. 最后会聪明的删除验证文件. 整个过程没有任何副作用.

假设服务器在运行着的,网站域名为 80ii.cn,根目录为 /data/ssl/80ii.cn/,那么只需要执行下面这条语句就行。

# 生成 RSA 证书:
acme.sh --issue -d 80ii.cn -w /data/ssl/80ii.cn/  #单域名
# 生成 ECC 证书:
acme.sh --issue -d 80ii.cn -d www.80ii.cn -w /data/ssl/80ii.cn/ --keylength ec-256  #多域名

/var/www/_letsencrypt/ 为 80ii.cn 站点下的 /.well-known/acme-challenge/ 证书请求目录。
如果没有安装 web 服务器,acme.sh 也自带一个建议的web服务用于证书申请,前提是需要安装 socat ,80端口没有被占用。使用方法:

acme.sh --issue -d 80ii.cn --standalone

2、通过 DNS 方式申请证书

这种方式的好处是,你不需要任何服务器,不需要任何公网 ip,只需要 dns 的解析记录即可完成验证,而且可申请泛域名证书。坏处是,需要配合DNS解析服务商的API使用,否则 acme.sh 将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。

目前支持 DNSPod、CloudXNS、Aliyun、jdcloud、 CloudFlare、 GoDaddy、 Azure、AWS 等国内外大多数主流DNS服务提供商。详细清单详见: https://github.com/acmesh-official/acme.sh/wiki/dnsapi

阿里云 DNS 申请方式

export Ali_Key="abcd"
export Ali_Secret="xxxxxxxxxx"
# RSA 证书
acme.sh --issue --dns dns_ali -d 80ii.cn -d cp.80ii.cn
# ECC 证书
acme.sh --issue --dns dns_ali -d 80ii.cn -d cp.80ii.cn --keylength ec-256

Ali_Key 和 Ali_Secret 需要从阿里云RAM访问控制中获取。

DNSPod 申请方式

export DP_Id="1234"
export DP_Key="sADDsdasdgdsf"
acme.sh --issue --dns dns_dp -d cp.80ii.cn -d 80ii.cn

Cloudflare 申请方式

export CF_Email="your@email.com"
export CF_Key="CloudFlare-key"

#手动添加txt 认证并申请证书
#第一步:
acme.sh  --issue  --dns dns_cf -d  80ii.cn  --yes-I-know-dns-manual-mode-enough-go-ahead-please

#第二步(添加验证完成执行):
acme.sh  --renew  --dns dns_cf -d  80ii.cn  --yes-I-know-dns-manual-mode-enough-go-ahead-please

3、安装证书

证书生成以后, 接下来需要把证书安装到真正需要用它的地方。acme.sh默认生成的证书都放在安装目录下: ~/.acme.sh/ ,但是官方不推荐直接使用该目录下的证书文件,仅供 acme.sh 内部使用。

正确的使用方法是使用 –installcert 命令,并指定目标位置, 然后证书文件会被复制到相应的位置。

acme.sh --installcert -d 80ii.cn   \
        --key-file   /data/ssl/80ii.cn/80ii.cn.key \
        --fullchain-file /data/ssl/80ii.cn/80ii.cn.crt \
        --reloadcmd  "service nginx force-reload"

–reloadcmd 参数用于让web服务器重新加载新的证书文件,例子中使用的是 nginx 服务器,您也可以定义成其它服务器。

–ecc 参数用于 ECC 证书,rsa证书请不要添加此参数,下同。

4、更新SSL证书

Let’s Encrypt 的证书有效期为3个月,每3个月得重新申请证书。通过 acme.sh 可以自动管理SSL证书的申请。通过上面步骤的安装后 acme.sh 会定期自动更新SSL证书。
当然,acme.sh 也提供手动更新方式。

acme.sh --renew -d 80ii.cn --ecc --force

--force 强制安装、强制更新证书或覆盖 sudo 限制。
--ecc 指定使用 ECC 证书。

5、取消SSL证书的自动续期

有时候你可能需要移除特定域名的自动申请,这时候可以使用下面的命令让 acme.sh 取消对特定域名的自动续期。当然已申请的证书仍然有效,不会失效。

acme.sh --remove -d 80ii.cn --ecc

6、安装申请及安装证书的命令

acme.sh --installcert -d 80ii.cn   \
        --key-file   /data/ssl/80ii.cn/80ii.cn.key \
        --fullchain-file /data/ssl/80ii.cn/80ii.cn.crt \
        --reloadcmd  "service nginx force-reload"
        

acme.sh --installcert -d 80ii.cn   \
        --key-file   /data/ssl/80ii.cn/80ii.cn.key \
        --fullchain-file /data/ssl/80ii.cn/80ii.cn.crt \
        --reloadcmd  "service nginx force-reload" --ecc

    
执行成功后,终端最终显示:Reload success
        
#(一个小提醒, 这里用的是 service nginx force-reload, 不是 service nginx reload, 据测试, reload 并不会重新加载证书, 所以用的 force-reload)

参数说明

–install-cert 将颁发的证书安装到 apache/nginx 或任何其他服务器。

–key-file 发行/续订后将密钥文件复制到的路径。

–fullchain-file 发布/续订后将全链证书文件复制到的路径。

–reloadcmd 发布/更新后重新加载服务器后要执行的命令

然后修改Nginx配置文件使用 /data/ssl/80ii.cn/80ii.cn.key、/data/ssl/80ii.cn/80ii.cn.crt即可

server
{
    listen 80;
    listen 443 ssl http2;
    server_name 80ii.cn www.80ii.cn;
    index index.php index.html index.htm;
    root /www/80ii.cn;

    ssl_certificate    /data/ssl/80ii.cn/80ii.cn.crt;
    ssl_certificate_key    /data/ssl/80ii.cn/80ii.cn.key;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }
    
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        error_log /dev/null;
        access_log /dev/null;
    }
    
    location ~ .*\.(js|css)?$
    {
        expires      12h;
        error_log /dev/null;
        access_log /dev/null; 
    }
    access_log  /www/wwwlogs/80ii.cn.log;
    error_log  /www/wwwlogs/80ii.cn.error.log;
}
0

—— 评论区 ——

昵称
邮箱
网址
取消
站点公告

如果你有好的文章,不妨留言分享一下,互相借鉴,互相学习。

人生倒计时
舔狗日记