[转帖]通过acme 协议生成免费的证书.

通过,acme,协议,生成,免费,证书 · 浏览次数 : 0

小编点评

**环境介绍:** - 服务器:阿里云DNS解析:dnspod操作过程如下。 **步骤:** 1. 下载脚本并执行安装: - 使用 `wget` 命令下载脚本:`wget -O - https://get.acme.sh | sh` 2. 申请 API 并保存登录dnspod后台: - 在 `dnspod` 前面创建一个 `DP_Id` 和 `DP_Key`,并保存它们。 3. 申请证书: - 在 `./acme.sh` 中执行 `./acme.sh --issue --dns dns_dp -d chaihongjun.me -d *.chaihongjun.me --debug --ocsp-d` 命令。 4. 安装证书: - 使用 `./acme.sh --installcert` 命令安装证书。 5. 配置 Nginx: - 添加以下配置项到 `nginx` 配置文件中: - `ssl_trusted_certificate /etc/letsencrypt/acme/fullchain.cer` - `ssl_certificate /etc/letsencrypt/acme/fullchain.cer` - `ssl_certificate_key /etc/letsencrypt/acme/chaihongjun.me.key` 6. 重新启动 Nginx: - 使用 `service nginx force-reload` 命令重启 Nginx。 **注意:** - 请将脚本中的 `DP_Id` 和 `DP_Key`替换为实际的值。 - 请确保 `./acme.sh` 文件在服务器上存在。 - 请阅读 `acme.sh` 文档中提供的说明。

正文

https://zhuanlan.zhihu.com/p/377191119

Authentication Credential Management Extension

 

 

环境介绍:

服务器:阿里云

DNS解析: dnspod

操作过程如下:(以下操作过程建议在root下执行)

1.下载脚本并执行安装

wget -O - https://get.acme.sh | sh

此时会执行一些东西,在/root/目录下会创建.acme.sh目录,并且生成一些文件,相当于在服务器上安装了一个客户端

并且,这个时候在系统的cron里面会添加一个命令,定时更新证书用的:

所以这个脚本程序比较人性化的一点体现出来了。

2.接着去dnspod申请API并保存

登录dnspod后台,进入菜单--【用户中心】--【安全设置】,点击右侧的"创建API Token",这里名称随意命名即可。

注意提示信息:仅仅在创建的时候显示一次,所以,如果怕忘记或者在执行本篇文章介绍的过程中出错,建议把ID和token记录下来,比如记事本之类。

3.正式进入申请证书的整个流程的准备环节,在shell环境下分别输入:

export DP_Id="62100"
export DP_Key="f4d4b2a300fb1b92b32e8d13e7ddb777"

这里 id 和 token 请换成你申请的值

4.开始申请签发证书

 ./acme.sh --issue --dns dns_dp -d chaihongjun.me -d *.chaihongjun.me --debug --ocsp

-d 指代域名,可以有多个 -d 参数,所以,后面又跟了一个通配符域名,以上域名请换成你所需要的。整个命令执行需要一段时间,最后会有一个120秒的等待。等最后出现success字样,就表示签发成功了。签发成功之后会在/root/.acme.sh/生成一个目录,这个目录的名称就是你申请的域名:

这个目录下就有申请的证书文件和密钥文件:

