如何在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 . …...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...

基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...