【SSL】用Certbot生成免费HTTPS证书
1. 实验背景
服务器:CentOS7.x
示例域名: www.example.com
域名对应的web站点目录: /usr/local/openresty/nginx/html
2. 安装docker
# yum -y install yum-utils# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # yum list docker-ce --showduplicates | sort -r# yum -y install docker-ce-17.12.0.ce
3. 添加镜像加速仓库
# tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://m3e4jmm0.mirror.aliyuncs.com"]
}
EOF
# systemctl restart docker
# systemctl restart docker
4. 拉取 certbot 工具镜像
# docker pull certbot/certbot:v1.11.0
v1.11.0: Pulling from certbot/certbot
801bfaa63ef2: Pull complete
7678dd7631a2: Pull complete
4c6139ab40d8: Pull complete
ff5ef8cd8062: Pull complete
73dee1f700a1: Pull complete
3dfb7190edf9: Pull complete
176bf1686307: Pull complete
fe1749c3045d: Pull complete
5a79fca54080: Pull complete
e57ac51359f9: Pull complete
88988e2ba14a: Pull complete
a916063ca8d3: Pull complete
168ae0b7107a: Pull complete
d0bd333abff4: Pull complete
Digest: sha256:fecbc1f03607f961d20a6c6b0624507e42e6dea7c7f1548e2cbb8c3782b35da9
Status: Downloaded newer image for certbot/certbot:v1.11.0
5 . 测试示例域名解析
# nslookup www.exanple.com
Server: 114.114.114.114
Address: 114.114.114.114#53Non-authoritative answer:
Name: www.exanple.com
Address: 199.59.243.224
注意,示例域名 www.exanple.com在certbot机器上一定要解析在公网ip,而不是解析在内网ip,否则会报错无法解析:
Waiting for verification...
Challenge failed for domain www.example.com
http-01 challenge for www.example.com
Cleaning up challenges
Some challenges have failed.IMPORTANT NOTES:- The following errors were reported by the server:Domain: www.example.comType: dnsDetail: DNS problem: query timed out looking up A forwww.example.com; DNS problem: query timed out looking up AAAA for www.example.com
6. 生成证书
# mkdir -p /etc/letsencrypt# docker run -it --rm -v /etc/letsencrypt:/etc/letsencrypt -v /usr/local/openresty/nginx/html:/usr/local/openresty/nginx/html certbot/certbot:v1.11.0 certonly --webroot -w /usr/local/openresty/nginx/html -d www.example.com -m 123456789@qq.com --agree-tosSaving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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
Account registered.
Requesting a certificate for www.example.com
Performing the following challenges:
http-01 challenge for www.example.com
Using the webroot path /usr/local/openresty/nginx/html for all unmatched domains.
Waiting for verification...
Cleaning up challenges
Subscribe to the EFF mailing list (email: 123456789@qq.com).IMPORTANT NOTES:- Congratulations! Your certificate and chain have been saved at:/etc/letsencrypt/live/www.example.com/fullchain.pemYour key file has been saved at:/etc/letsencrypt/live/www.example.com/privkey.pemYour certificate will expire on 2023-12-28. To obtain a new ortweaked version of this certificate in the future, simply runcertbot again. To non-interactively renew *all* of yourcertificates, run "certbot renew"- If you like Certbot, please consider supporting our work by:Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donateDonating to EFF: https://eff.org/donate-le
Let’s Encrypt需要验证网站的所有权才能颁发证书, 官方称之为challenge(挑战)。
生成证书期间,Certbot工具在nginx的web目录 /usr/local/openresty/nginx/html/ 下创建隐藏临时文件夹 .well-known/acme-challenge,生成一个临时随机字符串文件 CWJ_QNbAkYkivgJWUD1wxF84fIg5sGTeTy2CeWQVwlI
Certbot 会让 Let’s Encrypt 通过公网访问 http://www.example.com/.well-known/acme-challenge/CWJ_QNbAkYkivgJWUD1wxF84fIg5sGTeTy2CeWQVwlI 校验,如果文件内容对得上就签发。
证书签发完成后,Certbot 会删除该临时文件夹,所以如果要观察这个文件,需要在证书签发期间去cat一下。
# cat /usr/local/openresty/nginx/html/.well-known/acme-challenge/CWJ_QNbAkYkivgJWUD1wxF84fIg5sGTeTy2CeWQVwlICWJ_QNbAkYkivgJWUD1wxF84fIg5sGTeTy2CeWQVwlI.sHK8K8we80hc978Nkuo1I8tCjj8VA3D87bVwb7Y8ZwM
7. 验证证书
# ll /etc/letsencrypt/live/www.example.com/
total 4.0K
lrwxrwxrwx 1 root root 41 Sep 29 09:55 cert.pem -> ../../archive/www.example.com/cert1.pem
lrwxrwxrwx 1 root root 42 Sep 29 09:55 chain.pem -> ../../archive/www.example.com/chain1.pem
lrwxrwxrwx 1 root root 46 Sep 29 09:55 fullchain.pem -> ../../archive/www.example.com/fullchain1.pem
lrwxrwxrwx 1 root root 44 Sep 29 09:55 privkey.pem -> ../../archive/www.example.com/privkey1.pem
-rw-r----- 1 root root 692 Sep 29 09:55 README
证书: /etc/letsencrypt/live/www.example.com/fullchain.pem
私钥: /etc/letsencrypt/live/www.example.com/privkey.pem
# openssl x509 -noout -text -in /etc/letsencrypt/live/www.example.com/fullchain.pemCertificate:Data:Version: 3 (0x2)Serial Number:03:bb:52:8d:5a:6f:03:cc:f1:06:12:75:b0:2f:1e:8a:e6:12Signature Algorithm: sha256WithRSAEncryptionIssuer: C=US, O=Let's Encrypt, CN=R3ValidityNot Before: Sep 29 00:55:29 2023 GMTNot After : Dec 28 00:55:28 2023 GMTSubject: CN=www.example.comSubject Public Key Info:Public Key Algorithm: rsaEncryptionPublic-Key: (2048 bit)Modulus:00:c2:d4:38:10:96:f9:7a:ef:10:00:98:1d:a3:ed:c8:96:71:60:02:ed:8d:32:99:0e:15:11:a4:14:e1:32:c8:31:75:fa:90:b2:55:3e:c1:6a:2a:f6:3f:ac:62:1b:f8:cc:0e:bc:4a:27:ea:94:2b:eb:78:49:d1:f9:c4:5e:f0:12:7f:c5:95:0d:cc:31:b3:8e:f0:ec:3e:55:b6:97:17:b0:0d:32:35:72:1a:82:87:4f:81:a0:07:60:7b:b8:03:2e:75:e8:7a:3b:1d:69:40:04:de:50:36:e8:49:b9:82:25:1d:30:3d:38:16:28:ad:df:a3:c8:d1:80:a6:87:45:e9:6a:2c:75:5b:06:0f:97:1e:15:d2:f9:c9:59:9a:9e:ee:5a:4f:bd:14:74:36:d1:4b:47:0b:c5:8d:75:b7:e7:e0:53:28:41:1f:b7:05:ae:2f:29:86:98:6f:75:64:e7:83:fd:ce:12:e2:fc:12:5d:01:01:18:e6:74:1f:83:6a:58:21:01:99:68:62:8c:29:82:7e:6e:ad:26:50:6b:5d:70:73:21:5e:19:e1:0c:35:71:53:b7:de:21:66:6e:e4:d9:32:5e:14:0c:24:2a:00:63:f9:8b:b7:84:12:28:1d:90:99:4b:08:bc:82:f8:15:68:9d:64:09:ea:1f:bf:97:3fExponent: 65537 (0x10001)X509v3 extensions:X509v3 Key Usage: criticalDigital Signature, Key EnciphermentX509v3 Extended Key Usage:TLS Web Server Authentication, TLS Web Client AuthenticationX509v3 Basic Constraints: criticalCA:FALSEX509v3 Subject Key Identifier:9F:7A:1C:81:35:31:13:62:6E:F6:84:CB:5D:67:2A:41:A5:1C:6F:ACX509v3 Authority Key Identifier:keyid:14:2E:B3:17:B7:58:56:CB:AE:50:09:40:E6:1F:AF:9D:8B:14:C2:C6Authority Information Access:OCSP - URI:http://r3.o.lencr.orgCA Issuers - URI:http://r3.i.lencr.org/X509v3 Subject Alternative Name:DNS:www.example.comX509v3 Certificate Policies:Policy: 2.23.140.1.2.1CT Precertificate SCTs:Signed Certificate Timestamp:Version : v1(0)Log ID : B7:3E:FB:24:DF:9C:4D:BA:75:F2:39:C5:BA:58:F4:6C:5D:FC:42:CF:7A:9F:35:C4:9E:1D:09:81:25:ED:B4:99Timestamp : Sep 29 01:55:29.732 2023 GMTExtensions: noneSignature : ecdsa-with-SHA25630:45:02:20:04:02:FF:43:4D:F2:B4:EA:9F:A0:22:F7:5A:C6:81:48:C2:A2:91:FE:5C:D7:3D:19:8D:6E:58:64:06:20:6E:4C:02:21:00:E0:AB:A8:2F:FD:D6:58:E1:62:6F:A6:94:F3:D8:5D:02:5E:52:1E:00:06:BD:58:B5:00:F5:8A:C1:7C:EB:33:B5Signed Certificate Timestamp:Version : v1(0)Log ID : E8:3E:D0:DA:3E:F5:06:35:32:E7:57:28:BC:89:6B:C9:03:D3:CB:D1:11:6B:EC:EB:69:E1:77:7D:6D:06:BD:6ETimestamp : Sep 29 01:55:29.706 2023 GMTExtensions: noneSignature : ecdsa-with-SHA25630:45:02:21:00:CE:03:25:26:CF:0E:65:22:9B:9E:EF:41:CE:6E:AD:EF:FE:B9:FB:66:4F:D9:0A:40:EE:A4:48:C5:1D:2A:DD:98:02:20:55:84:8F:49:51:E7:47:B7:46:A4:09:AB:C2:54:F1:65:79:67:C3:7F:DE:6B:9F:77:96:CF:81:A4:0D:F1:A1:8FSignature Algorithm: sha256WithRSAEncryption2d:c1:21:8b:3e:68:d8:df:47:bd:2e:b9:50:ea:cb:23:8d:ba:ea:17:09:15:27:cb:74:6d:6b:83:9e:a8:19:e3:75:6a:e4:ac:d2:13:6c:a0:d7:b1:2f:63:f4:f4:6f:86:51:af:37:8f:04:63:7b:6b:df:93:87:56:a2:0a:1a:79:df:f5:9d:a8:2e:45:7f:83:3e:b7:d8:a5:5e:59:c3:27:b7:9f:59:24:bc:d5:22:05:db:84:8e:db:0f:c3:1b:50:d6:c2:3e:38:8c:6e:99:29:bf:42:f7:b2:52:36:91:58:6e:fc:cf:ef:dd:ef:45:4c:9c:b9:9e:bb:53:49:a1:98:7a:ce:3b:c2:dd:38:06:c5:45:06:74:1e:da:5b:30:43:1a:82:95:ff:2c:d0:aa:f2:96:a3:0d:50:90:d1:ec:2b:9e:a9:22:3a:0e:93:9a:5c:ce:4f:c8:74:e3:c0:37:cc:4d:6f:48:3f:aa:6e:11:2c:79:3b:ce:b9:30:13:78:96:e7:ce:89:c6:d4:63:7d:3a:97:83:97:f3:a6:f0:a5:46:6a:90:4e:cf:eb:c0:13:7e:a9:01:bd:a9:b8:e1:01:2f:21:84:6c:9b:0c:b3:48:9b:48:a9:5b:b6:e3:48:91:68:56:fa:3a:26:92:88:51:c8:a8:84:17:52:45:d9:77:6d
https://myssl.com/cert_decode.html
8. 参考
Linux上 基于x86 和 arm CPU架构安装 docker
https://www.jianshu.com/p/99373f14b990
CentOS7.x cerbot 安装使用
https://www.jianshu.com/p/735ed33feaa3
相关文章:
【SSL】用Certbot生成免费HTTPS证书
1. 实验背景 服务器:CentOS7.x 示例域名: www.example.com 域名对应的web站点目录: /usr/local/openresty/nginx/html 2. 安装docker # yum -y install yum-utils# yum-config-manager --add-repo https://download.docker.com/linux/ce…...
报错:java.sql.SQLSyntaxErrorException: Table ‘examsys.Teacher’ doesn’t exist
Linux大小写区分,导致部署项目时MySQL出现错误 问题原因:找不到Teacher这张表。因为在windows下的mysql表名不区分大小写,所以在windows下运行项目没问题。在linux中,mysql会区分大小写,所以sql语句表名用大写的就会找…...
.NET的PLC帮助类
TCP和UDP协议: TCP(传输控制协议)和UDP(用户数据报协议)是TCP/IP协议簇中的两种核心协议。它们在传输层上提供数据传输服务,但具有不同的特性和功能。 TCP协议是一种提供可靠、面向连接的字节流服务的传输协…...
Linux中nfs:failed: Operation not supported
先给出思路: 一个简单粗暴的方式:卸载重装排除未知问题,步骤如下: 一、在 Linux 上卸载 NFS 服务器,步骤: 停止 NFS 服务: sudo service nfs-kernel-server stop如果您使用的是不同的发行版&am…...
ElasticSearch映射与模板介绍
一、前言 前面有相关系列文章介绍了ES的基本概念和各种版本SDK的使用,ES现在已升级到8.5版本,有些概念和SDK用法都有很大变化,后续ES相关的文章会以8.3版本为基准介绍一些实际中应用需要掌握的概念以及一些比较实际的例子。 二、映射 ES环…...
通过 Azure 日志分析加强云安全
Microsoft Azure 云服务在安全日志存储、访问、可伸缩性、降低成本和易于部署方面提供了巨大的优势,因此在企业中很受欢迎。 Microsoft Azure 日志记录工具(如 Log360)可帮助管理 Azure 云基础结构中所有设备和应用程序(如虚拟机…...
[H5动画制作系列 ]变量,帧频,监听器等的生命周期基础测试
模式:按照上述抓图,actions层,1帧,写初始化代码,10帧写返回代码到2帧代码,2-10帧之间一直循环。1帧及10帧代码如下: 如果程序在1-10之间循环,会反复创建变量i,多个监听器等。所以,第一帧最好执行一次即可,程序在2-10帧之间一直循环。...
基于SpringBoot的服装生产管理系统的设计与实现
目录 前言 一、技术栈 二、系统功能介绍 登录界面的实现 系统主界面的实现 用户管理模块的实现 人事安排管理模块的实现 工资管理模块的实现 考勤管理模块的实现 样板管理模块的实现 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 本协力服装厂服装生…...
动态内存操作(2)
接上一篇文章http://t.csdn.cn/1ONDq,这次我们继续讲解关于动态内存的相关知识。 一、常见的动态内存错误 1.对NULL指针进行解引用操作 #include<stdio.h> #include<stdlib.h> #include<limits.h> int main() {int* p (int*)malloc(INT_MAX/4);…...
Windows-Delphi 窗口置顶
露从今夜白,月是故乡明。 1.Delphi将窗口置顶 if topHwnd <> 0 thenbeginSetWindowPos(topHwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);tmr1.Enabled : True;end; 其中topHwnd是目标窗口的句柄。 2.窗口取消置顶 if topHwnd <> 0 th…...
CVE-2020-11978 Apache Airflow 命令注入漏洞分析与利用
简介 漏洞软件:Apache Airflow影响版本:< 1.10.10 环境 Vulhub 漏洞测试靶场 复现步骤 进入 /root/vulhub/airflow/CVE-2020-11978/ 目录运行以下命令启动环境 # 初始化数据库 docker compose run airflow-init # 开启服务 docker compose up -…...
面试经典算法1:DFS
一、前言 1、题目描述和代码仅供参考,如果有问题欢迎指出 2、解题代码采用acm模式(自己处理输入输出),不采用核心代码模式(只编程核心函数) 3、解题代码采用C语言(ai一键翻译任意语言ÿ…...
Windows系统利用cpolar内网穿透搭建Zblog博客网站并实现公网访问内网!
文章目录 1. 前言2. Z-blog网站搭建2.1 XAMPP环境设置2.2 Z-blog安装2.3 Z-blog网页测试2.4 Cpolar安装和注册 3. 本地网页发布3.1. Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 想要成为一个合格的技术宅或程序员,自己搭建网站制作网页是绕…...
SmartCode ViewerX VNC 3.11 Crack
SmartCode ViewerX VNC 查看器 ActiveX 轻松地将 VNC 查看器功能添加到您的应用程序中 SmartCode ViewerX VNC Viewer ActiveX 使开发人员可以使用一组直观的 ActiveX 属性和方法完全访问 VNC 查看器功能。借助ViewerX控件,开发人员可以轻松地为其应用程序提供屏幕共…...
傻瓜式Java操作MySQL数据库备份
文章目录 前言存储数据库存储数据表 前言 数据库备份是开发工作中经常要做的事情,好处是mysql提供了一个非常好的命令 mysqldump,直接调用它就可以将数据以sql文件的形式备份出来。但是直接写命令非常不方便,遇到定时备份或者指定备份那么就需…...
redis常用操作命令
日升时奋斗,日落时自省 注:命令区分有点细,择取自己需要的即可 目录 1、单机架构 2、数据库和应用分离 3、分布式基本概念 3.1、应用(Application)/系统(System) 3.2、模块(Module)/组件&…...
pytorch gpu安装
cuda https://blog.csdn.net/qq_51570094/article/details/124148671 https://blog.csdn.net/zxdd2018/article/details/127705627 cudnn https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#installlinux-tar 更改cudnn 保证文件目录中只有一个解压后…...
uni跳转页面不缓存上一个页面的方法
一、前言 要实现一个需求,从a页面跳转到b页面,从b页面跳转到c页面,然后按返回,从c页面直接返回a页面(不返回b页面) a->b->c c->a 二、实现方法 前端框架使用的是uni-app,我们修改…...
排序:败者树和置换选择排序(解决外部排序中的优化问题)
1.算法目的(败者树) 解决多路平衡归并带来的问题。 在外部排序中,使用k路平衡归并策略, 选出一个最小元素需要对比关键字(k-1)次, 导致内部归并所需时间增加。(可用“败者树”进行优化) 2.败者树的定义 …...
【超分:光谱响应函数】
Spectral Response Function-Guided Deep Optimization-Driven Network for Spectral Super-Resolution (光谱响应函数引导的深度优化驱动网络光谱超分辨) 高光谱图像(HSI)是许多研究工作的关键。光谱超分辨率(SSR&a…...
IoT 物联网 JavaScript 全栈开发,构建家居环境监控系统实战
智能家居环境监测端到端场景,全栈JavaScript开发,串联Ruff硬件、温湿度和空气质量传感器、阿里云 IoT、Serverless函数计算、百度ECharts可视化、最终以微信小程序形式在微信里实时展示家中实时温度,湿度,PM2.5指数。 01 技术架构…...
jupyter notebook可以打开,但无法打开.ipynb文件,报错500 : Internal Server Error
1、错误信息 2、解决办法 打开Anaconda Promt界面,进入自己的虚拟环境。在命令行输入以下指令: pip install --upgrade nbconvert...
latex图片编号+表格编号
对编号重新自定义 \renewcommand{\thefigure}{数字编号x}重新命名图的编号\renewcommand{\thetable}{数字编号x}重新命名表的编号编号含义 平时看书经常看到“图1.2”这样的编号,含义是第1章的第2幅插图;或者“图1.1.2”,含义是第1章第1节的…...
【1day】用友时空KSOA平台 imagefield接口SQL注入漏洞学习
注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录...
linux之美
linux系统和window系统区别 Linux和Windows是两个不同的操作系统。Linux是一个开源操作系统,而Windows是一个商业操作系统。 Linux可以访问源代码并根据用户的需求进行修改,而Windows无法访问源代码。 Linux是免费的,而Windows是商业操作系…...
5、超链接标签
5、超链接标签 超链接标签就是我们常说的a标签 <a href"path" target"目标窗口位置">连接文本或图像</a> <!-- href(必填项):连接路径 target:连接在哪个窗口打开?是在新页面打开…...
CCF CSP认证历年题目自练 Day15
CCF CSP认证历年题目自练 Day15 题目一 试题编号: 201709-1 试题名称: 打酱油 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 小明带着N元钱去买酱油。酱油10块钱一瓶,商家进行促销…...
APP的收费模式及特点
移动应用(APP)的收费模式多种多样,可以根据开发者的需求、目标受众和应用的性质来选择。以下是一些常见的APP收费模式及其特点,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎…...
opencv: 解决保存视频失败的问题
摘要:opencv能读取视频,但保存视频时报错。 一、首先要确保已经下载了openh264.dll文件,否则保存的视频无法打开,详细可以浏览这个:opencv:保存视频。 二、保存视频时出现一下问题: OpenCV:…...
源码编译安装zstd
目录 1 下载源码https://github.com/facebook/zstd 2 解压 3 在解压后的目录里输入make 4 sudo make install 安装完毕 5 输入whereis zstd 检查安装结果 1 下载源码https://github.com/facebook/zstd 2 解压 3 在解压后的目录里输入make 4 sudo make install 安装完毕…...
兼职做视频的网站/网页推广怎么做的
在TCP/IP协议中,TCP协议提供可靠的连接服务,採用三次握手建立一个连接。第一次握手:建立连接时,client发送syn包(synj)到server,并进入SYN_SENT状态,等待server确认&…...
wordpress 视频播放插件/产品故事软文案例
API: Mail/xsend 原文链接 概览 mail/xsend 是邮件 API 的升级版本。与 mail/send API 一样,mail/xsend 提供强大的邮件发送功能,区别于 mail/send API,mail/xsend 无需提交 html 源码或邮件文本内容,甚至无需提交邮件标题或发…...
做网站绘制蓝图的步骤/哪个app可以找培训班
一、平板电脑出货量2011年至2013年是全球平板电脑行业高速发展时期,全球平板电脑出货量持续上升,年复合增速达到74.75%。进入2015年后,受手机大屏化等因素的影响,全球平板电脑出货量出现一定程度的下滑,截至2018年&…...
网站开发语言有哪些/谷歌浏览器下载手机版安卓官网
这不是技术帖!今天在7DGroup群里,扯了好长时间《中华人民共和国外国人永久居留管理条例(征求意见稿)》。说什么现在要引入黑人劳工了,一顿的骂提引入黑人劳工这个建议的人。中国这么多人都养活了吗?有没有走到农村去看一看&#x…...
厦门SEO_厦门网站建设/源码之家
首先,切换到西南等轴视图,以0,0,0点为中心点,画个正6边形,然后,执行拉升命令: _extrude当前线框密度: ISOLINES随便选择对象: 找到 1 个(选画的6边形)选择对象:确认指定拉伸高度或 [路径(P)]: 20 (一般为6边行内接圆半径1/2,自己随便)指定拉伸的倾斜角度 <0>:下一步以0,…...
网站建设的标准/百度 营销推广靠谱吗
1jsonp 一般接口使用jsonp跨域,使用jquery的ajax指定dataType为jsonp即可 $.ajax({async : true,url : "https://api.douban.com/v2/book/search",type : "GET",dataType : "jsonp", // 返回的数据类型,设置为JSONP方式js…...