网站需求:
一、基于域名[www.openlab.com](http://www.openlab.com)可以访问网站内容为 welcome to openlab
二、给该公司创建三个子界面分别显示学生信息,教学资料和缴费网站,基于[www.openlab.com/student](http://www.openlab.com/student) 网站访问学生信息,[www.openlab.com/data](http://www.openlab.com/data)网站访问教学资料
[www.openlab.com/money网站访问缴费网站](http://www.openlab.com/money网站访问缴费网站)。
三、(1)学生信息网站只有song和tian两人可以访问,其他用户不能访问。
(2)访问缴费网站实现数据加密基于https访问
服务端工作:
1.关闭防火墙,selinux调整至宽容模式,安装nginx并设置开机自启
[root@node1-server ~]# setenforce 0
[root@node1-server ~]# getenforce
Permissive
[root@node1-server ~]# systemctl stop firewalld # 已做,省略
[root@node1-server ~]# systemctl disable firewalld # 已做,省略
[root@node1-server ~]# systemctl status firewalld
[root@node1-server ~]# yum install nginx -y
[root@node1-server ~]# nginx -V # 查看版本
[root@node1-server ~]# systemctl start nginx
[root@node1-server ~]# systemctl enable nginx
[root@node1-server ~]# systemctl status nginx
一、基于域名[www.openlab.com](http://www.openlab.com)可以访问网站内容为 welcome to openlab
1.进入 /etc/nginx/nginx.conf 主配置文件并找到定义网站文件的根目录
[root@node1-server ~]# vim /etc/nginx/nginx.conf
41 server_name www.openlab.com; # 定义当前服务器块对应的域名
42 root /usr/share/nginx/html; # 定义网站文件的根目录,Nginx 会从该目录读取网页文件
2.进入定义网站文件的根目录cd /usr/share/nginx/html/
[root@node1-server ~]# cd /usr/share/nginx/html/ # Nginx 会从该目录读取网页文件
[root@node1-server html]# ll
total 12
-rw-r--r--. 1 root root 3971 Feb 13 20:22 404.html
-rw-r--r--. 1 root root 4020 Feb 13 20:22 50x.html
drwxr-xr-x. 2 root root 27 Apr 11 10:13 icons
lrwxrwxrwx. 1 root root 25 Feb 13 20:23 index.html -> ../../testpage/index.html
-rw-r--r--. 1 root root 368 Feb 13 20:22 nginx-logo.png
lrwxrwxrwx. 1 root root 14 Feb 13 20:23 poweredby.png -> nginx-logo.png
lrwxrwxrwx. 1 root root 37 Feb 13 20:23 system_noindex_logo.png -> ../../pixmaps/system-noindex-logo.png
3.将原初始网页文件备份
[root@node1-server html]# cp index.html index.html.bak
4.将新内容写入 /usr/share/nginx/html/index.html 文件中
[root@node1-server html]# echo "Welcome to Openlab!!!" > index.html
echo "Welcome to Openlabll!" > index.html
[root@node1-server html]# nginx -t # 检查配置文件的语法错误,无错返回ok
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@node1-server html]# cat index.html
Welcome to Openlabll!
- nginx # 启动nginx
- nginx restart # 重启服务
- nginx -s reload # 重新加载配置文件
- nginx -s stop # 强行停止服务
- nginx -s quit # 优雅停止服务,即所有请求处理完后退出服务
- nginx -v # 查看版本号
- nginx -t # 检查配置文件的语法错误,无错返回ok
5.向Windows中C:\Windows\System32\drivers\etc\hosts文件中写入域名,重启nginx并测试
192.168.11.135 www.openlab.com # 此处文件不能保存为文本文档(文件后缀为.txt)!
[root@node1-server html]# systemctl restart nginx.service
# 浏览器直接访问 http://www.openlab.com
二、给该公司创建三个子界面分别显示学生信息,教学资料和缴费网站,基于[www.openlab.com/student](http://www.openlab.com/student) 网站访问学生信息,[www.openlab.com/data](http://www.openlab.com/data)网站访问教学资料
[www.openlab.com/money网站访问缴费网站](http://www.openlab.com/money网站访问缴费网站)。
1.创建三个子界面分别显示学生信息,教学资料和缴费网站
[root@node1-server ~]# mkdir /www
[root@node1-server ~]# cd /www
[root@node1-server www]# mkdir data student money
[root@node1-server www]# ls
data money student
[root@node1-server www]# touch data/index.html
[root@node1-server www]# touch student/index.html
[root@node1-server www]# touch money/index.html
[root@node1-server www]# echo "Teaching materials" > data/index.html
[root@node1-server www]# echo "Student Information" > student/index.html
[root@node1-server www]# echo "Payment Website" > money/index.html
[root@node1-server www]# cat data/index.html
Teaching materials
[root@node1-server www]# cat student/index.html
Student Information
[root@node1-server www]# cat money/index.html
Payment Website
2./etc/nginx/nginx.conf文件中增添子网页内容
[root@node1-server ~]# vim /etc/nginx/nginx.conf
38 server {
39 listen 80; # 监听 IPv4 地址的 80 端口
40 listen [::]:80; # 监听 IPv6 地址的 80 端口([::] 表示所有 IPv6 地址)
41 server_name www.openlab.com; # 定义当前服务器块对应的域名
42 root /usr/share/nginx/html;
43 location /data {
44 alias /www/data/; # 将 URL 路径 /data/ 映射到本地目录 /www/data/
45 index index.html index.htm; # 定义该目录的默认索引文件(访问目录时优先查找的文件)
46 }
47 location /student {
48 alias /www/student/; # 将 URL 路径 /student/ 映射到本地目录 /www/student/
49 index index.html index.htm;
50 }
51 location /money {
52 alias /www/money/; # 将 URL 路径 /money/ 映射到本地目录 /www/money/
53 index index.html index.htm;
54 }
3.测试语法是否有误,无误则重启nginx服务
[root@node1-server ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@node1-server ~]# systemctl restart nginx.service
4.Windows测试
三、(1)学生信息网站只有song和tian两人可以访问,其他用户不能访问。
1.安装httpd-tools,创建song、tian两位用户
[root@node1-server ~]# yum install httpd-tools -y
[root@node1-server ~]# cd /www
[root@node1-server www]# htpasswd -c .stupasswd song # 创建一个名为 .stupasswd 的密码文件,并在其中添加一个名为 song 的用户,同时为该用户设置登录密码(通过交互式输入),常用于 HTTP 基本认证(如 Nginx、Apache 服务器的权限控制),确保只有授权用户能访问特定资源。
New password: # 123,此处隐藏
Re-type new password: # 123,此处隐藏
Adding password for user song
[root@node1-server www]# htpasswd -b .stupasswd tian 123 # 向名为 .stupasswd 的密码文件中添加一个名为 tian 的用户,并设置其密码为 123,无需手动输入密码,直接在命令中指定
Adding password for user tian
[root@node1-server www]# ll -a
total 4
drwxr-xr-x. 5 root root 64 Apr 11 17:21 .
dr-xr-xr-x. 20 root root 257 Apr 11 15:28 ..
drwxr-xr-x. 2 root root 24 Apr 11 15:31 data
drwxr-xr-x. 2 root root 24 Apr 11 15:31 money
drwxr-xr-x. 2 root root 24 Apr 11 15:31 student
-rw-r--r--. 1 root root 86 Apr 11 17:21 .stupasswd
1. htpasswd
- 工具名称:Apache 自带的密码文件管理工具,用于生成和管理认证用户的密码文件。
- 适用场景:配置服务器(如 Apache、Nginx)的访问权限时,通过密码文件验证用户身份。
- 命令格式:htpasswd <选项> <密码文件> <用户名>
2. 选项 -c
- 作用:-c 是 create 的缩写,表示创建一个新的密码文件。
- 如果指定的密码文件(.stupasswd)不存在,会创建新文件;
- 如果文件已存在,会提示是否覆盖(需谨慎,避免删除已有用户)。
- 首次创建密码文件时必须使用 -c,后续添加用户时无需再加(否则会覆盖原有文件)。
3. 选项 -b
- 作用:用于非交互方式设置用户密码,允许在命令行中直接指定用户名和密码,而无需手动输入,适用于脚本自动化或批量处理。
4. 密码文件路径 .stupasswd
- 文件名称:.stupasswd(隐藏文件)。
- 存储内容:加密后的用户名和密码。
- 存储位置:当前命令执行的目录(可通过绝对路径指定其他位置,如 /etc/nginx/.stupasswd)。
2.更新/etc/nginx/nginx.conf文件配置,判断语法,重启服务,Windows进行测试
[root@node1-server ~]# vim /etc/nginx/nginx.conf
47 location /student {
48 alias /www/student/;
49 index index.html index.htm;
50 auth_basic "Restricted"; # 启用 HTTP 基本认证,提示用户输入用户名和密码;"Restricted" 是显示给用户的认证提示信息(浏览器弹出的登录框会显示此文本)
51 auth_basic_user_file /www/.stupasswd; # 指定存储认证用户和密码的文件路径
[root@node1-server www]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@node1-server www]# systemctl restart nginx.service
(2)访问缴费网站实现数据加密基于https访问
1.创建私钥
[root@node1-server ~]# openssl genrsa -aes128 2048 > /etc/nginx/money.key
# 作用:生成一个 2048 位的 RSA 私钥,并使用 AES-128 算法对私钥进行加密保护,最终将私钥保存到文件 /etc/nginx/money.key 中。
# 核心目的:为 HTTPS 服务器(如 Nginx)创建私钥,用于加密通信数据,同时通过 AES 加密私钥本身,防止未经授权的访问。
Enter PEM pass phrase: # 123456,此处隐藏
Verifying - Enter PEM pass phrase: # 123456,此处隐藏
1. openssl
工具名称:OpenSSL 是一个开源的密码学工具包,用于实现安全通信所需的加密、解密、证书管理等功能。
应用场景:生成私钥、证书签名请求(CSR)、创建自签名证书等。2. genrsa
子命令:genrsa 用于生成 RSA 私钥(RSA 是一种非对称加密算法,用于密钥交换和数字签名)。3. -aes128
加密算法与密钥长度:-aes128 表示使用 AES-128 对称加密算法对生成的私钥进行加密。
AES是目前广泛使用的安全加密算法,128 表示密钥长度为 128 位(安全性与性能的平衡选择,也可使用 -aes256 增强安全性)。
关键作用:私钥本身会被加密存储,后续使用时需输入密码解锁,防止私钥文件泄露后被直接利用。4. 2048
RSA 密钥长度:指定生成的 RSA 私钥位数为 2048 位。
安全标准:2048 位是目前推荐的最小长度(2016 年后,1024 位被认为不够安全)。
更高位数(如 4096 位)安全性更强,但会增加计算开销。5. > /etc/nginx/money.key
输出路径:将生成的私钥重定向到文件 /etc/nginx/money.key。
目录选择:/etc/nginx/ 是 Nginx 的配置目录,用于存放证书和私钥(需确保 Nginx 服务有读取该文件的权限)。文件名 money.key 可自定义,但建议包含业务相关名称(如 server.key)。
2.制作证书
[root@node1-server ~]# openssl req -utf8 -new -key /etc/nginx/money.key -x509 -days 365 -out /etc/nginx/money.crt
# 作用:利用已有的 RSA 私钥(/etc/nginx/money.key)生成一个 自签名的 X.509 证书,有效期为 365 天,并保存到文件 /etc/nginx/money.crt 中。
# 核心目的:为 HTTPS 服务器(Nginx)提供证书文件,实现加密通信(TLS/SSL 协议),同时通过自签名方式(无需 CA 机构)快速生成证书(适用于测试环境或内部系统)。
Enter pass phrase for /etc/nginx/money.key: # 123456,私钥密码,此处隐藏
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:86 # 国家代码(如 CN)
State or Province Name (full name) []:shh # 省/州
Locality Name (eg, city) [Default City]:xi'an # 城市
Organization Name (eg, company) [Default Company Ltd]:openlab # 组织名称
Organizational Unit Name (eg, section) []:RHCE # 部门
Common Name (eg, your name or your server's hostname) []:server # 域名(必须与 server_name 一致)或填写服务器的hostname,此处server为主机名;将 Common Name 填写为服务器主机名仅适用于内网测试环境
Email Address []:zhao@qq.com # 邮箱(可选)
[root@node1-server ~]# cd /etc/nginx/
[root@node1-server nginx]# cp money.key money.key.bak # 备份私钥
[root@node1-server nginx]# openssl rsa -in money.key.bak -out money.key # 将加密的私钥转换为未加密的私钥(或直接复制私钥内容),主要用于简化测试环境中的私钥使用或恢复备份。
Enter pass phrase for money.key.bak: # 123456,私钥密码,此处隐藏
writing RSA key
1. openssl req
子命令:
req:用于处理证书签名请求(CSR)和自签名证书生成。2. 选项 -utf8
作用:确保命令执行过程中的输入输出使用 UTF-8 编码,支持中文等多字节字符(如证书中的组织名称包含中文时必需)。
示例:若证书申请信息(如组织名称)包含中文,不加此选项可能导致乱码。3. 选项 -new
作用:创建一个 新的证书签名请求(CSR) 或自签名证书(结合 -x509 时为自签名)。
核心逻辑:基于私钥生成公钥,并生成证书所需的元数据(如组织信息、域名等)。4. 选项 -key /etc/nginx/money.key
作用:指定用于生成证书的 私钥文件路径(本例中为之前生成的 money.key)。
依赖关系:
私钥必须提前存在(如通过 openssl genrsa 生成)。
证书与私钥需匹配(即证书由该私钥对应的公钥生成)。5. 选项 -x509
作用:生成 自签名的 X.509 证书(而非 CSR)。
关键区别:
自签名证书:由服务器自身生成,无需 CA 机构签名(浏览器会显示安全警告,适用于测试)。
CSR:需提交给 CA 机构签名,生成受信任的证书(用于生产环境)。6. 选项 -days 365
作用:指定证书的有效期(天数)
安全建议:
生产环境建议设置更短的有效期(如 90 天),遵循现代安全实践(如 Let's Encrypt 的证书有效期为 90 天)。
过期后需重新生成证书并更新服务器配置。7. 选项 -out /etc/nginx/money.crt
作用:指定生成的证书文件的输出路径和名称。
文件格式:PEM 格式(文本形式,包含证书内容和元数据)。8. 选项 -in money.key.bak
作用:指定 输入文件路径,即待处理的私钥文件(本例中为备份文件 money.key.bak)。9. 选项 -out money.key
作用:指定 输出文件路径,即处理后的私钥保存位置(本例中为 money.key)。10. openssl rsa
子命令:
rsa:专门用于处理 RSA 私钥(如转换格式、去除密码保护、提取公钥等)。
3./etc/nginx/nginx.conf中增添新的server,启用https
[root@node1-server nginx]# vim /etc/nginx/nginx.conf # 通过 server_name 和 listen 443 ssl 提供 HTTPS 服务,需要删除监听80端口部分的 location /money
71 server {
72
73 listen 443 ssl; # 声明服务器监听 443 端口(HTTPS 协议默认端口);ssl 标志表示启用 SSL/TLS 加密,确保客户端与服务器之间的通信数据加密传输。
74 server_name www.openlab.com; # 定义当前 server 块对应的域名
75
76 ssl_certificate /etc/nginx/money.crt; # SSL 证书文件路径(公钥证书)
77 ssl_certificate_key /etc/nginx/money.key; # 私钥文件路径(与证书匹配的 RSA 私钥)
78
79 ssl_session_cache shared:SSL:1m; # SSL 会话缓存(共享内存,容量 1MB)
80 ssl_session_timeout 5m; # 会话缓存超时时间(5 分钟)
81 ssl_ciphers HIGH:!aNULL:!MD5; # 允许的加密算法(高强度,排除不安全选项)
82 ssl_prefer_server_ciphers on; # 优先使用服务器端的加密算法列表
83
84 location /money { # 匹配以 /money 开头的 URL(https://www.openlab.com/money/)
85 alias /www/money/; # 将 URL 路径 /money/ 映射到本地目录 /www/money/
86 index index.html index.htm; # 定义目录的默认索引文件
87 }
88 }
4.判断语句是否无误,重启服务
[root@node1-server nginx]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@node1-server nginx]# systemctl restart nginx.service
5.Windows测试
通过 https://www.openlab.com/money/ 访问