acme.sh申请证书之不完全版 作者: Hogwarts 发布于: 2021-02-19 更新于: 2022-06-19 分类: 默认分类 acme.sh在GitHub的教程很全面,网络上也很多申请的教程,为何还要水一篇呢。因为它们说的太全面了,太技术了,说句实话,对于我这种小白来讲,根本看不懂,我太菜了。 - 至于acme就不多做介绍了,教程也不多做讲解了,直接用吧。 参考:`https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E` - 因为申请的方式很多,不能一一阐述(其实我根本不懂,也不会。),仅保证能用即可。 - 需要了解免费SSL证书历史现状情况的可参考此篇文章:`https://teddysun.com/527.html` # 一、申请前的准备工作 其实在前面文章中有介绍,不厌其多,再来一遍吧。 ##1.1 安装工具 apt install cron socat curl wget ## 1.2 安装acme.sh wget -O - https://get.acme.sh | sh -s email=youremail@example.com #把youremail@example.com改为你的邮箱 ## 1.3 重启终端 source ~/.bashrc ## 1.4 升级版本 acme.sh --upgrade #安装一段时间后,申请证书前需更新一下 # 二、申请ZeroSSL证书 **ACME.sh 默认CA**,优点不多做解释。参考:`https://luotianyi.vc/4839.html` ## 2.1 简单方式(验证http方式) ### 2.1.1 前期准备 - 取消cloudflare的保护橘红色图标 - 关闭nginx,caddy等占用443,80端口web软件 - **不能申请泛域名证书** Debian: apt install lsof #安装软件 Centos: yum install lsof lsof -i:443 #查看443端口占用情况 lsof -i:80 #查看80端口占用情况 ### 2.1.2 申请命令 acme.sh --issue -d 你的域名 --keylength ec-256 --standalone PS20220619:亲测此方式有时不能成功申请。换server可解。即在命令后加入 `--server letsencrypt` ### 2.1.3 安装到指定位置 mkdir /etc/你的域名 #建立文件夹存放申请的证书、密钥 acme.sh --ecc --installcert -d 你的域名 --key-file /etc/你的域名/private.key --fullchain-file /etc/你的域名/fullchain.cer ## 2.2 推荐方式(自动验证DNS方式) - 不能为.ml、.tk、cf、.ga、.gq等免费域名 - **可申请泛域名** - 不需停掉cloudflare保护 - 不需关闭nginx,caddy等web软件(443,80端口占用无视) ### 2.2.1 前期准备 - 登录cloudflare后,点右上角图标下的"我的个人资料"——“API令牌”——Global API Key“查看” - 输入你的密码,获取您的key,妥善保管。 ### 2.2.2 设置环境变量 export CF_Key="此处填写Cloudflare API Key" export CF_Email="此处填写Cloudflare你的登录邮箱" ### 2.2.3 申请命令 acme.sh --issue --dns dns_cf -d 你的域名 -k ec-256 ### 2.2.4 安装到指定位置 mkdir /etc/你的域名 #建立文件夹存放申请的证书、密钥 acme.sh --ecc --installcert -d 你的域名 --key-file /etc/你的域名/private.key --fullchain-file /etc/你的域名/fullchain.cer ##2.3 问题 人云亦云的推荐ZeroSSL证书证书,在实际操作申请过程中,有时还是有问题的。尤其对于非常规域名会申请失败。如果证书申请失败的话,可以尝试在命令后面加上默认的服务器,可能就会申请成功。 比如下列命令,设置letsencrypt为申请服务器 acme.sh --issue -d 你的域名 --keylength ec-256 --standalone --server letsencrypt # 三、申请Let’s Encrypt证书 官方已经更改了默认CA,不再推荐,本文也不再推荐此种方式了。建议申请ZeroSSL证书。 ## 3.1 简单方式(验证http方式) ### 3.1.1 前期准备 - 取消cloudflare的保护橘红色图标(前提是域名被cf解析并保护) - 关闭nginx,caddy等web软件 - 保证443,80端口不被占用 - **不能申请泛域名证书** Debian: apt install lsof #安装软件 Centos: yum install lsof lsof -i:443 #查看443端口占用情况 lsof -i:80 #查看80端口占用情况 ### 3.1.2 申请命令 acme.sh --set-default-ca --server letsencrypt //指定Let’s Encrypt CA acme.sh --issue -d 你的域名 --keylength ec-256 --standalone ### 3.1.3 安装到指定位置 mkdir /etc/你的域名 #建立文件夹存放申请的证书、密钥 acme.sh --ecc --installcert -d 你的域名 --key-file /etc/你的域名/private.key --fullchain-file /etc/你的域名/fullchain.cer ## 3.2 推荐方式(自动验证DNS方式) - 不能为.ml、.tk、cf、.ga、.gq等免费域名 - **可申请泛域名** - 不需停掉cloudflare保护 - 不需关闭nginx,caddy等web软件(443,80端口也无视) ### 3.2.1 前期准备 - 登录cloudflare后,点右上角图标下的"我的个人资料"——“API令牌”——Global API Key“查看” - 输入你的密码,获取您的key,妥善保管。 ### 3.2.2 设置环境变量 export CF_Key="此处填写Cloudflare API Key" export CF_Email="此处填写Cloudflare你的登录邮箱" ### 3.2.3 申请命令 acme.sh --issue --dns dns_cf -d 你的域名 -k ec-256 ### 3.2.4 安装到指定位置 mkdir /etc/你的域名 #建立文件夹存放申请的证书、密钥 acme.sh --ecc --installcert -d 你的域名 --key-file /etc/你的域名/private.key --fullchain-file /etc/你的域名/fullchain.cer ## 3.3 方式三(手动验证DNS方式) 设置export CF_Token、export CF_Zone_ID。 算了,以上两种还不够得瑟么。 # 四、申请BuyPass证书 **优点:**免费,六个月(180天)有效期。 **缺点:**不支持泛域名申请。 **说明:**此方式采用的是DNS验证的方式,因Cloundflare停止了一些免费域名DNS验证的支持,比如.ml、.tk、cf、.ga、.gq等免费域名,故此种方法不适用由Cloundflare解析的免费域名的证书申请。 ## 4.1 前期准备 - 登录cloudflare后,点右上角图标下的"我的个人资料"——“API令牌”——Global API Key“查看” - 输入你的密码,获取您的key,妥善保管。 ## 4.2 注册账号 ./acme.sh --server https://api.buypass.com/acme/directory --register-account --accountemail '你的邮箱' ## 4.3 设置环境变量(自动验证DNS方式) export CF_Key="此处填写Cloudflare API Key" export CF_Email="此处填写Cloudflare你的登录邮箱" ## 4.4 申请命令 acme.sh --server https://api.buypass.com/acme/directory --issue -d 你的域名 --keylength ec-256 --dns dns_cf --ecc ## 4.5 安装到指定位置 mkdir /etc/你的域名 #建立文件夹存放申请的证书、密钥 acme.sh --ecc --installcert -d 你的域名 --key-file /etc/你的域名/private.key --fullchain-file /etc/你的域名/fullchain.cer # 五、多说一点儿 - 5.1 本例中以Cloudflare域名解析为前提。 - 5.2 由Cloundflare解析的免费域名**`只能`**用`2.1 方式一`(验证http方式)的方法申请。 - 5.3 申请多个域名,再加上“`-d 你的域名`”选项即可。 - 5.4 申请多个二级域名或多个三级域名会生成一个证书,共用。 - 5.5 本例中申请的为ECC证书,申请一般证书不适用此文。 - 5.6 不支持免费域名申请泛域名。 - 5.7 PS:申请泛域名证书只能用dns方式。 # 六、 以后可能申请ZeroSSL证书为主流了 参考: - [放弃Let's Encrypt证书,全站更换ZeroSSL证书](https://ffis.me/archives/2110.html "放弃Let's Encrypt证书,全站更换ZeroSSL证书") - [【杂谈】免费SSL证书那点事](https://luotianyi.vc/4839.html "【杂谈】免费SSL证书那点事") [![](https://winamp.top/usr/uploads/2021/06/2912544022.png)](https://winamp.top/usr/uploads/2021/06/2912544022.png) #七、钟情于Let's Encrypt证书的强迫症患者 官方申请已经更换了默认的CA,除了申请Let's Encrypt证书外,其它两种方式必须添加Email了,不过也不一定必须填写真实的。如果您不想添加,还想用原来的方式申请的话,则必须指定CA。命令如下,仅供参考。 # 安装工具 apt install cron socat curl wget # 安装acme.sh wget -qO - https://get.acme.sh | sh # 重启终端 source ~/.bashrc # 指定CA acme.sh --set-default-ca --server letsencrypt #或不指定CA,在申请命令中加入--server letsencrypt 也可以 # 申请命令 acme.sh --issue -d 你的域名 --keylength ec-256 --standalone # 安装到指定位置 mkdir /etc/你的域名 //建立文件夹存放申请的证书、密钥 acme.sh --ecc --installcert -d 你的域名 --key-file /etc/你的域名/private.key --fullchain-file /etc/你的域名/fullchain.cer 标签: acme.sh
评论已关闭