假如是个人布置网站,那么现在有许多免费的证书供咱们挑选,例如Let’s Encrypt、ZeroSSL等等。在前面咱们介绍过怎么运用Cerbot东西请求Let’s Encrypt证书,不过Cerbot运用起来仍然是有一些杂乱的。
除此之外,尽管阿里云也提供免费证书,可是现在阿里云免费证书请求一次只管3
个月了,也十分不方便。
运用现在引荐一个更加强壮且快速的证书请求脚本:acme.sh
,它不只内置多种免费证书,还支持主动化地请求和续期证书。
今日,咱们就来学习一下怎么运用这个脚原本完结证书请求,以及一些常用的证书办理指令。
acme.sh
脚本的官网:传送门
1,装置acme.sh
衔接到你的服务器,经过下列指令即可装置:
curl https://get.acme.sh | sh -s email=youremail@example.com
需求将上述youremail@example.com
换成你自己的邮箱。
装置完结后记住先从头衔接服务器或许重启终端,然后能够履行下列指令检查是否装置成功:
acme.sh -v
能够输出版本号信息则成功。
上述的装置指令事实上履行了下列过程:
- 把
acme.sh
脚本下载到你的home
目录下的.acme.sh/
目录中 - 在你的
.bashrc
中创建了别号alias acme.sh=~/.acme.sh/acme.sh
,使得咱们能够运用acme.sh
指令 - 主动创建了体系守时使命
cronjob
,会在每天0
点主动检测一切的证书,假如有证书快过期了则会主动更新证书
2,一键请求证书
下面我将介绍几种请求证书的方式,咱们依据实际情况挑选其一即可。
(1) 在你的服务器上请求
假如你就在你的服务器上装置了acme.sh
,并且已经将域名解析到了你的服务器,那么就能够直接在服务器上请求了!
履行下列指令:
acme.sh --issue -d example.com --standalone
将上述example.com
替换成你自己的域名,需求留意下列几点:
- 现在服务器上没有运转任何Web服务,即
80
端口空闲 - 该域名已成功解析到当时服务器
稍等片刻,呈现Success
字样,并且输出了你的证书文件方位阐明生成成功了:
可见该方式十分的快捷,事实上acme.sh
有很多请求证书的模式,上述咱们运用的是Standalone
模式,该模式下acme.sh
假装自己是一个Web服务器,临时监听80
端口完结验证。
假如请求证书过程中呈现赤色字报错:Please install socat tools first
,则先履行下列指令装置socat
东西:
sudo apt install socat
(2) 凭借Cloudflare API请求证书
在之前咱们请求证书都需求手动在域名解析商装备TXT DNS完结验证,事实上acme.sh
还支持十分多域名解析商的API完结主动化证书请求。
今日以Cloudflare为例,完结用Cloudflare解析域名时,凭借其API主动化完结证书请求,这儿就不再赘述怎么将域名解析权交给Cloudflare了。
首要登录你的Cloudflare账户,点击右上角我的个人资料:
点击左侧栏API令牌,检查下面的Global API Key:
输入暗码后,仿制下该API密钥备用:
然后在服务器上,履行下列指令完结证书请求:
export CF_Email="你的Cloudflare账户邮箱"
export CF_Key="你的Cloudflare Global API Key"
acme.sh --issue --dns dns_cf -d example.com
可见只需设定CF_Email
和CF_Key
两个环境变量分别是你的Cloudflare邮箱和仿制的Key,然后就能够请求了!上述example.com
替换成你自己的域名。
3,仿制证书文件
acme.sh
会将证书生成在~/.acme.sh/你的域名_ecc/
目录下,可是咱们不能直接运用它们,需求凭借--install-cert
指令将其仿制出来,例如:
acme.sh --install-cert -d example.com
--cert-file "./cert/cert.pem"
--key-file "./cert/key.pem"
--fullchain-file "./cert/fullchain.pem"
上述-d
后面仍然是接你的域名,然后后面几个参数意义如下:
-
--cert-file
指定仿制你的证书文件到哪个方位 -
--key-file
指定仿制你的证书密钥文件到哪个方位 -
--fullchain-file
指定仿制你的全链证书文件到哪个方位
一般来说,以Nginx为例,咱们只需装备证书文件和证书密钥文件即可,因而--fullchain-file
能够省略。
4,常用证书办理指令
(1) 检查已装置证书
首要能够经过下列指令列出全部证书:
acme.sh --list
能够看到一切证书信息,榜首列便是咱们证书域名:
然后能够经过下列指令检查某个详细证书详细信息:
acme.sh --info -d example.com
(2) 续期证书
咱们请求的证书通常有效期是3
个月,并且acme.sh
是能够主动续期咱们一切证书的。
不过需求手动续期时,能够经过下列指令续期某个证书:
acme.sh -r -d example.com
也能够一键全部续期:
acme.sh --renew-all
(3) 撤消和移除证书
假如证书不需求了,咱们能够将其撤消,需求留意的是:撤消不是删去证书就行了
首要经过下列指令撤消证书:
acme.sh --revoke -d example.com
呈现Revoke success
阐明撤消成功。
不过现在证书文件还残留在服务器上,经过下列指令移除:
acme.sh --remove -d example.com
到此,就完结了证书撤消和移除操作。
(4) 更换默许CA
默许情况下acme.sh
请求的是ZeroSSL的证书,假如你想切换为其它的CA厂商也是能够的,例如咱们要切换成Let’s Encrypt厂商:
acme.sh --set-default-ca --server letsencrypt
履行该指令后,后续便是请求的Let’s Encrypt的证书了!
--server
后接CA厂商名称,可用的名称如下:
letsencrypt
buypass
zerossl
sslcom
google
letsencrypt_test
buypass_test
googletest
带test
的通常是测试用的,仅引荐测试环境运用。
现在支持的CA厂商特性如下:
CA厂商 | 证书有效期 | ECC证书 | 域名数量 | 支持通配符 | NotAfter | 国际化域名 |
---|---|---|---|---|---|---|
Let’s Encrypt | 90 | 是 | 100 | 是 | 否 | 是 |
ZeroSSL | 90 | 是 | 100 | 是 | 是 | 是 |
90 | 是 | 100 | 是 | 是 | 否 | |
Buypass | 180 | 是 | 5 | 付费 | 否 | 是 |
SSL.com | 90 | 是 | 2 | 付费 | 否 | 是 |
能够依据自己需求设定和挑选。
(5) 转换为p12
证书
尽管acme.sh
生成的证书能够直接装备到Nginx、Apache等等Web服务器运用,不过有少量时分假如说想直接装备证书到Tomcat中(Spring Boot)那就需求将证书转换成p12
格式了!
生成证书后,将证书文件和证书密钥文件仿制出来,经过openssl
指令转换:
openssl pkcs12 -export -in "证书文件途径" -inkey "证书密钥文件途径" -out "指定生成的p12证书文件途径"
履行指令会让你设定p12
证书的暗码,自行设定即可。
然后在Spring Boot装备文件装备如下:
# SSL证书设置
server.ssl.key-store=证书jks文件所在方位
server.ssl.key-store-password=证书暗码
server.ssl.keyStoreType=PKCS12
server.ssl.key-store
装备项需求以classpath:
或许file:
最初,一般classpath:
最初的表示jar
包内途径,Maven项目中srcmainresources
文件夹即可对应为classpath
的根目录,而file:
对应的是jar
包外相对途径或许绝对途径。
# classpath途径
server.ssl.key-store=classpath:ssl.p12
# jar包外途径
server.ssl.key-store=file:ssl/ssl.p12
5,参阅文档
acme.sh
有着丰富的文档,本文参阅如下: