Let’s Encrypt申请证书流程(附带问题解决方式)

news2024/11/26 12:41:36

文章目录

  • 前言
    • Let’s Encrypt 和 OpenSSL的区别
    • 文章相关
  • 正文
    • 1、安装snapd
    • 2. 使用snapd安装certbot
    • 3. 生成证书(需要指定nginx)
    • 5. Nginx.conf的配置
  • 问题
    • 1、error: system does not fully support snapd
      • 原因
      • 解决方式
    • 2、The error was: PluginError(‘Nginx build is missing SSL module (–with-http_ssl_module).’)
      • 原因
      • 解决方式
    • 3、Could not read file: /usr/local/nginx/conf/nginx.conf due to invalid character. Only UTF-8 encoding is supported.
      • 原因
      • 解决方式

前言

Let’s Encrypt 和 OpenSSL的区别

区别Let’s EncryptOpenSSL
定义Let’s Encrypt是一个由互联网安全研究小组(ISRG)提供的免费、自动化和开放的证书颁发机构(CA)OpenSSL是一个强大的开源程序套件,主要用于提供加密功能,包括SSL/TLS协议的实现
功能旨在通过自动化流程消除手动创建和安装SSL/TLS证书的复杂流程,推广万维网服务器的加密连接,并为安全网站提供免费的SSL/TLS证书提供加密库(libcrypto)和SSL/TLS库(libssl),支持多种加密算法和协议,可用于创建、管理SSL/TLS证书和私钥等
角色与职责作为证书颁发机构(CA),其主要职责是颁发和管理SSL/TLS证书,确保这些证书被浏览器和操作系统信任作为一个加密程序套件,其主要职责是提供加密功能和协议支持,包括用于创建和管理SSL/TLS证书的工具
证书颁发与管理通过自动化流程为用户颁发免费的SSL/TLS证书,并管理这些证书的生命周期,包括颁发、更新和吊销等虽然可以用于创建自签名证书(即自己颁发的证书),但这些证书通常不被浏览器和操作系统信任,因为缺乏第三方CA的签名。OpenSSL也支持与其他CA(包括Let’s Encrypt)的集成,用于证书的管理和部署
费用提供完全免费的SSL/TLS证书服务,降低了网站加密的成本门槛本身是开源免费的,但如果你需要第三方CA签名的证书,则需要支付相应的费用(尽管Let’s Encrypt等CA提供了免费选项)
信任度颁发的证书由ISRG的根证书签名,这些根证书已被主流浏览器和操作系统预置信任,因此其颁发的证书具有较高的信任度自签名证书通常不被浏览器和操作系统信任,因为它们没有经过第三方CA的验证。然而,OpenSSL创建的证书可以提交给第三方CA进行签名,从而获得信任
使用场景非常适合需要SSL/TLS证书但预算有限的网站和个人开发者更适合需要深入控制加密过程、创建自定义加密解决方案或与其他加密系统集成的高级用户和开发者
特点自动化、免费、广泛支持开源、多功能、广泛应用于各种加密需求

总结:

  1. Let’s Encrypt 和 OpenSSL 都可以生成证书
  2. Let’s Encrypt 属于机构颁发的证书;OpenSSL就是用源码生成的证书
  3. Let’s Encrypt 能得到浏览器信任;OpenSSL属于自签名证书(即自己颁发的证书),通常不被浏览器和操作系统信任
  4. Let’s Encrypt 有有效期,需要定期更新证书;OpenSSL可以自己设置过期时间,理论上可以设置永久

文章相关

测试环境:使用OpenSSL生成证书并配置Https

正文

1、安装snapd

centos(这里我使用的是这个系统)

sudo yum install snapd
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap

ubuntu

sudo apt update
sudo apt install snapd

测试一下:

$ sudo snap install hello-world
hello-world 6.4 from Canonical✓ installed
$ hello-world
Hello World!

可能会出现的问题:error: system does not fully support snapd
解决方式见下文

2. 使用snapd安装certbot

sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

3. 生成证书(需要指定nginx)

安装Nginx

certbot certonly --nginx --nginx-ctl /usr/local/nginx/sbin/nginx --nginx-server-root /usr/local/nginx/conf

这里的certonly就是只下载对应文件,不进行配置nginx,适用于自己配置或者更新使用。去掉则会帮你进行配置nginx(我没有试用)。

