首页  /  Web 应用服务  /  正文

HTTPS 证书配置与 LNMP 环境

Web 应用服务 2026-10-01📖 13 分钟👁 —
🌐 Web 应用服务 · Nginx第 8 / 8 页12345678📖 完整导航 →

一、Http 安全性

http 为何不安全

数据传输过程并没有加密,可以被拦截解包(尤其在公共场合不要连莫名其妙的 WiFi):

数据经多级网关被解包成明文

所以要增加安全的协议,而且这个协议服务端和客户端都要支持。

企业可以设定自己的加密算法内置在服务端,仅靠开源产品肯定不安全。

现在常见的方式是客户端和服务端沟通决定加密算法。

非对称加密原理

客户端上有公钥,服务端上有私钥。用户第一次请求不走 80,走 443 拿到公钥。

而且必须满足:公钥加密公钥解不开

之后传递数据的过程图和加密过程如下:

公钥加密私钥解密,反过来私钥加密公钥解密

为何而需要 CA 机构、HTTPS 的伟大发明(CA 证书)

坏人!拦截客户端的包,代替客户端请求服务器拿到公钥,这样加密就没用了:

中间人拿着假公钥和真公钥两边骗

假的私钥解开数据还能改包,发给假数据给服务器。

CA 认证过程如下图(有点复杂,慢慢看):

CA 认证的完整流程

域名所有者提交资料和费用,CA 机构认证域名对应的服务器的所有者是域名的所有者(要求所有者放指定文件在指定位置,这一点劫持者是做不到的),即认证权限。

CA 对服务器下发的公钥进行认证,CA 自己对公钥加密,生成一份证书:

浏览器里显示连接是安全的、证书有效

服务器再次下发数据给客户端时,不下发公钥,下发 CA 的证书,而客户端自带 CA 的公钥可以解开 CA 证书(此过程劫持者没有 CA 私钥,无法伪装成 CA 机构)。

客户端解开证书获得服务器的公钥(劫持者无法用公钥解开数据),然后给服务器传输。

操作系统会内置 CA 机构的私钥,所以别乱装奇怪的操作系统和证书、用正版的浏览器,盗版的非常不安全,浏览器 url 的锁,是浏览器识别正版认证的标识。

想要查看 win 的证书,可以使用 Win + R 输入 certmgr.msc 所有内嵌在操作系统的证书都在此(如下图):

certmgr 里受信任的根证书颁发机构等一长串

某些企业会再次用更深层的加密保护数据。


二、杂项

证书自签名(用的少)

可以用 OpenSSL(开源,地位最高)、图形化工具 XCA Download

购买域名和 vps

域名提供商有很多,最好去靠谱的大平台,防止卷走我们的域名跑路。

现在阿里云用的多,买完了最好改密码。

非对称加密太慢,只用来传钥匙。实际数据用对称加密。


三、LNMP 和 Discuz

基本配置

有一个很方便的安装集成网站 oneinstack.com 可以直接安装 Nginx 的集成版本。

wget -c http://mirrors.oneinstack.com/oneinstack.tar.gz && tar xzf oneinstack.tar.gz && ./oneinstack/install.sh --nginx_option 1 --php_option 9 --phpcache_option 1 --db_option 2 --dbinstallmethod 1 --dbrootpwd oneinstack --reboot 

直接访问公网 IP 出现下面的页面则正常:

OneinStack 控制中心,提示安装成功

我们需要把默认的页面换成自己的 Nginx 页面。

使用编译安装的 Nginx 是集成版目录:

root@iZ2ze8uighngnzvz4mscv9Z:/usr/local/nginx# ll
total 44
drwxr-xr-x 11 root root 4096 May 22 18:51 ./
drwxr-xr-x 16 root root 4096 May 22 18:54 ../
drwx------  2 www  root 4096 May 22 18:51 client_body_temp/
drwxr-xr-x  2 root root 4096 May 22 18:51 conf/
drwx------  2 www  root 4096 May 22 18:51 fastcgi_temp/
drwxr-xr-x  2 root root 4096 May 22 18:51 html/
drwxr-xr-x  2 root root 4096 May 22 18:51 logs/
drwx------  2 www  root 4096 May 22 18:51 proxy_temp/
drwxr-xr-x  2 root root 4096 May 22 18:51 sbin/
drwx------  2 www  root 4096 May 22 18:51 scgi_temp/
drwx------  2 www  root 4096 May 22 18:51 uwsgi_temp/
# 直接进入到conf配置即可

有了 Xshell 直接用记事本编辑,找到 80 端口发现 root 默认配置目录

root /data/wwwroot/default;`可以修改为`root html;

也就是相对于安装 nginx 下的 html。

然后访问 80 端口验证是否配置成功:

访问 80 端口显示 nginx 默认页

在 html 修改信息时,中文乱码可以通过 <meta charset=utf-8> 插入到前面解决。

配置证书

在云厂商的平台申请证书,可以是免费的 SSL 证书,小企业域名少,免费的也够用的。

申请过程不同平台都是不一样的。

购买证书后就配置绑定域名然后填写信息、操作验证:

阿里云 SSL 证书管理里申请个人测试证书

接着按照服务类型下载证书和密钥,传到服务器上,然后配置 server 块到 nginx 默认配置,写到最上头即可:

server {
      listen 443 ssl;
      server_name aa.abc.com; # 这个不写也强制走

      ssl_certificate 		文件名.pem; # 这里原本的格式是crt
      ssl_certificate_key 文件名.key;
}

上传服务器的两个文件 key 和 pem 最好在 nginx/conf 下,默认从这里找配置,然后如上配置 nginx 的相对路径即可。

配置完成后 reload,看 status 没报错就成功了,尝试用 https 访问。

可能显示这样的:

浏览器提示不安全

意味着这个 CA 机构并不权威,还是显示不安全,可以点击 不安全,查看具体的信息。

discuz

这一部分可以先放一放。

Nginx 基础完毕,自此网站的基础配置也算了解完成了,但更重要的是如何解决实际需求——应对高并发的真实环境。

可喜可贺