一:引言
申请ssl证书的方式有很多种,就是https。有些是免费的,有些是收费的。比如第三方域名管理cloudflare,也可以自动添加https并永久保存。
但由于部分服务需要使用服务器上的自助签证簿,需要自己申请。你可以***certbot或zeroSSL。
Cerbot可以参考我之前的文章:Certbot申请免费SSL证书
这里介绍使用acme.sh生成免费ssl证书,完全实现acme协议,纯Shell脚本语言编写。没有太多依赖,安装使用非常方便。
对于zerossl官网,需要指出的是,用户可以直接在控制台申请证书,但是免费用户最多只能申请3个证书,而使用ACME的zeroSSL证书申请数量没有限制。
Acme.sh官方gitlhub地址:https://github.com/acmesh-official/acme.sh
其次,安装acme.sh
安装过程不会污染任何函数和文件,所有修改仅限于安装目录:~/.acme.sh/。
下面的安装方法,把my@example.com修改成你自己的邮箱。
1.在线安装模式
安装非常简单,一个命令:
curhttps://get . acme . sh | sh-s e***il=my@example.com或
e***il=my@example.com这里的-s参数指定的邮箱可以链接到现有的zeroSSL帐户。关联成功后,通过acme.sh生成的zeroSSL证书会显示在zeroSSL网站的控制面板上。
2.其他安装方法
使用git仓库模式
git clone https://github . com/AC mesh-official/acme.sh . gitcd ./acme . sh ./acme . sh-install-m安装my@example.com后,账户主目录下会生成一个. acme . sh的隐藏目录。
三。证书的颁发
注意:安装完成后,您需要退出当前命令终端并再次登录,然后才能使用acme.sh命令。
这里用我的网站域名test.ywbj.cc作为测试。
配置nginx
服务器{**80;server _ name test . ywbj . cc;root/***/test . ywbj . cc;位置/ {索引index.html index.htm index.php;}}将域名目录配置为/***/test.ywbj.cc,在此目录下创建index.html文件测试,然后重启nginx。
配置完成后,浏览器打开test.ywbj.cc,可以看到域名提示不安全,没有https。
1:向域名颁发证书的http方式
总的来说是这样的。如果没有服务器,请手动使用dns。
单一域名
acme . sh-issue-dtest . ywbj . cc-w/***/test . ywbj . cc-d需要签证的域名。
-w参数描述:
具体来说,在验证域名的归属时,acme.sh会在网站的根目录下创建一个. known目录,然后在里面生成一个验证文件。因此,由-w参数指定的路径实际上是对应于/的路径。域名下的知名位置。用于验证该域名是否属于您。
下图显示证书已成功颁发。
如果有多个域名,同一证书中的多个域。
该证书将放在~/.acme.sh/example.com/中
证书将每60天自动更新一次。
如下:这里显示的是我的test.ywbj.cc的目录
2.颁发证书的手动dns方法
手动dns,在域名上手动添加一条txt解析记录,验证域名的所有权。
这种方式的好处是不需要任何服务器或公共ip,只需要dns解析记录就可以完成验证。缺点是如果不同时配置自动DNS API,acme.sh无法使用该方法自动更新证书,每次都需要手动重新解析验证域名所有权。
acme . sh-issue-DNS-d mydo***in.com \-是-我知道-DNS-手动-模式-足够-继续-请。然后,acme.sh将生成相应的resolution记录并显示出来。你只需要在你的域名管理面板中添加这个txt记录。
解析完成后,重新生成证书:
极致。sh-renew-d mydo***in.com \-yes-I-know-DNS-***nual-mode-found-go-ahead-pleased DNS的真正强大之处在于,它可以自动添加txt记录,利用域名解析器提供的api完成验证。
Acme.sh目前支持cloudflare、dnspod、cloudxns、godaddy、ovh等数十种解析器的自动集成。
四。将证书安装到Apache/Nginx等。
1、nginx
生成证书后,需要将其安装/***到您的Apache/Nginx或其他服务器上。您必须使用此命令将证书安装到目标文件中。不要使用~/.acme.sh/文件夹中的证书文件。它们仅供内部使用,文件夹结构将来可能会改变。
选择您自己的证书目录。我在这里的安装目录是/etc/nginx/ssl/,所以执行下面的命令。
acme . sh-install-cert-d test . ywbj . cc \-key-file/etc/nginx/SSL//key . PEM \-full chain-file/etc/nginx/SSL/cert . PEM \-reloadcmd "服务nginx强制-重新加载"
2:阿帕奇
如果是apache,只需使用下面的命令
acme . sh-install-cert-d example.com \-cert-file/path/to/cert file/in/Apache/cert . PEM \-key-file/path/to/keyfile/in/Apache/key . PEM \-full chain-file/path/to/full chain/cert file/Apache/full chain . PEM \-reloadcmd "服务apache2强制重新加载"
第五,配置nginx的ssl
更改nginx配置文件,**端口443,将ssl_certificate和ssl_certificate_key配置到指定目录。
服务器{ # listen 80听443;server _ name test . ywbj . cc;root/***/test . ywbj . cc;SSL _ certificate/etc/nginx/SSL/cert . PEM;SSL _ certificate _ key/etc/nginx/SSL/key . PEM;位置/ {索引index.html index.htm index.php;}}重启nginx,在浏览器中再次输入https://test.ywbj.cc/,可以看到已经成功了。
查看详情,可以看到ZeroSSL颁发的证书有效期为3个月。
目前证书会在60天后自动换发,不需要你做任何操作。这个时间以后可能会缩短,但是都是自动的,不用担心。你也可以改变这一点。
安装证书时,该任务已自动添加到crontab计划任务中。
Crontan -l查看定时任务,可以看到acme.sh的定时任务
crontan-L2 0 * * * "/root/. acme . sh "/acme . sh-cron-home "/root/. acme . sh "& gt/dev/null这里nginx的ssl自签证簿已经完成。
六:acme.sh其他命令(扩展)
1:查看已安装的证书信息。
Me.sh-info-daexample.com #将输出以下内容:Do***in _ conf =/root/. acme . sh/example . com/example . com . confle _ Do***in = example . comle _ Alt = noLe _ Webroot = DNS _ aliLe _ pre hook = Le _ post hook = Le _ renew hook = Le _ API = https://acme-v 02 . API . letsencrypt . org/directory yle _ key length = Le _ order finalize = https://acme-v 02 . API . letsencrypt . org/acme/finalize/23 xxxx 150
2:更新acme.sh
#将acme.sh升级到最新版本:acme.sh-upgrade #如果不想手动升级,可以开启自动升级。之后,acme.sh会自动保持更新。acme.sh-upgrade-auto-upgrade #您也可以随时关闭自动更新:acme.sh-upgrade-auto-upgrade 0
3.颁发ECC证书
单域ECC证书
acme . sh-issue-w/home/***root/example . com-d example . com-密钥长度EC-256SAN多域ECC证书
acme . sh-issue-w/home/***root/example . com-d example.com-d ***.example.com-key length EC-256
keylength以上的参数。
有效值包括:
ec-256(prime256v1,“ECDSA P-256”)
ec-384(secp384r1,“ECDSA P-384”)
ec-521(secp521r1,“ECDSA P-521”,Let & # 039尚不支持加密。)
4:更新证书
自己更新证书。
# Force To update the certificate:acme . sh-renew-d example . com-Force #或者,对于ECC certificate:acme . sh-renew-d example . com-Force-ECC要停止更新证书,可以执行以下操作从更新列表中删除证书:
acme . sh-remove-d example.com[-ECC]证书/密钥文件不会从磁盘中删除。
可以自己删除对应的目录(例如~/.acme.sh/example.com)。
本文来自女人u加油投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/555270.html