热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

通过acme.sh申请Let'sEncrypt泛解析SSL证书

1、Let'sEncrypt申请过SSL证书的人应该对Let'sEncrypt这个证书颁发机构不陌生,它免费,而且也被各大浏览器所支持和认可.但一般我们申请到的都单

1、Let‘s Encrypt

申请过SSL证书的人应该对Let‘s Encrypt这个证书颁发机构不陌生,它免费,而且也被各大浏览器所支持和认可.但一般我们申请到的都单域或双域(www和主域名)的证书.这样一来,我们需要做全站SSL的工作量就会超级大!有没有一个办法,像DNS解析一样,用*.staryjie.com的方式,让全站共用一个SSL证书。


2、安装acme.sh

acme.sh是一个实现了 acme 协议的脚本,可以从 Let‘s Encrypt 生成我们需要的泛解析SSL证书.当然,你用来生产普通证书也是没有问题的。

本文仅对使用域名提供/解析商的 API Token 来自动申请泛域名证书的过程进行讲解,acme.sh还有很多很强大的功能例如配合 Nginx 或者 Apache 自动申请证书等,请自行查看 github 项目 wiki 发掘。

项目链接:Github - acme.sh

安装方法:

curl https://get.acme.sh | sh
# 或者
wget -O- https://get.acme.sh | sh

安装过程中可能会出现要你安装socat的警告,可以忽略。


技术图片

安装过程不会修改已有的任何系统功能和文件,请放心食用. acme.sh在程序结束后会被自动安装到~/.acme.sh/目录中,你也可以随时删除该目录,不会影响到系统。


3、获取API Token

由于acme.sh对域名解析/提供商的支持十分广泛,所以请针对自己所在的域名提供商获取对应的API Token。
支持列表:点我跳转

国内目前使用较多的是腾讯云和阿里云,获取API Token的方法分别是:



  • 腾讯的DNSPod

    登录DNSPod,进入顶部导航栏里的用户中心,在左侧的导航栏里,找到安全设置,看到页面的最下面,有个API Token.点击查看->创建API Token->填写Tokens名称,复制好ID与Token即可.保存待用。



  • 阿里云域名

    需要登录到阿里云官网获取Ali_Key和Ali_Secret。点击此处跳转




4、配置acme.sh

获取到对应的API Token之后我们需要将id和key设置为环境变量,供acme.sh调用:

# DNSPod
export DP_Id="你的 API ID"
export DP_Key="你的 Token"
# aliyun
export Ali_Key="你的 AccessKey ID"
export Ali_Secret="你的 AccessKey Secret"

如果你的域名提供商不是DNSPod或者阿里云,其他域名提供商变量名一览表:点我查看

临时环境变量只需配置这一次即可,当成功申请证书后,API 信息会被自动保存在~/.acme.sh/account.conf里,下次你使用acme.sh的时候系统会自动读取并使用。


5、申请泛域名解析证书

# DNSPod
cd ~/.acme.sh/
# 或者 alias acme.sh=~/.acme.sh/acme.sh
acme.sh --issue -d example.com -d *.example.com --dns dns_dp
# 多个域名只需要"-d 你的域名"即可
# aliyun
cd ~/.acme.sh/
# 或者 alias acme.sh=~/.acme.sh/acme.sh
acme.sh --issue --dns dns_ali -d example.com -d *.example.com

注意:不同的域名解析商所用命令有细微不同!如果你的提供商不是DNSPod,请自行去上面的链接查看!


申请完成后屏显会输出证书路径。

技术图片

可能会遇到的报错:

技术图片

解决办法:

# 升级curl
yum install -y curl

如果升级curl之后还是如上图的报错,则可以尝试修改域名的DSN设置:

技术图片

修改之后需要等十分钟左右。


6、将证书安装到指定的目录

默认生成的证书都放在安装目录下: ~/.acme.sh/,这个目录一般来说不能让nginx或Apache直接使用。所以我们需要将证书放到一个指定的目录,scrm用nginx配置,本例是指定在/etc/nginx/ssl/目录下。

mkdir /etc/nginx/ssl
acme.sh --installcert -d staryjie.com --keypath /etc/nginx/ssl/staryjie.com.key --fullchainpath /etc/nginx/ssl/staryjie.com.key.pem --reloadcmd "service nginx force-reload"

技术图片


7、配置NGINX使用证书


7.1 生成 dhparam.pem 文件

openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048

技术图片


7.2 修改nginx配置文件

/etc/nginx/conf.d/bark.conf

server {
listen 80 default_server;
listen [::]:80 default_server;
listen 443 ssl;
server_name notice.staryjie.com;
ssl_certificate /etc/nginx/ssl/staryjie.com.key.pem;
ssl_certificate_key /etc/nginx/ssl/staryjie.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://127.0.0.1:8888;
}
}

重载配置文件:

systemctl reload nginx.service

测试:

技术图片


8、证书更新

Let s Encrypt 的证书有效期是 90 天的,需要定期重新申请,不过acme在安装的时候就已经设置了自动更新,所以这一步不用关心,很省心。

目前证书在 60 天以后会自动更新, 你无需任何操作. 今后有可能会缩短这个时间, 不过都是自动的, 你不用关心。


9、acme.sh的自动更新

acme.sh --upgrade --auto-upgrade

关闭自动更新:

acme.sh --upgrade --auto-upgrade 0

10、参考



  • acme.sh官方文档

通过acme.sh申请Let's Encrypt泛解析SSL证书



推荐阅读
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文介绍了指针的概念以及在函数调用时使用指针作为参数的情况。指针存放的是变量的地址,通过指针可以修改指针所指的变量的值。然而,如果想要修改指针的指向,就需要使用指针的引用。文章还通过一个简单的示例代码解释了指针的引用的使用方法,并思考了在修改指针的指向后,取指针的输出结果。 ... [详细]
  • nginx+多个tomcat
    学习nginx的时候遇到的问题:nginx怎么部署两台tomcat?upstream在网上找的资源,我在nginx配置文件(nginx.conf)中添加了两个server。结果只显 ... [详细]
  • 本文内容为asp.net微信公众平台开发的目录汇总,包括数据库设计、多层架构框架搭建和入口实现、微信消息封装及反射赋值、关注事件、用户记录、回复文本消息、图文消息、服务搭建(接入)、自定义菜单等。同时提供了示例代码和相关的后台管理功能。内容涵盖了多个方面,适合综合运用。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • MACElasticsearch安装步骤及验证方法
    本文介绍了MACElasticsearch的安装步骤,包括下载ZIP文件、解压到安装目录、启动服务,并提供了验证启动是否成功的方法。同时,还介绍了安装elasticsearch-head插件的方法,以便于进行查询操作。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 解决php错误信息不显示在浏览器上的方法
    本文介绍了解决php错误信息不显示在浏览器上的方法。作者发现php中的各种错误信息并不显示在浏览器上,而是需要在日志文件中查看。为了解决这个问题,作者提供了一种解决方式:通过修改php.ini文件中的display_errors参数为On,并重启服务。这样就可以在浏览器上直接显示php错误信息了。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • 华为和阿里VPN
    阿里云创建VPN1、 创建VPN网关2、 填写名称,选择对应的VPC,不指定交换机,选择带宽3、购买的是IPSEC-VPN不开启SSLVPN,点击立即购买 4、 创建客户网关  ... [详细]
author-avatar
Bboy龙超
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有