可能会出现以下问题:
1、The error was: PluginError(‘Nginx build is missing SSL module (–with-http_ssl_module).’)
2、Could not read file: /usr/local/nginx/conf/nginx.conf due to invalid character. Only UTF-8 encoding is supported.
3、

执行上面的命令后,程序会让你确认你的邮箱和你的域名,确认完成后会将证书文件生成在指定目录中。

certbot certonly --nginx --nginx-ctl /usr/local/nginx/sbin/nginx --nginx-server-root /usr/local/nginx/conf
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): [这里输入你的邮箱]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y [选Y 继续]
Account registered.

Which names would you like to activate HTTPS for?
We recommend selecting either all domains, or all domains in a VirtualHost/server block.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: whrss.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel):  [这里不需要输入,回车选所有]
Requesting a certificate for whrss.com

Successfully received certificate.
Certificate is saved at: 
# [这里告诉我们生成的文件路径和有效期]
/etc/letsencrypt/live/whrss.com/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/whrss.com/privkey.pem
This certificate expires on 2023-03-02.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

5. Nginx.conf的配置

server{
        #监听443端口
        listen 443 ssl;
        #对应的域名,空格分隔域名就可以了
        server_name whrss.com; 
        #第一个域名的文件
        ssl_certificate /etc/letsencrypt/live/whrss.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/whrss.com/privkey.pem;
        # 其他配置
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        #这是我的主页访问地址,因为使用的是静态的html网页,所以直接使用location就可以完成了。
        location / {
            root   /;
            index  /;
            proxy_pass http://127.0.0.1:9091;
            proxy_set_header Host $host:443;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Via "nginx";
        }
}

问题

1、error: system does not fully support snapd

原因

Linux 内核(Linux 3.10.0-327.22.2.el7.x86_64)太老了,需要升级内核

解决方式

第一步:先执行 yum update 更新所有的包

第二步:先查看并记录当前的内核版本

# uname -sr
Linux 3.10.0-327.22.2.el7.x86_64

第三步:将内核升级到最新版本

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

第四步:仓库启用后,你可以使用下面的命令列出可用的内核相关包

yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

第五步:接下来,安装最新的主线稳定内核

yum --enablerepo=elrepo-kernel install kernel-ml

第六步:重启机器

reboot

第七步:修改 GRUB 配置
为了让新安装的内核成为默认启动选项,你需要如下修改 GRUB 配置:打开并编辑 /etc/default/grub 并设置 GRUB_DEFAULT=0。意思是 GRUB 初始化页面的第一个内核将作为默认内核。

vim /etc/default/grub

在这里插入图片描述
第八步:接下来运行下面的命令来重新创建内核配置

grub2-mkconfig -o /boot/grub2/grub.cfg

第九步:重启机器

reboot

第十步:查看内核版本是否升级成功

# uname -r
5.15.10-1.el7.elrepo.x86_64

2、The error was: PluginError(‘Nginx build is missing SSL module (–with-http_ssl_module).’)

原因

目前nginx缺少–with-http_ssl_module这个模块,我们要添加这个模块

解决方式

重新编译nginx
进入nginx下载的目录

cd /usr/local/nginx-1.18.0

执行命令

./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf  --error-log-path=/usr/local/nginx/logs/error.log --pid-path=/usr/local/nginx/logs/nginx.pid  --http-log-path=/usr/local/nginx/logs/access.log --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module

#prefix= 指向安装目录(编译安装)
#conf-path= 指向配置文件(nginx.conf)
#error-log-path= 指向错误日志目录
#pid-path= 指向pid文件(nginx.pid)
#http-log-path= 设定access log路径
#with-http_gzip_static_module 启用ngx_http_gzip_static_module支持(在线实时压缩输出数据流)
#with-http_stub_status_module 启用ngx_http_stub_status_module支持(获取nginx自上次启动以来的工作状态)
#with-http_ssl_module 启用ngx_http_ssl_module支持(使支持https请求,需已安装openssl)

执行命令

make
make install

查看是否生效

/usr/local/nginx/sbin/nginx -V

在这里插入图片描述

3、Could not read file: /usr/local/nginx/conf/nginx.conf due to invalid character. Only UTF-8 encoding is supported.

