首页 > 其他分享 >用acme.sh给网站域名,申请免费SSL永久证书

用acme.sh给网站域名,申请免费SSL永久证书

时间:2023-05-30 19:00:39浏览次数:36  
标签:acme 证书 -- SSL sh com example

安装acme.sh

1:在线安装方式
curl https://get.acme.sh | sh -s [email protected]
或者
wget -0 - https://get.acme.sh | sh -s [email protected]
这里的-s参数指定的邮箱可以关联到已有的zeroSSL账号。关联成功后,通过acme.sh生成的zeroSSL证书会在zeroSSL网站的控制面板上显示。

2 用git仓库方式
git clone https://github.com/acmesh-official/acme.sh.git
cd ./acme.sh
./acme.sh --install -m [email protected]
安装完成后,在账号home目录,会生成一个.acme.sh的隐藏目录。

三:颁发证书

注:安装完成后,需要退出当前命令终端,重新登录,才可以使用acme.sh命令

这里已我的网站域名 test.ywbj.cc 做为测试。

配置nginx
server {
listen 80;
server_name test.ywbj.cc;

root /www/test.ywbj.cc;
location / {
index index.html index.htm index.php;
}
}

1:http方式颁发证书给域名

一般情况下,都是这种。如果没有服务器,请使用dns手动。

单个域名
acme.sh --issue -d test.ywbj.cc -w /www/test.ywbj.cc

 

-d 需要签证的域名。
-w参数说明:
在验证域名的所有权时,具体来说,acme.sh会在网站的根目录下创建.well-known目录,然后再在其中生成验证文件。因此,-w参数指定的路径实际为域名之下,/.well-known位置对应的路径。用与验证此域名是属于你的。

如果有多个域名,同一个证书中的多个域。
acme.sh --issue -d example.com -d www.example.com -d cp.example.com -w /home/wwwroot/example.com


证书生成完后将放置在~/.acme.sh/example.com/

证书将每60天自动更新一次。

如下:这里显示的是我test.ywbj.cc的目录下。

2:手动 dns 方式颁发证书

手动 dns 方式, 手动在域名上添加一条 txt 解析记录, 验证域名所有权.

这种方式的好处是, 你不需要任何服务器, 不需要任何公网 ip, 只需要 dns 的解析记录即可完成验证. 坏处是,如果不同时配置 Automatic DNS API,使用这种方式 acme.sh 将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。
acme.sh --issue --dns -d mydomain.com \
--yes-I-know-dns-manual-mode-enough-go-ahead-please

 


然后, acme.sh 会生成相应的解析记录显示出来, 你只需要在你的域名管理面板中添加这条 txt 记录即可.

等待解析完成之后, 重新生成证书:
acme.sh --renew -d mydomain.com \
--yes-I-know-dns-manual-mode-enough-go-ahead-please

 


dns 方式的真正强大之处在于可以使用域名解析商提供的 api 自动添加 txt 记录完成验证.

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 \
--fullchain-file /etc/nginx/ssl/cert.pem \
--reloadcmd "service nginx force-reload"

 


在这里插入图片描述

2:apache:

如果是apache的话,用以下命令即可
acme.sh --install-cert -d example.com \
--cert-file /path/to/certfile/in/apache/cert.pem \
--key-file /path/to/keyfile/in/apache/key.pem \
--fullchain-file /path/to/fullchain/certfile/apache/fullchain.pem \
--reloadcmd "service apache2 force-reload"

 

五:配置nginx的ssl

更改nginx配置文件,加上监听443端口,和配置ssl_certificate和ssl_certificate_key到指定目录即可。
server {
#listen 80;
listen 443;
server_name test.ywbj.cc;

root /www/test.ywbj.cc;

ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;

location / {
index index.html index.htm index.php;
}
}

 


重启nginx,在浏览器再次输入https://test.ywbj.cc/,可以看到已经成功。
查看详细,可以看到是ZeroSSL颁发的证书,有效期为3个月。
在这里插入图片描述
目前证书在 60 天以后会自动更新, 你无需任何操作. 今后有可能会缩短这个时间, 不过都是自动的, 你不用关心。你也可以更改这个。

安装证书时,已经自动在crontab定时任务添加了任务。

crontan -l查看定时任务,可以看到acme.sh的定时任务。
crontan -l

2 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

到这里,nginx的ssl自签证书就已经完成了。

六:acme.sh其他命令(扩展)

1:查看已安装证书信息
acme.sh --info -d example.com
# 会输出如下内容:
DOMAIN_CONF=/root/.acme.sh/example.com/example.com.conf
Le_Domain=example.com
Le_Alt=no
Le_Webroot=dns_ali
Le_PreHook=
Le_PostHook=
Le_RenewHook=
Le_API=https://acme-v02.api.letsencrypt.org/directory
Le_Keylength=
Le_OrderFinalize=https://acme-v02.api.letsencrypt.org/acme/finalize/23xxxx150/781xxxx4310
Le_LinkOrder=https://acme-v02.api.letsencrypt.org/acme/order/233xxx150/781xxxx4310
Le_LinkCert=https://acme-v02.api.letsencrypt.org/acme/cert/04cbd28xxxxxx349ecaea8d07
Le_CertCreateTime=1649358725
Le_CertCreateTimeStr=Thu Apr 7 19:12:05 UTC 2022
Le_NextRenewTimeStr=Mon Jun 6 19:12:05 UTC 2022
Le_NextRenewTime=1654456325
Le_RealCertPath=
Le_RealCACertPath=
Le_RealKeyPath=/etc/acme/example.com/privkey.pem
Le_ReloadCmd=service nginx force-reload
Le_RealFullChainPath=/etc/acme/example.com/chain.pem

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/wwwroot/example.com -d example.com --keylength ec-256

