一、为什么网站需要 HTTPS¶
原笔记对 HTTPS 的总结很直接:
- 它本质上是基于 HTTP 的
- 但在传输过程中加入了加密
这意味着如果不用 HTTPS:
- 浏览器和网站之间传输的数据就是明文
而现在的大多数业务场景里,HTTPS 已经成为默认要求,尤其是:
- 用户登录
- 敏感信息提交
- 需要启用更高版本 HTTP 协议的场景
原笔记也提到:
- 很多企业默认都在用 HTTPS
- HTTP/2 也通常建立在 HTTPS 之上
二、部署 HTTPS 一般要准备什么¶
原笔记把流程概括为三步:
1、准备域名
2、根据域名申请证书
3、在 Web 或 LB 上完成配置
也就是说,真正上线 HTTPS 时最关键的不是“只改一个端口”,而是要同时具备:
- 域名
- 证书公私钥
- 对应的 Nginx 配置
三、单机 HTTPS 部署的基本步骤¶
原笔记用单台 Web 服务器做了最基础的 HTTPS 部署示例。
先把证书上传到主机,例如:
mkdir -p /etc/nginx/ssl_keys/
unzip 11654958_www.harbor-local.cn_nginx.zip -d /etc/nginx/ssl_keys/
ll /etc/nginx/ssl_keys/
可以看到其中至少包含:
.pem证书文件.key私钥文件
这两者缺一不可。
四、Nginx HTTPS 配置怎么写¶
原笔记给出的单机配置如下:
server {
listen 443 ssl;
server_name ssl.harbor-local.cn;
root /app/code/ssl;
ssl_certificate /etc/nginx/ssl_keys/www.harbor-local.cn.pem;
ssl_certificate_key /etc/nginx/ssl_keys/www.harbor-local.cn.key;
error_log /var/log/nginx/ssl-error.log notice;
access_log /var/log/nginx/ssl-access.log main;
location / {
index index.html;
}
}
这份配置里最关键的变化有三处:
listen 443 ssl;ssl_certificatessl_certificate_key
它们分别表示:
- 监听 HTTPS 常用端口
443 - 指定证书文件
- 指定私钥文件
五、别忘了准备站点目录和首页文件¶
原笔记同时创建了站点目录和测试首页:
mkdir -p /app/code/ssl
echo ssl.oldboylinux.cn web01 > /app/code/ssl/index.html
然后执行:
nginx -t
systemctl restart nginx
只要语法通过并能成功启动,说明 HTTPS 站点已经具备了最基本的运行条件。
六、为什么 HTTPS 测试还离不开域名解析¶
原笔记随后提醒:
- HTTPS 证书和域名是对应的
因此测试时不能只靠裸 IP,而要让域名真正解析到目标主机。
无论是在云解析平台上配置,还是在本地 hosts 里临时加记录,核心都是:
- 让浏览器用正确域名访问站点
例如:
192.168.1.20 ssl.harbor-local.cn
然后再访问:
https://ssl.harbor-local.cn/
七、命令行如何创建自签名证书¶
除了使用证书平台下发的文件,原笔记还补充了如何用命令行自己生成证书。
先生成私钥:
openssl genpkey -algorithm RSA -out server.key
再生成自签名证书:
openssl req -x509 -sha256 -newkey rsa:2048 -key server.key -out server.crt -days 36500
这两个命令的作用分别是:
- 生成 RSA 私钥
- 基于私钥签发一个自签名 X.509 证书
这种方式很适合:
- 实验环境
- 内网测试
- 理解 HTTPS 证书文件的基本结构
八、小结¶
HTTPS 入门阶段最重要的,不是先记复杂加密原理,而是先把部署链路理顺:
- 域名和证书对应
- Nginx 在
443上启用ssl - 证书和私钥路径必须正确
- 站点依然要有正常的网页目录和访问入口
把这条基础链路打通之后,后面再学习 HTTP 跳 HTTPS、集群 HTTPS 和证书监控就会更顺手。