使用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,一经查实,立即删除!

相关文章

十、封装python3读写ini文件类

自己编写封装的python3读写ini文件类。 main.py # -*- coding: utf-8 -*- import os import configparserclass OperateIniFile:"""python操作ini文件类"""def __init__(self, strOpenFileName):"""初始化"""sel…

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

QT5 C++编写B类IP地址计算第一个可用IP地址、最后一个可用IP地址、网络号、广播地址、子网数、主机数

B类地址&#xff0c;斜线记法&#xff0c;192.168.60.1/24其中192.168.10.1是IP字符串strIP&#xff0c;24是子网掩码1的个数nSubnetMas&#xff0c;其中要求18<nSubnetMas<30 #include "qdlgiptool.h" #include "ui_qdlgiptool.h" #include <QD…

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

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

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

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

机器翻译软件从实验室走向市场

机器翻译软件从实验室走向市场 冯志伟 机器翻译研究如何用计算机来进行不同自然语言之间的翻译&#xff0c;它是自然语言计算机处理的一个历史悠久的部门&#xff0c;是横跨语言学、数学、计算机科学的综合性学科&#xff0c;也是计算机软件应用的一个重要领域…

八、python编写IP地址计算第一个可用IP地址、最后一个可用IP地址、网络号、广播地址、主机数

# IP子网掩码转为子网掩码有多少个1的整数,例如:"255.255.255.0"有24个1 def strNetmask2nNetmask(strNetmask: str) -> int:result = ""print(strNetmask)for num in strNetmask.split(

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

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

负载均衡实现的几种方式

负载均衡&#xff0c;英文名Load Balance&#xff0c;作用是将操作分摊到多个执行单元上执行。随着如今网络流量的不断增大&#xff0c;服务的负载均衡是必须的&#xff0c;这里就来讲一讲负载均衡的结构。 说到负载均衡&#xff0c;同学最容易想到的可能就是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;帮助您…

javascript加载优化

1.将script放置在尽可能接近body标签底部的位置2.减少script总数3.defer 对应的script标签会被下载但不会被执行在onload句柄之前执行&#xff0c;但只兼容IE4 ff3.54.动态创建script 无论合适加载执行都不会影响页面加载转载于:https://www.cnblogs.com/qingw/p/3636304.html