使用ACME部署生成阿里云免费HTTPS证书

使用ACME部署HTTPS证书

背景

现在越来越多的服务都是基于web,大多数默认使用HTTP协议。HTTP协议是一种没有加密的协议,所有数据都通过明文传输,即便是只在内网使用也存在一定的安全风险。尤其是对于登录等操作,账号密码通过HTTP协议明文传输是非常不安全的。

而HTTPS协议使用非对称加密的方式对数据进行加密,可以让数据传输变得更加安全可靠。而将HTTP协议切换成HTTPS协议,只需要增加TSL证书即可。

本文使用ACME工具来生成TSL证书,并将TSL证书部署应用于WEB服务,从而实现支持HTTPS协议的WEB服务。

ACME

ACME是The Automatic Certificate Management Environment的缩写,详情可以参阅其 GITHUB官方链接,并且有 中文说明。

ACME主要有以下几个功能

  • 向Let’s Encrypt申请证书
  • 支持包括阿里云在内的多个平台,通过多种接口为域名增加TXT解析
  • 将证书部署于web服务
  • 自动更新证书

安装ACME

只需要一行命令就可以安装ACME

$ curl https://get.acme.sh | sh

或者

$ wget -O -  https://get.acme.sh | sh

安装一共包括下面几个步骤

  • 将acme.sh脚本复制到~/.acme.sh路径下
  • 在当前用户的SHELL环境配置文件中增加acme.sh=~/.acme.sh/acme.sh
  • 添加一项crontab定时任务

获取域名服务商的远程管理密钥

以阿里云为例,在用户的管理台中,找到AccessKey,安全起见可以增加一个子用户,并给该子用户添加管理云解析(DNS)的权限

记住AccessKeyID和AccessKeySecret,并运行下面的命令添加相应环境变量

export Ali_Key="AccessKeyID"
export Ali_Secret="AccessKeySecret"

申请证书

在同一个terminal中继续输入下面的命令来生成证书,记得把example.com改成自己的域名

~/.acme.sh/acme.sh --issue --dns dns_ali -d example.com -d *.example.com

注意查看程序运行日志,正常情况可以看到新生成证书的路径。

自动部署

自动把证书部署于WEB服务。

~/.acme.sh/acme.sh --installcert -d example.com \
--key-file /path/to/keyfile \
--fullchain-file /path/to/fullchain \
--reloadcmd "/etc/init.d/uhttpd restart"

本文以OPENWET的管理页面为例,

~/.acme.sh/acme.sh --installcert -d example.com \
--keypath /etc/uhttpd.key \
--fullchainpath /etc/uhttpd.crt \
--reloadcmd "/etc/init.d/uhttpd restart"

自动更新

在安装ACME时就创建了一条crontab定时任务,每天凌晨检查证书是否过期,如果过期的话就会重新申请并自动部署。

前面使用过的申请证书和自动部署的两条命令在运行之后都会记录下来,将来在证书自动更新时就会执行同样的的命令和参数。例如自动部署的命令就保存于~/.acme.sh/example.com目录下的example.com.conf文件里,reloadcmd命令是以base64编码后的形式保存的。

所以只要确保上面申请证书和自动部署的两部操作都正确无误就可以了,后续的更新都会自动进行,不需要额外的操作。

参考文章

自动化部署证书 acme.sh 详细实践使用教程

使用acme.sh实现海量域名SSL证书自动申请与更新

任何程序错误,以及技术疑问或需要解答的,请添加

​​​​​​​

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/546744.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java性能优化的50个细节(珍藏版)

来源:http://t.cn/EMze6kc在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身。养成良好的编码习惯非常重要,能够显著地提升程序性能。1. 尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加载…

强化学习基础篇 OpenAI Gym 环境搭建demo

1. Gym介绍 Gym是一个研究和开发强化学习相关算法的仿真平台,无需智能体先验知识,由以下两部分组成 Gym开源库:测试问题的集合。当你测试强化学习的时候,测试问题就是环境,比如机器人玩游戏,环境的集合就…

九、PyQt5 QLineEdit输入的子网字符串校验QRegExp

自己编写的用于对lineEdit编辑框输入的子网,例如:192.168.60.1/24字符串校验是否合规。 # 限制lineEdit编辑框只能输入./字符和数字reg = QRegExp([0-9./]+$)validator = QRegExpValidator(self)validator.setRegExp(reg)self.lineEditSubNet.setValidator(validator)

为什么阿里巴巴不建议在for循环中使用+进行字符串拼接

本文,也是对于Java中字符串相关知识的一个补充,主要来介绍一下字符串拼接相关的知识。本文基于jdk1.8.0_181。字符串拼接字符串拼接是我们在Java代码中比较经常要做的事情,就是把多个字符串拼接到一起。我们都知道,String是Java中…

Google强化学习框架SEED RL环境部署

如上述博客有任何错误或者疑问,请加VX:1755337994,及时告知!万分感激! 本框架是Google发布于ICLR2020顶会上,这两天发布于Google Blog上 **论文Arxiv:**https://arxiv.org/abs/1910.06591 ||…

PLSQL连接oracel数据库_用户无法登陆_oci.dll_配置问题