•1


SAN多域ECC证书
acme.sh --issue -w /home/wwwroot/example.com -d example.com -d www.example.com --keylength ec-256

•1


keylength上面的参数。

有效值为:
ec-256(prime256v1,“ECDSA P-256”)
ec-384(secp384r1,“ECDSA P-384”)
ec-521(secp521r1,“ECDSA P-521”,Let’s Encrypt 尚不支持。)

4:更新证书

自己更新证书
#强制更新证书:
acme.sh --renew -d example.com --force

#或者,对于 ECC 证书:
acme.sh --renew -d example.com --force --ecc

要停止更新证书,您可以执行以下操作从更新列表中删除证书:
acme.sh --remove -d example.com [--ecc]

 

证书/密钥文件不会从磁盘中删除。

您可以自己删除相应的目录(例如~/.acme.sh/example.com)。

参考网站:https://blog.csdn.net/weixin_52270081/article/details/126777550

标签:acme,证书,--,SSL,sh,com,example
From: https://www.cnblogs.com/elvis8020/p/17444116.html

相关文章

  • ShardingSphere使用实例
    ShardingSphere是一个开源的分布式数据库中间件,提供了数据库分片、读写分离、分布式事务等功能。下面是一个简单的示例,展示了如何在Java应用程序中使用ShardingSphere:添加依赖项:在您的项目的构建文件(例如pom.xml)中,添加ShardingSphere的依赖项。例如,在Maven项目中,您可以添加以下......
  • Shading-JDBC使用实例
    Sharding-JDBC是一个开源的数据库中间件,用于实现数据库分片和读写分离。它通过在应用程序和底层数据库之间添加一个透明的中间层来实现数据分片和路由。下面是一个简单的示例,展示了如何在Java应用程序中使用Sharding-JDBC:添加依赖项:在您的项目的构建文件(例如pom.xml)中,添加Shard......
  • leetcode 566. Reshape the Matrix
    InMATLAB,thereisaveryusefulfunctioncalled'reshape',whichcanreshapeamatrixintoanewonewithdifferentsizebutkeepitsoriginaldata.You'regivenamatrixrepresentedbyatwo-dimensionalarray,andtwopositiveintegersr......
  • SSH公钥配置-Github
    配置SSH,拉取远程git仓库代码1.查看~/.ssh目录是否存在,如果存在,则说明已存在SSHKey,跳到第3步2.生成公钥文件~/.ssh目录不存在时,执行如下命令:ssh-keygen-trsa-C"[email protected]",接下来一直回车即可。如果要指定公钥名称,例如:ssh-keygen-trsa-C"[email protected]"-f~/.s......
  • SwiftUI 使用contentShape()控制点击区域
    当我们向一个view添加TapGesture时,就会发现“有内容”的区域是可以点击的。“有内容”指的是有图片、文字、背景颜色的区域。而空白区域,是不能触发点击回调的。比如:structContentView:View{varbody:someView{VStack(spacing:124){Image(sys......
  • 源码编译安装openssh 最新版
    #创建几个目录备用mkdir-p/usr/local/zlib/mkdir-p/usr/local/openssl/mkdir-p/usr/local/openssh/ #安装编译需要用到的依赖包yum-yinstallwgetdnfvimgccgcc-c++makeperlpam-devel #下载相关源码包cd/rootwgethttps://ftp.openbsd.org/pub......
  • 帆软决策报表tab 多sheet导出
    新建cpt普通报表,将多tab语句放入在决策报表自定义导出按钮,定义导出事件`varurl="${servletURL}?viewlet=xx/进销存日报导出.cpt"varregion=this.options.form.getWidgetByName("regioncode").getValue();varcity=this.options.form.getWidgetByName("citycode").get......
  • hj_podman_jenkins_maven_git_springboot_ssh一键部署项目
    podmanpulljenkins/jenkins:jdk17podmanrun-d--privileged=true\-uroot--namejenkins_jdk17_8081\-p8081:8080-p50001:50000\-v/hj_files/jenkins_jdk17:/var/jenkins_home\a307650508c6http://105.35.260.230:8081/ 安装好推荐配置后.再安装俩插件  Mave......
  • 利用akshare接口进行数据抓取
    akshare地址:https://www.akshare.xyz/data/index.html常用的包导入:importakshareasakimportnumpyasnpimportpandasaspdfromdatetimeimportdatetimeimportmatplotlib.pyplotaspltimportmplfinanceasmpffrompylabimportmplmpl.rcParams['font.san......
  • Photoshop 2023 Beta 内置Ai绘图功能介绍&安装教程
    距离Adobe软件公司首次将图像编辑及数字绘画软件Photoshop推出到大众面前已经过去35年,最近该公司又再次书写了属于Photoshop的历史新篇章。最近,Adobe宣布Photoshop(Beta)迎来更新,新增「创意填充(GenerativeFill)」功能,生成式AI绘图由AdobeFirefly提供支持,Adobe的创意生成AI模型系......