原因

这个错误信息表明你尝试读取的 /usr/local/nginx/conf/nginx.conf 文件包含了非UTF-8编码的字符,而你的编辑器或处理该文件的程序仅支持UTF-8编码

解决方式

1、检查文件编码:

file /usr/local/nginx/conf/nginx.conf

在这里插入图片描述
2、转换文件编码

iconv -f ISO-8859-1 -t UTF-8 /usr/local/nginx/conf/nginx.conf -o /usr/local/nginx/conf/nginx.conf.utf8

然后,你可能需要将转换后的文件重命名为原文件名(确保先备份原文件)

mv /usr/local/nginx/conf/nginx.conf.utf8 /usr/local/nginx/conf/nginx.conf

3、验证

file /usr/local/nginx/conf/nginx.conf

在这里插入图片描述

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

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

相关文章

宠物医院管理系统视频介绍

千呼新零售2.0系统是零售行业连锁店一体化收银系统,包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体,线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货、宠物等连锁店使用。 详细介绍请…

实现给Nginx的指定站点开启目录浏览功能

一、问题描述 需要实现在浏览器上可以浏览Nginx部署网站内容并下载一些常用的软件安装包、文件资料等内容;并且针对一些文件夹或内容需要进行认证后才能查看;有一些格式类型的文件也不能够访问查看。 二、问题分析 1、实现浏览器上可以浏览下载文件内容; 2、针对一些文件…

H3CNE(计算机网络的概述)

1. 计算机网络的概述 1.1 计算机网络的三大基本功能 1. 资源共享 2. 分布式处理与负载均衡 3. 综合信息服务 1.2 计算机网络的三大基本类型 1.3 网络拓扑 定义: 网络设备连接排列的方式 网络拓扑的类型: 总线型拓扑: 所有的设备共享一…

继承和多态(下)

目录 1.多态 2.多态成立的条件 虚函数重写: 虚函数重写的两个例外 3.override 和 final 4.重载,重定义(隐藏)和重写 5.抽象类 接口继承和实现继承 6.多态的原理 虚函数表 多态的原理 动态绑定和静态绑定 7.单继承虚表…

C语言高校人员管理系统

该系统使用easyx插件。 以下是部分页面 以下是部分源码&#xff0c;需要源码的私信 #define _CRT_SECURE_NO_WARNINGS 1//vs的取消报警 #include<easyx.h> #include<stdio.h> #include<stdlib.h>#define width 1280 #define height 840 #define font_w 35 …

《样式设计002:tab切换与底部swiper滑动块》

描述&#xff1a;在开发小程序过程中&#xff0c;发现一些不错的案例&#xff0c;平时使用也比较多&#xff0c;稍微总结了下经验&#xff0c;以下内容可以直接复制使用&#xff0c;希望对大家有所帮助&#xff0c;废话不多说直接上干货&#xff01; 一、tab切换与底部swiper滑…

AD9826 spi读写源码贡献

AD9826是一款专为成像应用设计的模拟信号处理器&#xff0c;它采用三通道架构&#xff0c;设计用于对三线彩色CCD阵列的输出进行采样和调理。这款处理器集成了多个关键功能组件&#xff0c;包括输入箝位电路、相关双采样器(CDS)、偏移DAC和可编程增益放大器(PGA)&#xff0c;并…

新手小白的pytorch学习第八弹------分类问题模型和简单预测

目录 1 启动损失函数和优化器2 训练模型创建训练和测试循环 3 预测和评估模型 这篇是接着新手小白的pytorch学习第七弹------分类问题模型这一篇的&#xff0c;代码也是哟~ 1 启动损失函数和优化器 对于我们的二分类问题&#xff0c;我们经常使用 binary cross entropy 作为损…

秋招突击——7/19——队列同步器AQS学习

文章目录 引言基础知识简介AQS接口和示例第一类&#xff1a;访问和修改同步状态的方法第二类&#xff0c;5个重写的方法第三类&#xff0c;9个模板方法 队列同步器实现原理同步队列独占式同步获取和释放共享式同步获取和释放独占式同步获取和释放 相关面试题怎么理解Lock和AQS的…

如何解决热插拔时的电压过冲