既然已经签发成功了,之前去改nginx配置即可,引用这个目录下的文件就好了。打住!官网有一段说明很重要(https://github.com/Neilpang/acme.sh/wiki/说明)

注意, 默认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的文件, 例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件. 这里面的文件都是内部使用, 而且目录结构可能会变化.
正确的使用方法是使用 --installcert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置,

这就牵出了后面的证书安装过程(其实是复制证书文件到其他地方,通过它给的installcert命令可以保证可以自动更新升级,如果是我们手动cp,则无法后续的续订证书)

5.安装证书(复制证书)

./acme.sh  --installcert -d chaihongjun.me  -d *.chaihongjun.me   
        --cert-file   /etc/letsencrypt/acme/chaihongjun.me.cer
        --key-file   /etc/letsencrypt/acme/chaihongjun.me.key 
        --ca-file       /etc/letsencrypt/acme/ca.cer 
        --fullchain-file /etc/letsencrypt/acme/fullchain.cer 
        --reloadcmd  "service nginx force-reload"

以上命令是把对应域名的证书文件都丢到/etc/letsencrypt/acme/里面去了,并且让nginx重新加载配置。

6.最后一个步骤是配置nginx

需要注意的是有这几个配置,除了密钥,其他引入的都是fullchain:

ssl_trusted_certificate  /etc/letsencrypt/acme/fullchain.cer;
ssl_certificate   /etc/letsencrypt/acme/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/acme/chaihongjun.me.key;

然后如果使用了pagespeed,则这两个很重要:

pagespeed SslCertDirectory /etc/letsencrypt/acme;
pagespeed SslCertFile /etc/letsencrypt/acme/fullchain.cer;

至此,整个安装配置过程都完成了,然后就可以撒手不管它自动续期(60天周期)

关于其他内容:

  1. 证书会60天周期自动更新续订
  2. acme.sh本身也要更新的,可以手动 ./acme.sh --upgrade 到最新版,也可以自动升级 ./acme.sh --upgrade --auto-upgrade,以及关闭 ./acme.sh --upgrade --auto-upgrade 0
  3. 详情请见官网 

注意:
如果第一个步骤就提示下载失败error之类的,那么请确认系统是centos6.5版本,如果是这样的情况,有两种解决方案:
1. 执行curl命令的时候指定 tsl版本 curl --tlsv1  | sh
2. 将 get.acme.sh 内容下载并添加参数 --no-check-certificate

#!/usr/bin/env sh
#https://github.com/Neilpang/get.acme.sh
 
_exists() {
  cmd="$1"
  if [ -z "$cmd" ] ; then
    echo "Usage: _exists cmd"
    return 1
  fi
  if type command >/dev/null 2>&1 ; then
    command -v $cmd >/dev/null 2>&1
  else
    type $cmd >/dev/null 2>&1
  fi
  ret="$?"
  return $ret
}
 
if _exists curl && [ "${ACME_USE_WGET:-0}" = "0" ]; then
  curl https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1  sh
elif _exists wget ; then
  wget --no-check-certificate  -O -  https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1  sh
 else
  echo "Sorry, you must have curl or wget installed first."
  echo "Please install either of them and try again."
fi

如果上述方法均不可行,可以参照  贴出的方法,手动安装

与[转帖]通过acme 协议生成免费的证书.相似的内容:

[转帖]通过acme 协议生成免费的证书.

https://zhuanlan.zhihu.com/p/377191119 Authentication Credential Management Extension 环境介绍: 服务器:阿里云 DNS解析: dnspod 操作过程如下:(以下操作过程建议在root下执行) 1.下载脚本并执行安

[转帖]通过Shell脚本自动监控JAVA进程中线程cpu使用率

https://gitee.com/jialy/auto-monitor-java-process/tree/master 本文主要介绍在 show-busy-java-threads.sh 脚本的功能基础上,通过 process-cpu-monitor.sh 脚本实现Linux平台上Java进程或

[转帖]通过yum展示安装包依赖关系,下载rpm包

https://www.cnblogs.com/hellxz/p/13212392.html 背景 平时测试环境中,服务器是可以访问外网的,而在内网环境,想要安装一些软件,比如docker,就需要离线安装,需要提前准备好需要的rpm安装包以及其依赖包 本文记录下如何使用yum展示软件包的依赖关系,以

[转帖]通过 SSH 在远程 Linux 系统上执行命令

https://linux.cn/article-15263-1.html 通过安全的网络连接在远程计算机上调用命令或程序。 有一天,我正在测试如何在 将文件或目录复制到多个位置和系统时保持完整的文件权限。当我想检查远程系统上的文件权限时,我必须通过 SSH 登录它并检查属性。从远程系统多次登录和注

[转帖]通过DNS实现高可靠的负载均衡和访问提速

https://www.jianshu.com/p/251811ef1405 1. DNS简介 DNS (Domain Name System,域名系统),其主要作用就是将主机名解析成ip地址的过程,完成了从域名到主机识别ip地址之间的转换。 DNS是一个分布式、分层次的主机名管理架构,通过配置DN

[转帖]通过yum命令只下载rpm包

https://www.cnblogs.com/sunbines/p/16404334.html 正文 遇到服务器没有网络的情况下部署环境,或者创建自己的 yum 仓库等。每次都是在网上搜搜搜,都是五花八门,自己整理了下自己用到的以下三种方式,这里没有太多废话,只是如何安装并示例经常用到的方式,如果

[转帖]通过硬件计数器,将性能提升3倍之旅

https://www.cnblogs.com/charlieroro/p/16880090.html 翻译自:Seeing through hardware counters: a journey to threefold performance increase 本文通过对CPU层面的代码挖掘,

[转帖]通过Nginx和Nginx Plus阻止DDoS攻击

分布式拒绝服务攻击(DDoS)指的是通过多台机器向一个服务或者网站发送大量看似合法的数据包使其网络阻塞、资源耗尽从而不能为正常用户提供正常服务的攻击手段。随着互联网带宽的增加和相关工具的不断发布,这种攻击的实施难度越来越低,有大量IDC托管机房、商业站点、游戏服务商一直饱受DDoS攻击的困扰,那么如

[转帖]通过实战理解CPU上下文切换

Linux是一个多任务的操作系统,可以支持远大于CPU数量的任务同时运行,但是我们都知道这其实是一个错觉,真正是系统在很短的时间内将CPU轮流分配给各个进程,给用户造成多任务同时运行的错觉。所以这就是有一个问题,在每次运行进程之前CPU都需要知道进程从哪里加载、从哪里运行,也就是说需要系统提前帮它设

【转帖】通过docker配置DNS服务

https://blog.whsir.com/post-3185.html 在办公室开发人员经常会测试所写的页面,每次都要输入对应的IP地址或者更改hosts,为了让开发大爷省心,不如搭建一个dns服务,将所需要测试的网页直接解析成域名,让开发大爷自己选域名,想用啥就用啥,我这里通过docker配置