为什么80%的码农都做不了架构师?>>> 由于工作需要换了台新电脑,在抚摸新笔记本满怀新鲜感和喜悦心情之余(其实纯屌丝味尽显无余,就基本和双手捧托一颗高大上的茶叶蛋般内心激动且泪眼汪汪),重新…

CentOS7搭建部署Ambari 2.6.2.0最新版(HDP-UTILS、HDP-GPL)大数据平台

如上述博客有任何错误或者疑问,请加VX:1755337994,及时告知!万分感激! 注:本文基于root用户操作 一、安装环境准备 操作系统 centos7.5 hdc-data1:192.168.163.51 hdc-data2:192.16…

阿里面试题BIO和NIO数量问题附答案和代码

一、问题 BIO 和 NIO 作为 Server 端,当建立了 10 个连接时,分别产生多少个线程? 答案: 因为传统的 IO 也就是 BIO 是同步线程堵塞的,所以每个连接都要分配一个专用线程来处理请求,这样 10 个连接就会创建…

CentOS7搭建离线部署Cloudera CDH 6.2.0大数据平台

如上述博客有任何错误或者疑问,请加VX:1755337994,及时告知!万分感激! 1.概述 CDH,全称Clouderas Distribution, including Apache Hadoop。是Hadoop众多分支中对应中的一种,由Cloudera维护&a…

负载均衡实现的几种方式

负载均衡,英文名Load Balance,作用是将操作分摊到多个执行单元上执行。随着如今网络流量的不断增大,服务的负载均衡是必须的,这里就来讲一讲负载均衡的结构。 说到负载均衡,同学最容易想到的可能就是nginx了&…

CheckBox as Image use button

为什么80%的码农都做不了架构师&#xff1f;>>> <CheckBox android:id"id/notificationPhoneIcon" android:layout_width"wrap_content" android:layout_height"wrap_content" android:layout_centerVertical"true" an…

1-1.Win10系统利用Pycharm社区版安装Django搭建一个简单Python Web项目的步骤之一

首先&#xff0c;安装python3.8和pycharm参考其他教程。 一、安装django 使用下面命令默认安装最新版的django pip install django也可以从django官网查看安装一个LTS长期稳定支持版本&#xff0c;从下图看到3.2是LTS版本&#xff0c;能够长期支持2021年&#xff5e;2024年&…

python装饰器函数传参

python装饰器函数传参 装饰器 装饰器是一个返回函数的高阶函数。 装饰器常见用法&#xff1a; 打印日志 def logger(func):def wrapper(*args, **kw):print do {}.format(func.__name__)func(*args, **kw)print finishreturn wrapperlogger def add(x,y):print {} {} {}.…

Tomcat工作原理及简单模拟实现

Tomcat应该都不陌生&#xff0c;我们经常会把写好的代码打包放在Tomcat里并启动&#xff0c;然后在浏览器里就能愉快的调用我们写的代码来实现相应的功能了&#xff0c;那么Tomcat是如何工作的&#xff1f;一、Tomcat工作原理我们启动Tomcat时双击的startup.bat文件的主要作用是…

苹果怎么调字体大小?详细教程在这,赶快get起来!

在我们使用苹果手机时&#xff0c;可能会遇到需要调整字体大小的情况。合适的字体大小能够提高阅读体验和舒适度&#xff0c;使得手机使用更加便捷。然而&#xff0c;还有很多用户并不知道苹果怎么调字体大小。别着急&#xff01;本文将为您详细介绍操作方法&#xff0c;帮助您…

PyQt5树形结构控件QTreeWidget操作

QTreeWidget 类根据预设的模型提供树形显示控件。 QTreeWidget 使用类似于 QListView 类的方式提供一种典型的基于 item 的树形交互方法类&#xff0c;该类基于QT的“模型/视图”结构&#xff0c;提供了默认的模型来支撑 item 的显示&#xff0c;这些 item 类为 QTreeWidgetIt…

Python3之logging输出写入日志

Python3之logging模块浅析 目录 Python3之logging模块浅析 简单用法日志与控制台同时输出 一个同时输出到屏幕、文件的完成例子日志文件截取日志重复打印问题解决 问题分析解决方案 1.使用不同的日志对象2.及时清理&#xff08;logger.handlers.clear&#xff09;3.使用前先判…

HashMap线程安全问题

HashMap是线程不安全的&#xff0c;在多线程环境下对某个对象中HashMap类型的实例变量进行操作时&#xff0c;可能会产生各种不符合预期的问题。本文详细说明一下HashMap存在的几个线程安全问题。注&#xff1a;以下基于JDK1.8HashMap原理请走传送门通过简单例子来探索HashMap原…

四、PyCharm PyQt5创建主窗口详细教程

1.打开PyCharm,新建工程MyMainTest 2.按照Tools-External Tools-QtDesigner,打开QT设计界面,保存窗体文件。

java8 lambda表达式实现自定义用户组件,Don't Repeat Yourself

2019独角兽企业重金招聘Python工程师标准>>> 一、用户组件的功能 使用java8 lambda表达式实现实现世界的一个例子&#xff1a;用户组件。此用户组件有以下几个操作&#xff1a;获取用户列表&#xff0c;获取单个用户&#xff0c;增加用户&#xff0c;删除用户&am…