摘要 热插拔是指将上电电压源连接到电子器件的输入电源或电池连接器。热插拔产生的电压瞬态尖峰会损坏器件内部的集成电路。该文解释了此类电压瞬变的根本原因&#xff0c;并提供了防止这些瞬变损坏电子产品中的集成电路(IC) 的可能设计。 1 引言 当将高于 5V 的 USB 适配器…

达梦数据库的系统视图v$dmwatcher

达梦数据库的系统视图v$dmwatcher 查询当前登录实例所对应的守护进程信息&#xff0c;注意一个守护进程可以同时守护多个组的实例&#xff0c;因此查询结果中部分字段&#xff08;N_GROUP、SWITCH_COUNT&#xff09;为守护进程的全局信息&#xff0c;并不是当前登录实例自身的…

BUUCTF - Web - 1

文章目录 1. [极客大挑战 2019]EasySQL 1【SQL注入-万能密码】2. [极客大挑战 2019]Havefun 1【前端代码审计-注释泄漏】3. [HCTF 2018]WarmUp 1【PHP代码审计】4. [ACTF2020 新生赛]Include 1【PHP伪协议】5. [ACTF2020 新生赛]Exec 1【命令注入-基础】6. [GXYCTF2019]Ping Pi…

张量网络碎碎念:CGC

在本系列 上一篇文章 中&#xff0c;我介绍了张量网络的一些基础概念。其中很大一部分来自 github 上一个教程。事实上&#xff0c;该教程的大部分内容来自 e3nn 官网。 除了上篇文章介绍的一些可视化技巧&#xff0c;官网还提供了其他一些可视化模块。使用这些功能能使我们更深…

windows USB 设备驱动开发-开发Type C接口的驱动程序(三)

编写 USB Type C 端口控制器驱动程序 如果 USB Type-C 硬件实现 USB Type-C 或电源传送 (PD) 物理层&#xff0c;但未实现供电所需的状态机&#xff0c;则需要编写 USB Type-C 端口控制器驱动程序。 在 Windows 10 版本 1703 中&#xff0c;USB Type-C 体系结构已得到改进&am…

云监控(华为) | 实训学习day5(10)

Gaussdb安装和连接idea GaussDB的安装 首先关闭防火墙 systemctl disable firewalld.service 永久关闭防火墙&#xff08;发生在下次启动&#xff09; systemctl stop firewalld.service 关闭本次防火墙 查看防火墙状态systemctl status firewalld.service 查询的状态是Dead表…

【算法】百钱买百鸡问题算法详解及多语言实现

问题描述 百钱买百鸡问题是一个经典的数学问题&#xff0c;题目要求用100文钱买100只鸡&#xff0c;公鸡5文钱一只&#xff0c;母鸡3文钱一只&#xff0c;小鸡3只一文钱&#xff0c;问公鸡、母鸡、小鸡各买多少只&#xff1f; 目录 问题描述​编辑 解决方案 Python实现 Ja…

选择Maya进行3D动画制作与渲染的理由

如果你对3D动画充满热情并追求成为专业3D动画师的梦想&#xff0c;你一定听说过Maya——近年来3D动画的行业标准。Maya被3D艺术家广泛使用&#xff0c;你是否想知道为什么Maya总是他们的首选&#xff1f;下面一起来了解下。 一、什么是Maya&#xff1f; 由Autodesk开发的Maya是…

wxid转微信号

7.21由于微信的再一次调整&#xff0c;能够转出微信号的接口已经和谐&#xff0c;根据客户要求琢磨了几个小时 发现新的接口也是可以批量转换的

springcolud学习06Hystrix

Hystrix Hystrix是Netflix开发的一个用于处理分布式系统中延迟和容错问题的库。它主要用于防止分布式系统中的雪崩效应,通过在服务之间添加延迟容错和故障处理机制来增强系统的弹性。 服务熔断 类似于电路中的断路器,当失败率超过阈值时,Hystrix 可以自动地开启断路器,停…

c++习题12-开关灯

目录 一&#xff0c;题目 二&#xff0c;思路 三&#xff0c;代码 一&#xff0c;题目 用例输入 1 10 10 用例输出 1 1,4,9 二&#xff0c;思路 创建可以存放路灯亮灭情况的数组&#xff0c;路灯的编号从1开始&#xff0c;因此在使用for循环去初始化数组时&#xff…