windows申请免费ssl证书Let's Encrypt
目录
Let’s Encrypt介绍
Let’s Encrypt是一个由非营利性组织互联网安全研究小组(ISRG)提供的免费、自动化和开放的证书颁发机构(CA)。
简单的说,借助Let’s Encrypt颁发的证书可以为我们的网站免费启用HTTPS(SSL/TLS)
Let's Encrypt 官方地址:文档 - Let's Encrypt - 免费的SSL/TLS证书 (letsencrypt.org)
acme.sh介绍
本文介绍如何在windows系统中使用acme.sh来申请Let's Encrypt 证书
目前 Let's Encrypt 免费证书客户端最简单、最智能的 shell 脚本,可以自动发布和续订 Let's Encrypt 中的免费证书
acme.sh工具介绍:说明 · acmesh-official/acme.sh Wiki · GitHub
安装CURL
使用acme.sh前需要先安装Curl工具
Curl 是一个命令行工具和库,用于通过URL传输数据。
简单来说呢,根据我的理解
Curl在命令行或脚本中用于传输数据。可以通过命令行发送GET,POST 等多种协议请求的工具。
它还用于汽车,电视机,路由器,打印机,音频设备,手机,平板电脑,机顶盒,媒体播放器中,并且是数千种每天影响数十亿人口的软件应用程序的互联网传输基础。
Curl 是免费开源的
下载Curl工具 点击下载Curl
根据自己需要,下载对应的版本
下载后,解压,并添加系统环境变量
解压后目录:
添加环境变量,
设置path
配置完成后,cmd运行命令 curl --verison查看是否安装成功,如果返回版本信息,代表curl配置成功了
值得注意的是,貌似它针对windows 平台的Powshell 支持不够友好,输入这个名会报错,只能在cmd下才可以。
更多Curl信息请参考:https://blog.csdn.net/hadues/article/details/101788327
安装acme.sh
自动安装:
curl https://get.acme.sh | sh (网络问题可能失败)
手动安装:
git clone https://github.com/acmesh-official/acme.sh.git
cd ./acme.sh
./acme.sh --install
我们采用手动安装的方式,从github克隆项目到本地后
进入acme.sh文件夹后,打开git bash,运行命令
./acme.sh --install
安装过程中会让你输入一次密码,随便输入一个即可
如果在cmd窗口直接运行的话会出现如下错误
申请泛域名
./acme.sh --issue -d example.com -w "D:\nginx-1.20.1\html\example.com"
## example.com 修改为: 要申请证书的域名
## D:\nginx-1.20.1\html\example.com 修改为: 该域名所绑定的站点根目录
- issue 是acme.sh脚本用来颁发证书的指令;
- d是 --domain的简称,其后面须填写已备案的域名;
- w是 --webroot的简称,其后面须填写网站的根目录。
申请普通域名SSL
./acme.sh --issue -d erp.hober.com.cn --webroot "D:\webs\erp.hober.com.cn\PC"
- issue 是acme.sh脚本用来颁发证书的指令;
- d是 --domain的简称,其后面须填写已备案的域名;
- w是 --webroot的简称,其后面须填写网站的根目录。
D:\webs\erp.hober.com.cn\PC 为站点的根目录,http验证的时候会自动生成.well-known文件夹
如果是IIS,需要配置一下mime,不然无法验证http:
申请成功效果图:
在提示的路径中可以找到生成的证书:
Nugix配置SSL证书
没有pem格式的文件,用 fullchain.cert
server {
listen 443 ssl;
server_name erp.hober.com.cn;
ssl_certificate ..\..\erp.hober.com.cn\ssl\fullchain.cer;
ssl_certificate_key ..\..\erp.hober.com.cn\ssl\erp.hober.com.cn.key;
ssl_session_cache shared:ssl:1m;
ssl_session_timeout 5m;
# ssl_ciphers high:!anull:!md5;
# ssl_prefer_server_ciphers on;
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协议的类型,您需要自行评估是否配置TLSv1.1协议。
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
proxy_pass http://127.0.0.1:9901;
}
}
https请求测试:
SSL证书自动更新
参考:Win 下申请 let's encrypt 野卡 (附续期) - 犬's Blog (moedog.org)
acme.sh实现免费自动续期的https_Bear_beat的博客-CSDN博客_acme.sh
问题排查
提示:默认使用的是ZeroSSL证书
运行命令设置默认证书,切换默认证书为 Let’s Encrypt
acme.sh --set-default-ca --server letsencrypt
DNS验证失败