用acme.sh给网站域名,申请免费SSL永久证书(自动续期)

这篇具有很好参考价值的文章主要介绍了用acme.sh给网站域名,申请免费SSL永久证书(自动续期)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一:简介

申请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:在线安装方式

安装很简单, 一个命令:

curl  https://get.acme.sh | sh -s email=my@example.com

或者

wget -O -  https://get.acme.sh | sh -s email=my@example.com

这里的-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 my@example.com

安装完成后,在账号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;
    }
}

配置域名目录为/www/test.ywbj.cc,在此目录创建一个index.html文件测试,然后重启nginx。
配置完,浏览器打开test.ywbj.cc,可以看到域名提示不安全,没有https.
acme.sh,运维笔记,ssl,服务器,https,ubuntu,运维

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,运维笔记,ssl,服务器,https,ubuntu,运维

如果有多个域名,同一个证书中的多个域。

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的目录下。
acme.sh,运维笔记,ssl,服务器,https,ubuntu,运维

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"

acme.sh,运维笔记,ssl,服务器,https,ubuntu,运维

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个月。
acme.sh,运维笔记,ssl,服务器,https,ubuntu,运维
目前证书在 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

SAN多域ECC证书

acme.sh --issue -w /home/wwwroot/example.com -d example.com -d www.example.com --keylength ec-256

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://www.toymoban.com/news/detail-816860.html

到了这里,关于用acme.sh给网站域名,申请免费SSL永久证书(自动续期)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • StartSSL申请图文全过程 让网站拥有免费SSL证书

    如果我们有需要搭建交易类的网站肯定有需要用到SSL证书才显得你的网站安全和正规(肯定也是需要安全的),一般的商家SSL都是需要花钱才可以购买,最为便宜的SSL证书连带域名一起购买应该是NAMECHEAP商家只需要1.99美金左右(如果没有记错),但是作为一般的站长来说如果

    2024年02月07日
    浏览(59)
  • OpenWrt 在没有80\443端口、不能dns验证的情况下为自己的域名申请免费ssl证书

    本方法适用于使用OpenWrt 在没有80443端口、不能dns验证的情况下为自己的域名申请免费ssl证书。 提示: 1、如果你的网络的80或者443端口是开放状态,可直接使用https://letsencrypt.org/进行ssl申请,使用acme.sh脚本可快速完成。 2、如果你的网络ddns服务提供商服务到位,可以使用d

    2024年02月04日
    浏览(90)
  • acme.sh自动配置免费SSL泛域名证书并续期(Aliyun + Debian + nginx)

    以前使用Certbot自动配置SSL证书,需要安装snap管理器再安装Certbot,期间还要去找AliDNS脚本,比较麻烦。如果不想如此,推荐使用acme.sh自动化脚本,更方便快捷。 1. 安装acme.sh 脚本会安装home目录下:~/.acme.sh/。同时会创建一个cronjob,每天检测证书,快过期自动更新。 2. 更换证

    2024年02月04日
    浏览(46)
  • eu.org申请免费域名 免费域名申请教程

    EU.org是由Paul Mockapetris在1996年创建的免费域名服务,给没有资金买域名的个人或公司提供永久免费的域名。虽然是二级域名,但是已经被一些网络公司(当然是国外的)认定为顶级域名。 优点:稳定性高、几乎没有限制、支持修改NS 缺点:需要人工审核通过,只有英文界面,

    2024年02月06日
    浏览(56)
  • 站长公益主机,免费主机➕免费域名➕博客申请➕论坛申请

    站长公益主机,免费主机➕免费域名➕博客申请➕论坛申请 在出教程之前准备好久,测试搭建轻量论坛无压力 选用稳定免费域名➕免费主机分销给,可以套CDN使用 坚持免费时间是大厂不能媲美,刚开始做网站时用的是这个分销,独立会员控制面板,大方简洁 参考地址:ht

    2024年02月13日
    浏览(47)
  • Freenom申请免费域名

    一枚邮箱 1.点击这里,查看你自己的IP所在国家 2.打开Freenom官网 3.依次点击“Partners”→“Developers” 4.把网页往下拉,点击绿色的“Get a Random Domains Account today!” 5.输入邮箱地址,然后点击“Verify my Email address” 6.检查收件箱内的Freenom激活邮件 7.在弹出的网页中,输入你自己

    2024年02月06日
    浏览(48)
  • 免费域名申请

    title: 免费域名申请 20230428153405|left 🌈 Description : ​ 本文将介绍如何免费申请域名,在最近的折腾中发现,域名真的很重要,不然好多服务是无法访问的。 备注 :由于freenom基于技术原因,暂时停止免费域名的申请,所以最后作者是在阿里云里面花了6块钱申请了域名。 Fr

    2024年02月02日
    浏览(45)
  • 申请Freenom免费顶级域名的正确做法

    申请Freenom免费顶级域名的正确做法 - 南岩のBlog https://blog.nanyan.cc/posts/f3a0.html 申请Freenom免费顶级域名的正确做法 - 知乎 https://zhuanlan.zhihu.com/p/157588083 对于新手个人站长,买一个几十块甚至几百块的域名显然不太合适。所以,Freenom出现了。它能帮我们免费注册.ga .ml .tk .gq .c

    2023年04月08日
    浏览(41)
  • 免费域名证书最新申请方式大全

    目前市场环境下,可获得域名SSL证书的方式有很多,一般有付费和免费划分。对于想免费使用域名SSL证书的朋友,这里收集整理了几个常用的SSL证书申请方式。 对于SSL证书的用处,简单的来说,就是加密数据传输,使得数据更加安全不被篡改。而且如果不给自己的网站配置

    2023年04月14日
    浏览(52)
  • 免费SSL申请和自动更新

    centos 安装 centos安装文档 默认3个月有效期 命令比较简单 用chatgpt做下命令拆解注释 参考博客 https://ganzhixiong.com/p/95b00866/ letsencrypt官网

    2024年01月24日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包