一、加密原理
1、对称加密:
对称加密使用相同的密钥来加密和解密数据,密钥必须保密并安全地共享给合法的通信方。常见的对称加密算法包括 DES 和 AES。
2、非对称加密:
非对称加密包含两套密钥,公钥和私钥。公钥用于加密数据,私钥用于解密数据,公钥可以对外公布,私钥必须保密。常见的非对称加密算法包括 RSA 和 ECC。
3、哈希算法:
哈希算法是将任意长度的输入数据转换为固定长度的输出,相同的输入始终产生相同的哈希值,即使输入数据略微改变,哈希值也会截然不同。常见的哈希算法包括MD5、SHA-256等。
二、CA & HTTPS
1、简介:
(1) CA:Certificate Authority 证书颁发机构,它是数字证书颁发和管理的机构或实体。CA 的主要责任是验证和确认公钥与特定实体(如网站、个人或组织)的身份,并为其签发数字证书,数字证书主要应用在 HTTPS 协议中。
(2) HTTPS:HTTP + SSL,是一种安全传输数据的通信协议,HTTPS 通过在HTTP 通信过程中使用加密技术来保护数据的机密性和完整性。
2、私有 CA
(1) 概念:
私有 CA 是组织内部自定义的数字证书,主要用于内部网络系统,而不是公网。
(2) 生成证书及密钥文件
① 准备存放证书和密钥的目录:mkdir -p /etc/nginx/ssl
② 生成私钥:
openssl genrsa 1024 > /etc/nginx/ssl/server.key
这段代码使用 OpenSSL 工具生成一个 RSA 私钥,指定私钥长度为 1024 位,并重定向到指定文件 (.key)
③ 使用私钥生成证书签名请求:
openssl req -new -key /etc/nginx/ssl/server.key > /etc/nginx/ssl/server.csr
这段代码使用 OpenSSL 工具创建一个证书签名请求(Certificate Signing Request,CSR),CSR 包含了与证书申请相关的信息,它通常会被提交给证书颁发机构(CA),以便获得一个数字证书。
● req:这是 OpenSSL 的子命令,用于处理证书请求和相关操作 ;-new:创建一个新的证书签名请求。
● -key /etc/nginx/ssl/server.key:指定私钥文件的路径,该私钥将与 CSR 相关联。
● > /etc/nginx/ssl/server.csr:将生成的 CSR 内容重定向至指定的位置。
④ 生成数字证书:
openssl req -x509 -days 365 -key /etc/nginx/ssl/server.key -in /etc/nginx/ssl/server.csr > /etc/nginx/ssl/server.crt
● -x509:生成自签名数字证书(不经过公共证书颁发机构 (CA) 签名的证书);
-days 365:证书的有效期为 365 天
● -key /etc/nginx/ssl/server.key:指定密钥文件;
● -in /etc/nginx/ssl/server.csr:指定证书文件;
● > /etc/nginx/ssl/server.crt:生成的数字证书保存路径
(3) 私有 CA 部署
① 创建目录
编写配置文件并进行域名解析
server {
listen 443 ssl;
server_name www.b.com;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
location / {
root /usr/share/nginx/html/b;
index index.html index.htm;
}
}
指定证书文件和私钥文件路径:
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
② 查看 443 端口是否启动
查看测试网页,是私有 CA,证书签名不安全,火狐浏览器会进行风险提醒。
三、nginx 平滑升级
1、概念:
Nginx平滑升级(Smooth Upgrade)是指在不中断正在运行的 Nginx 服务器的情况下,将 Nginx 软件本身或其配置文件进行升级。
2、操作流程(1.24.0 平滑升级到 1.25.2)
① 查看 nginx 当前版本:
② 解压新的安装包,编译:
./configure + nginx 原有编译参数 && make
● ./configure 命令用于配置 Nginx 的编译选项,指定了用户、用户组、安装目录以及要启用的模块等信息;
● make 命令会根据前面配置的选项,开始编译 Nginx 源代码。
● 报错信息及解决办法
./configure: error: C compiler cc is not found
安装 gcc 编译器:
yum -y install gcc gcc-c++ autoconf automake make
./configure: error: the HTTP rewrite module requires the PCRE library.
安装 PCRE:
yum -y install pcre-devel openssl openssl-devel
③ 备份旧的 nginx 可执行文件:
mv /usr/sbin/nginx /usr/sbin/nginx_$(date +%F)
④ 复制新的 nginx 可执行文件:
查看新的可执行文件存放的位置:
复制到原路径下:
测试新版本的 nginx 是否正常:
/usr/sbin/nginx -t:-t 是一个命令行选项,表示进行配置文件的测试,运行这个命令时,Nginx 将读取配置文件并检查其语法和结构是否正确。
⑤ 向 nginx 发送平滑重载信息:
kill -USR2 `cat /var/run/nginx.pid`
这个命令的作用是向 nginx 主进程发送 USR2 信号来触发 nginx 的平滑重载,平滑重载操作允许在不中断当前正在处理的连接的情况下,重新加载Nginx的配置文件。
● kill -USR2:发送 USR2 信号,USR2 是 nginx 的信号类型,用于触发平滑重载操作;
● cat /var/run/nginx.pid 是一个子命令,用于读取Nginx主进程的PID(进程ID)文件中的内容,并将其作为参数传递给 kill 命令。
nginx.pid.oldbin 文件是在执行 nginx 平滑升级时创建的。这个文件的作用是在升级过程中保留旧版本的 Nginx 主进程的进程 ID(PID),以便在升级成功后能够进行回滚操作。
kill -WINCH `cat /var/run/nginx.pid.oldbin`
kill -HUP `cat /var/run/nginx.pid.oldbin`
kill -QUIT `cat /var/run/nginx.pid.oldbin`
WINCH 信号用于触发 Nginx 主进程执行平滑重载操作;
HUP 信号用于请求 Nginx 主进程重新加载其配置文件;
QUIT 信号它会等待正在处理的连接完成,然后停止 Nginx 服务。
⑥ 查看 nginx 是否升级成功:
可以看到此时的 nginx 已由 1.24.0 升级到 1.25.2