域名
域名是互联网上任何一个网站的网络地址,它使我们能够访问各种网站资源。域名的设计旨在便于人们记忆,而不必记住复杂的数字序列(即IP地址),并通过网域名称系统(DNS,Domain Name System)来将域名和IP地址相互映射,使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串。
域名的结构
- 顶级域名(TLD):域名的最右部分,例如“.com”、“.org”和“.net”等
- 二级域名:顶级域名左边的部分,通常是公司或组织的名称,例如在“google.com”中,“google”就是二级域名。
- 子域名:位于二级域名前的可选部分,如“mail.google.com”中的“mail”。
备案
一级域名在国内需要备案,而二级域名不需要单独备案,只要它所处的一级域名已经备案,就能直接解析。
一般网站只用到顶级域名即可,有时候一个网站系统比较庞大,那么就可能使用多个域名,如果去申请多个域名肯定不划算,这个时候,使用已申请的一个域名的二级域名的处理方式就应运而生。
比如百度买下了baidu.com这一顶级域名,将baidu.com绑定了一个地址,map.baicu.com、music.baicu.com也绑定到了各个地址,不用单独花钱,只是购买了baidu.com这一个顶级域名
SSL
SSL(Secure Sockets Layer)是一种用于在网络上建立安全连接的协议。它已经被其继任者TLS(Transport Layer Security)所取代,但人们常常仍然使用“SSL”来指代这类协议。以下是SSL的主要功能和概念:
主要功能
-
数据加密:SSL通过加密算法确保数据在传输过程中不被窃听或篡改。这意味着即使数据被截获,攻击者也无法读取其内容。
-
数据完整性:SSL使用校验和和哈希函数来确保数据在传输过程中没有被篡改。如果数据被修改,接收方会检测到并丢弃这些数据。
-
身份验证:SSL使用数字证书来验证服务器和客户端的身份。数字证书由权威的证书颁发机构(CA)颁发,确保连接的一方是它声称的那一方。
SSL/TLS 连接过程
-
握手阶段:
- 客户端向服务器发送请求,并包含客户端支持的加密算法列表。
- 服务器从中选择一个加密算法,并向客户端发送数字证书。
- 客户端验证服务器证书的有效性。
- 客户端生成一个随机数,并使用服务器的公钥加密该随机数,然后发送给服务器。
- 服务器使用自己的私钥解密随机数,从而生成会话密钥。
-
加密通信:
- 双方使用会话密钥对通信数据进行加密和解密,确保数据在传输过程中保密。
获取和使用SSL证书
- 选择证书类型和供应商:根据网站需求选择合适的证书类型和供应商,例如Let’s Encrypt(免费)或商业证书供应商。
- 生成证书签名请求(CSR):在服务器上生成CSR文件,包含公钥和域名信息。
- 提交CSR并获取证书:将CSR提交给证书颁发机构,经过验证后获取SSL证书。
- 安装证书:将SSL证书安装到服务器上,并配置服务器使用该证书进行加密通信。
Let’s Encrypt 使用
将Let’s Encrypt与Nginx结合使用,以下是完整的步骤和修改后的Nginx配置:
步骤 1: 安装Certbot和Nginx插件
在基于Debian/Ubuntu的系统上,使用以下命令安装Certbot和Nginx插件:
sudo apt update
sudo apt install certbot python3-certbot-nginx
步骤 2: 使用Certbot获取SSL证书并自动配置Nginx
使用Certbot获取Let’s Encrypt证书并自动配置Nginx。以下命令会获取证书并修改Nginx配置以启用HTTPS:
sudo certbot --nginx -d zhengyu.tech
步骤 3: 验证配置并重启Nginx
Certbot会自动修改你的Nginx配置文件以启用HTTPS。以下是修改后的Nginx配置文件示例:
# 具体打开自己的会有注明 managed by Certbot
步骤 4: 重启Nginx
sudo systemctl restart nginx
步骤 5: 自动续期
Certbot会自动设置续期任务。你可以通过以下命令检查自动续期是否正常工作:
sudo certbot renew --dry-run
以上步骤完成后,你的Nginx服务器将使用Let’s Encrypt的SSL证书来提供HTTPS服务,并自动续期证书。
评论区