Let’s Encrypt证书生成与使用

2023年 1月 4日 26.8k 0

1. SSL证书

先来了解几个概念

1.1 数字证书

包含加密用的公钥或私钥,还有一些身份附加信息。任何人都可以使用相关工具生成自己的数字证书,用来加密文件、邮件,或用于通讯加密。

1.2 SSL 协议

用于网络通讯的加密协议。通信过程需要一份数字证书,使用里面的公钥及私钥来发送随机生成的通信秘钥。在握手完成后,SSL证书并不用于通信内容的加密。

1.3 CA 证书

CA(Certification Authority),它的中文意思是证书授权,是一个单位,来管理发放数字证书。由它发放的证书就叫CA证书,以区别于个人使用工具随意生成的数字证书,查看CA 证书,里面有两项重要内容,一个是颂发给谁,另一个是由谁颂发的。CA证书分为3类,DV 域名验证证书,OV 组织机构验证证书,EV 增强的组织机构验证证书。一般个人使用DV证书完全够了,浏览器表现为地址栏前会有绿色的小锁。

1.4 CA 证书的信任链

如果你安装并信任了一个CA 机构的证书,以他为根,同样也信任了由这个CA 机构颂发的其它组织的证书,其它组织则可以创建自己的CA中心,颂发下一级的证书,依次往下,一层层会有许多 CA 中心和数字证书。这个最上层的CA 证书,即可以称为根证书。

2. Let’s Encrypt项目简介

Let’s Encrypt是由互联网安全研究小组(ISRG)提供的服务,2015年4月9日宣布与Linux基金会合作。Let’s Encrypt项目计划是为网站提供永久免费的SSL证书,用于加速互联网从HTTP向HTTPS过度。同时,https/2也必须使用https,StartSSL、Wosign有免费DV证书,便宜的还有Rapid、Comodo证书,其他证书价格一般较高。Let’s Encrypt证书签署快、免费、支持多域名,但是现阶段签署的证书只有三个月的有效期,需要通过自动化脚本续签。Let’s Encrypt 与 IdenTrust 的 DST Root CA 做了交叉认证,兼容所有主流的浏览器。在2015年12月,Let’s Encrypt项目已经开始公测。SSL证书的意义不仅仅在于加密,更在于颁发机构提供的担保,也就是因CA机构的过失,造成经济损失时,会有一定额度的赔偿。对于廉价或者免费的证书,这种担保就没有太大意义,CA机构也不会提供担保。廉价和免费证书的意义在于对https的普及,避免ISP对http的劫持,对流量的加密。

3. 生成Let’s Encrypt证书

Let’s Encrypt 证书生成官方推荐 certbot 这套自动化工具来实现。在官网上有比较详细的教材,根据不同的操作系统适配生成环境。这里直接在GitHub上下载certbot,certbot是一个Python 脚本。git clone https://github.com/certbot/certbotcd certbot在正式安装之前,需要关闭服务器,脚本会占用80和443端口。./letsencrypt-auto certonly脚本会自动生成环境Creating virtual environment…Installing Python packages…Installation succeeded.在 /etc/letsencrypt/ 目录下存放着证书和证书的配置

4. 服务器部署及自动化

在证书的存放目录下有四个文件:privkey1.pem: 证书密钥fullchain1.pem: 带证书链的域名证书chain1.pem: The Let’s Encrypt 证书cert1.pem: 域名证书修改Nginx的配置文件nginx.conf中SSL相关的参数ssl_certificate /etc/letsencrypt/live/XXX.com/fullchain1.pem;ssl_certificate_key /etc/letsencrypt/live/XXX.com/privkey1.pem;由于Let’s Encrypt有效期现阶段只有90天,我们可以配置一个自动化续签的脚本certrenew.h。#!/bin/sh# This script renews all the Let’s Encrypt certificates with a validity < 30 daysif ! /home/letsencrypt/letsencrypt-auto renew > /var/log/letsencrypt/renew.log 2>&1 ; thenecho Automated renewal failed:cat /var/log/letsencrypt/renew.logexit 1finginx -t && nginx -s reload开启定时任务Croncrontab -e编辑任务内容@daily /home/certrenew.shHTTPS网站安全性能测试:SSL Server Test

相关文章

KubeSphere 部署向量数据库 Milvus 实战指南
探索 Kubernetes 持久化存储之 Longhorn 初窥门径
征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
那些年在 Terraform 上吃到的糖和踩过的坑
无需 Kubernetes 测试 Kubernetes 网络实现
Kubernetes v1.31 中的移除和主要变更

发布评论