如何在Debian 8上使用Let‘s Encrypt保护Apache
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
简介
本教程将向您展示如何在运行 Apache 作为 Web 服务器的 Debian 8 服务器上设置来自 Let’s Encrypt 的 TLS/SSL 证书。我们还将介绍如何使用定时作业自动更新证书。
SSL 证书在 Web 服务器内部使用,用于加密服务器和客户端之间的流量,为访问您的应用程序的用户提供额外的安全性。Let’s Encrypt 提供了一种轻松获取和安装免费受信任证书的方式。
先决条件
要完成本指南,您需要一个具有非根 sudo
用户以执行管理任务的 Debian 8 服务器。您可以按照我们的 Debian 8 初始服务器设置指南设置具有适当权限的用户。
您必须拥有或控制要在证书中使用的注册域名。如果您尚未拥有注册域名,可以通过许多域名注册商(例如 Namecheap、GoDaddy 等)注册一个。
如果尚未完成,请确保创建一个将您的域指向服务器的 A 记录(如果您使用 DigitalOcean 的 DNS,则可以按照此指南操作)。这是必需的,因为 Let’s Encrypt 验证您拥有要发放证书的域的方式。例如,如果您想为 example.com
获取证书,则该域必须解析到您的服务器才能使验证过程正常工作。我们的设置将使用 example.com
和 www.example.com
作为域名,因此 两个 DNS 记录都是必需的。
当您准备好继续时,请使用您的 sudo 帐户登录服务器。
步骤 1:安装 Let’s Encrypt 客户端 Certbot
使用 Let’s Encrypt 获取 SSL 证书的第一步是在服务器上安装 certbot
Let’s Encrypt 客户端。
在 Debian 8 发布时,certbot
软件包尚不可用。要访问 certbot
软件包,我们需要在服务器上启用 Jessie 回退存储库。此存储库可用于安装比稳定存储库中包含的更近期版本的软件。
通过输入以下命令将回退存储库添加到服务器:
echo 'deb http://ftp.debian.org/debian jessie-backports main' | sudo tee /etc/apt/sources.list.d/backports.list
添加新存储库后,更新 apt
软件包索引以下载有关新软件包的信息:
sudo apt-get update
存储库更新后,您可以通过定位回退存储库来安装 python-certbot-apache
软件包,该软件包会拉取 certbot
:
sudo apt-get install python-certbot-apache -t jessie-backports
certbot
客户端现在应该已准备就绪。
步骤 2:设置 Apache ServerName 和 ServerAlias
在调用 certbot
实用程序时,可以将希望保护的域作为参数传递。但是,certbot
也可以从 Apache 配置中读取这些域。由于始终明确服务器应响应的域是一个良好的做法,我们将直接在 Apache 配置中设置 ServerName
和 ServerAlias
。
安装 python-certbot-apache
服务时,如果系统上尚未安装 Apache,则会安装 Apache。打开默认的 Apache 虚拟主机文件,以便我们可以明确设置我们的域名:
sudo nano /etc/apache2/sites-available/000-default.conf
在其中,在虚拟主机块内,添加或取消注释 ServerName
指令,并将其设置为您的主域名。可以使用 ServerAlias
指令添加任何此服务器还应响应的替代域名。
在我们的示例中,我们使用 example.com
作为我们的规范名称,www.example.com
作为别名。设置这些指令后,将如下所示:
<VirtualHost *:80>. . .ServerName example.comServerAlias www.example.com. . .
</VirtualHost>
完成后,通过按住 CTRL 并按 X 键来保存并关闭文件。键入 Y 并按 Enter 保存文件。
检查配置文件以捕获可能由更改引入的任何语法错误:
sudo apache2ctl configtest
在输出中查找以下行:
Syntax OK
如果文件通过了语法测试,请重新启动 Apache 服务以实施更改:
sudo systemctl restart apache2
现在,Apache 已配置为使用您的域名,我们可以使用 certbot
获取我们的 SSL 证书。
步骤 3:调整防火墙
如果你启用了防火墙,你需要调整设置以允许 SSL 流量。所需的步骤取决于你正在使用的防火墙软件。如果你当前没有配置防火墙,可以跳过此步骤。
UFW
如果你使用 ufw,可以通过输入以下命令查看当前设置:
sudo ufw status
可能会显示如下内容,表示只允许 SSH 流量访问 Web 服务器:
状态:activeTo Action From
-- ------ ----
SSH ALLOW Anywhere
SSH (v6) ALLOW Anywhere (v6)
为了额外允许 HTTP 和 HTTPS 流量,我们可以允许“WWW Full”应用程序配置:
sudo ufw allow 'WWW Full'
现在你的状态应该是这样的:
sudo ufw status
状态:activeTo Action From
-- ------ ----
SSH ALLOW Anywhere
WWW Full ALLOW Anywhere
SSH (v6) ALLOW Anywhere (v6)
WWW Full (v6) ALLOW Anywhere (v6)
现在你的服务器应该能够接受 HTTP 和 HTTPS 请求。
IPTables
如果你使用 iptables
,可以通过输入以下命令查看当前规则:
sudo iptables -S
如果你已经启用了任何规则,它们将被显示出来。一个示例配置可能如下所示:
-P INPUT DROP
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
打开 SSL 流量所需的命令将取决于你当前的规则。对于像上面示例配置一样的基本规则集,你可以通过输入以下命令添加 SSL 访问:
sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT
如果我们再次查看防火墙规则,应该会看到新的规则:
sudo iptables -S
-P INPUT DROP
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
如果你使用程序在启动时自动应用 iptables
规则,你需要确保更新你的配置以包含新的规则。
步骤 4:设置 SSL 证书
使用 Let’s Encrypt 客户端为 Apache 生成 SSL 证书非常简单。该客户端将自动获取并安装一个新的 SSL 证书,该证书对 Apache 配置中的域名有效。
要执行交互式安装并为 Apache 配置中定义的所有域名获取证书,输入以下命令:
sudo certbot --apache
certbot
实用程序将评估你的 Apache 配置,以查找应该包含在请求的证书下的域名。你将能够取消选择任何你不希望包含在证书下的已定义域名。
你将被呈现一个逐步指南,以自定义你的证书选项。你将被要求提供一个用于丢失密钥恢复和通知的电子邮件地址,并且你将能够选择启用 http
和 https
访问,或者强制所有请求重定向到 https
。通常最安全的做法是要求 https
,除非你有特定需要使用未加密的 http
流量。
安装完成后,你应该能够在 /etc/letsencrypt/live
找到生成的证书文件。你可以通过以下链接验证你的 SSL 证书状态(不要忘记将 example.com 替换为你的域名):
https://www.ssllabs.com/ssltest/analyze.html?d=example.com&latest
测试可能需要几分钟才能完成。现在你应该能够使用 https
前缀访问你的网站。
步骤 5:设置自动续订
Let’s Encrypt 证书有效期为 90 天,但建议你每 60 天续订一次证书,以留有错误的余地。certbot
客户端有一个 renew
命令,它会自动检查当前安装的证书,并在距离到期日期不足 30 天时尝试续订它们。
要触发所有已安装域名的续订过程,你应该运行:
sudo certbot renew
因为我们最近安装了证书,该命令只会检查到期日期并打印一条消息,通知证书尚未到期续订。输出应该类似于这样:
Saving debug log to /var/log/letsencrypt/letsencrypt.log-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/example.com.conf
-------------------------------------------------------------------------------
Cert not yet due for renewalThe following certs are not due for renewal yet:/etc/letsencrypt/live/example.com/fullchain.pem (skipped)
No renewals were attempted.
请注意,如果你创建了包含多个域名的捆绑证书,输出中只会显示基本域名,但续订应该适用于此证书中包含的所有域名。
确保你的证书不会过期的一个实用方法是创建一个定期执行自动续订命令的 cron 作业。由于续订首先检查到期日期,并且只有在证书距离到期不足 30 天时才执行续订,因此可以安全地创建一个每周甚至每天运行一次的 cron 作业。
让我们编辑 crontab 创建一个新的作业,每周运行续订命令。要编辑 root 用户的 crontab,请运行:
sudo crontab -e
可能会提示你选择编辑器:
no crontab for root - using an empty oneSelect an editor. To change later, run 'select-editor'.1. /bin/nano <---- easiest2. /usr/bin/vim.basic3. /usr/bin/vim.tinyChoose 1-3 [1]:
除非你更喜欢使用 vim
,否则按 Enter 使用默认的 nano
。
在 crontab 的末尾包含以下内容,全部在一行中:
[secondary_label crontab]
. . .
30 2 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log
保存并退出。这将创建一个新的 cron 作业,每周一凌晨 2:30 执行 letsencrypt-auto renew
命令。命令产生的输出将被重定向到位于 /var/log/le-renewal.log
的日志文件中。
结论
在本指南中,我们学习了如何安装来自 Let’s Encrypt 的免费 SSL 证书,以确保 Apache 托管的网站的安全性。我们建议您定期查看官方 Let’s Encrypt 博客,以获取重要的更新信息。
相关文章:
如何在Debian 8上使用Let‘s Encrypt保护Apache
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 本教程将向您展示如何在运行 Apache 作为 Web 服务器的 Debian 8 服务器上设置来自 Let’s Encrypt 的 TLS/SSL 证书。我们还将介…...
百科知识|选购指南
百科知识||选购指南 百科知识选购指南茶叶分类茶叶的味道来源茶叶制作步骤名茶其他一些茶叶的知识 百科知识 选购指南 茶叶 分类 茶叶种类: 六大茶类完美分析介绍!茶友推荐收藏 (aboxtik.com) 1.绿茶(发酵率0%) 2.白茶(发酵率…...
Go 语言基础教程:4.常量的使用
在这篇教程中,我们将通过一个简单的 Go 语言程序来学习常量的声明和使用。以下是我们要分析的代码: package mainimport ("fmt""math" )const s string "constant"func main() {fmt.Println(s)const n 500000000const …...
centos服务器重启后,jar包自启动
第一种方法: systemctl服务自启动 在/usr/lib/systemd/system目录下,创建service:start_jar.servie [Unit] DescriptionYour Java Application as a Service Afternetwork.target[Service] Userroot Typesimple ExecStart/usr/bin/java -j…...
华为云实战杂记
配置nginx服务器 首先我们拿到一台服务器时,并不知道系统是否存在Nginx我们可以在Linux命令行执行如下命令查看 find / -name nginx* find / -name nginx* 查找所有名字以nginx开头的文件或者目录,我们看看系统里面都有哪些文件先,这样可以快…...
Lesson10---list
Lesson10—list 第10章 c的list的使用和实现 文章目录 Lesson10---list前言一、list的初始化二、list的遍历1.迭代器2.范围for 三、list常用的内置函数1.sort(慎用)2.unique3.reverse4.merge5.splice 四、模拟实现1.基本框架2.构造函数3.push_back4. 遍…...
ASP.NET Core 8.0 中使用 Hangfire 调度 API
在这篇博文中,我们将引导您完成将 Hangfire 集成到 ASP.NET Core NET Core 项目中以安排 API 每天运行的步骤。Hangfire 是一个功能强大的库,可简化 .NET 应用程序中的后台作业处理,使其成为调度任务的绝佳选择。继续阅读以了解如何设置 Hang…...
查看linux的版本
在 Linux 系统中,有多种方法可以查看当前系统的版本信息。以下是一些常用的方法: 1. 使用 uname 命令 uname 命令可以显示系统的内核版本和其他相关信息。 uname -a这个命令会输出类似如下的信息: Linux hostname 5.4.0-88-generic #99-U…...
Mysql补充
单例 双重检查锁 class Singleton {private static volatile Singleton instance ;private Singleton() {}public static Singleton getInstance(){if(instance null) {synchronized (Singleto.class) {if(instance null){instance new Singleton() ;}} return instance;} …...
com.baomidou.mybatisplus.extension.service.IService用法详解及使用例子
IService 是 MyBatis-Plus 中的一个接口,提供了通用的 CRUD 操作,简化了数据库操作的代码。下面是 IService 的用法详解及示例代码。 1. 引入依赖 确保在你的 pom.xml 中添加了 MyBatis-Plus 的依赖: <dependency><groupId>co…...
植物健康,Spring Boot来保障
5系统详细实现 5.1 系统首页 植物健康系统需要登录才可以看到首页。具体界面的展示如图5.1所示。 图5.1 系统首页界面 5.2 咨询专家 可以在咨询专家栏目发布消息。具体界面如图5.2所示。 图5.2 咨询专家界面 5.3 普通植物检查登记 普通员工可以对普通植物检查登记信息进行添…...
mac-chrome提示您的连接不是私密连接
一、现象介绍 关闭代理之后就ok打开代理,就会提示您的连接不是私密连接 二、原因 由于代理部分的问题,无法找到正确的网站ip地址 三、解决方法 1、键盘直接输入thisisunsafe,可以继续访问网站,如果还是不对的话,那…...
028.爬虫专用浏览器-抓取#shadowRoot(closed)下的内容
一、什么是Shadow DOM Shadow DOM是一种在web开发中用于封装HTML标记、样式和行为的技术,以避免组件间的样式和脚本冲突。它允许开发者将网页的一部分隐藏在一个独立的作用域内,从而实现更加模块化和可维护的代码结构 二、js操作Shadow DOM // 获取宿…...
Serv00 免费虚拟主机 零成本搭建 PHP / Node.js 网站
本文首发于只抄博客,欢迎点击原文链接了解更多内容。 前言 Serv00 是一个提供免费虚拟主机的平台,包含了 3GB 的存储空间和 512MB 的内存空间,足够我们搭建一个 1IP 的小网站了。同时他还不限制每月的流量,并提供了 16 个数据库&…...
C#里使用ORM访问mariadb数据库
数据库,对于开发人员来说,是必须掌握的内容。 曾经我的老板对我说,只要会数据库的增删查改,就不会没有饭吃。 经过了20年多的工作经历,说明这个是铁的事实,毕竟计算机就是加工数据处理的而设计的。 数据就是信息,信息就是金钱,有了钱就可以有饭吃。 管理数据,就是…...
电商揭秘:商城积分体系简析
引言 商城积分体系划分是一个复杂而细致的过程,它旨在通过积分这一虚拟货币来激励用户行为、提升用户粘性,并促进商城的销售和用户活跃度。以下是对商城积分体系划分的详细解析: 一、积分获取方式 消费积分: 基础积分:…...
[OS] 终端控制(Terminal Control) 暂停执行线程(Suspend Executing Thread)
7. 终端控制(Terminal Control) 在终端中打印信息时,我们可以使用 ANSI 转义序列来控制光标的位置、清除屏幕等操作。\033 是转义字符,用于引导 ANSI 控制码来控制终端显示。可以将它理解为“命令前缀”,后面跟着具体…...
水陆两栖车应对应急事件发挥的作用_鼎跃安全
随着气候变化,城市内涝等问题日益严重。为了应对可能出现的洪水灾害,许多城市开始将水陆两栖车纳入应急救援装备体系。在暴雨引发城市积水时,水陆两栖车可以作为一种高效的救援和运输工具,及时疏散被困群众,运送应急物…...
CI/CD 流水线系统-开源框架Tekton
文章目录 CI/CD 流水线系统-开源框架Tekton什么是TektonTekton优点Tekton 组件介绍Tekton 概念术语 CI/CD 流水线系统-开源框架Tekton 什么是Tekton 官网:https://tekton.dev/ Tekton 是一个强大、灵活的构建 CI/CD 流水线系统的开源框架,允许开发者构建、测试和…...
Spring MVC(下)
博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:MySQL数据库 JavaEE专栏:JavaEE 关注博主带你了解更多JavaEE知识 目录 1.响应 1.1 返回静态页面 1.2 返回数据ResponseBody 1.3 返回HTML代码⽚段 1.4 返回JSON 1.5 设置状态码 1.6 设置Header 2 . …...
开发涉及的安全规范整理
#1024程序员节|征文# 文章目录 前言安全场景与措施API调用方式鉴权参数校验日志打印数据保存加密 总结 前言 这篇文章我们来整理下写代码和方案设计中的安全规范问题,内容偏服务端,即使是入门的新人,如果你对安全有所了解会让成熟…...
驱动开发系列26 - Linux Graphics 调试 mesa 的 glDrawArrays (二)
目录 一:概述 二:Gallium3D 的工作流程 三:tc_draw_vbo 与 tc_call_draw_single 的关系: 四:tc_draw_vbo 与 tc_call_draw_single 的具体执行流程: 五:mesa中线程池设计介绍: 六:总结: 一:概述 众所周知,Mesa 的 Gallium3D 是一个图形驱动框架,它将图形管线…...
laya-spine动画的使用
laya2和laya3的spine动画在使用过程中并无太大区别,这里以laya3为例。 转换 首先将做好的spine动画按jison格式导出,导出完之后的文件应包括图集、图片和json类型的3个文件。然后再用laya的骨骼动画转换工具转换成laya内置的模式,转换后的文…...
Vue项目实战-新能源汽车可视化(一)(持续更新中)
一.项目代码 1.App.vue <template><!-- 模板--><div id"wrapper"><div style"width: 100%"><el-tabs v-model"activeName" id"tabs"> <!-- 标签栏里包含了三个标签面板,分别是研发与维…...
百度SEO前10关键词排名波动跟用户行为反馈有很大关系
大家好,我是林汉文(谷歌SEO专家),在百度SEO优化中,网站的排名并非一成不变,尤其是前10名的位置,更是动态变化。很多站长可能会发现,有时明明内容质量不错,外链也稳定&…...
基于微信小程序的电影交流平台
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
Java实现 itext PDF文件打印水印(文字和图片水印)
itext PDF文件打印水印 前言:公司有个需求,打印的合同模板要加上水印,但是由于itext版本问题,网上千篇一律的方法基本都没办法有效使用,然后自己琢磨下,记录下实现水印的功能的笔记。多页上都加上水印&…...
面经之一:Synchronized与ReentrantLock区别
Synchronized与ReentrantLock是Java中用于实现线程同步的两种主要机制,它们各有特点和适用场景。以下是它们的主要区别: 实现方式: Synchronized:是Java语言内置的关键字,通过JVM层面的监视器(Monitor&…...
论文速读:面向单阶段跨域检测的域自适应YOLO(ACML2021)
原文标题:Domain Adaptive YOLO for One-Stage Cross-Domain Detection 中文标题:面向单阶段跨域检测的域自适应YOLO 1、Abstract 域转移是目标检测器在实际应用中推广的主要挑战。两级检测器的域自适应新兴技术有助于解决这个问题。然而,两…...
React中在map遍历中,给虚拟标签(<></>)加key
有时我们可能会需要在遍历时使用虚拟标签包裹内容,而不使用实际标签 ,这种时候会有一个问题,就是虚拟标签无法加key,这样控制台会一直有警告。 {[1,2,3,4].map(v><><div></div><div></div><…...
个人做的网站有什么危险/关键词排名代做
退休的贵族进程 0号进程所有进程的祖先叫做进程0 在系统初始化阶段由start_kernel()函数从无到有手工创建的一个内核线程 进程0最后的初始化工作创建init内核线程asmlinkage __visible void __init start_kernel(void){...//初始化0号进程pcbset_task_stack_end_magic(&ini…...
技术博客主题wordpress/吉林seo外包
韭菜洗净后切段,鸡蛋在碗内打散后倒入料酒,搅拌均匀锅热后注入油,倒入蛋液用筷子滑炒至散后盛出备用锅内重新注入油,7成热时倒入韭菜大火翻炒,调入盐、糖、生抽,大火翻炒20秒后倒入鸡蛋,翻炒5秒…...
广州app开发公司排名/怎么制作seo搜索优化
pytest自动化测试框架之入门知识pytest自动化测试框架总结1.入门安装 pytest1.1资源获取1.2运行pytest1.3运行单个案例1.4使用命令行pytest自动化测试框架总结 1.入门 pytest 是一个使构建简单和可伸缩的测试变得容易的框架。测试具有表达性和可读性,不需要样板代…...
外贸移动商城网站建设/公司做个网站多少钱
这几天梳理我的思想演变脉络时想到了在我职业生涯共事7年的前前老板。他是销售出身,大脑袋一忽悠。牟其中式人物,熟读易经和二十四史(中国历史讲的都是权谋与斗争,研究制度与规律极少),喜欢引用诗句&#x…...
北京营销型网站建设培训/东莞seo网站推广建设
示例1.编写测试脚本脚本 time .sh$ cat time.sh#! /bin/bashecho $(date %s) >> /home/ocean/out.txt保存完毕后记得给予权限 chmod 777 test.sh2.添加定时任务$ crontab -eno crontab for ocean - using an empty oneSelect an editor. To change later, run select-edi…...
金乡县住房与城乡建设局网站/百度网站搜索排名
Lua调C类和函数(cocos2d-x的方式来将C类注册进Lua环境) https://www.cnblogs.com/mokey/p/8042093.html Lua和C交互 学习记录之九:在Lua中以面向对象的方式使用C注册的类 https://www.cnblogs.com/chevin/p/5897220.html cocos2dx lua 绑定之一:自动绑…...