第五章 web服务器
第一节
DNS:对域名进行解析,查询对应的地址
1.1 web服务器简介
www是world wide web的缩写,也就是全球信息广播的意思
1.2.网址及HTTP简介
web服务器提供的这些数据大部分都是文件,那么我们需要在服务器端先将数据文件写好,并且放置在某个特殊的目录下面,这个目录就是我们整个网站的首页,在redhat中,这个目录默认在 /var/www/html 。浏览器是通过你在地址栏中输入你所需要的网址来取得这个目录的数据的。
URL:Uniform Resource Locator,统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。
网址格式:<协议>://<主机或主机名>[:port]/<目录资源,路径>
浏览器常支持的协议有:http、https、ftp等。
主机地址或者主机名:主机地址就是服务器在因特网所在的IP地址。如果是主机名的话,那么就需要域名解析了。
端口号(port):http为80,https为443 (IANA:互联网数字分配机构)
-
0-1023:众所周知,永久地分配给固定的应用程序使用,特权端口(只有管理员有权限启用并让进程监听)
-
1024-41951:亦为注册端口,但要求不是特别严格,分配给程序注册为某应用使用:3306/TCP
-
41952-60000:客户端程序随机使用的端口,动态端口,或私有端口
1.3.http请求方法:
在http通信中,每个http请求报文都包含一个方法,用以告诉web服务器端需要执行哪些具体的动作,这些动作包括:获取指定web页面、提交内容到服务器、删除服务器上资源文件等。
状态代码:由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。
状态码范围 作用描述
100 - 199 用于指定客户端相应的某些动作
200 - 299 用于表示请求成功
300 - 399 用于己经移动的文件,并且常被包含在定位头信息中指定新的地址系信息
400 - 499 用于指出客户端的错误
500 - 599 用于指出服务端的错误
1.4.常见状态代码、状态描述的说明如下:
200 OK:客户端请求成功
收到数据,但是数据有问题
-
400 Bad Request:客户端请求有语法错误,不能被服务器所理解
-
401 Unauthorized:请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用
-
403 Forbidden:服务器收到请求,但是拒绝提供服务
-
404 Not Found:请求资源不存在,举个例子:输入了错误的URL
服务器内部的问题 -
500 Internal Server Error:服务器发生不可预期的错误
-
503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常
1.5.http协议请求的工作流程
HTTP默认端口80和8080
(1)终端客户在web浏览器地址栏输入访问地址域名售卖
(2)web浏览器请求DNS服务器把域名www.ceshi.com解析成web服务器的IP地址
(3)web浏览器将端口号(默认是80)从访问地址(URL)中解析出来
(4)web浏览器通过解析后的ip地址及端口号与web服务器之间建立一条TCP连接
(5)建立TCP连接后,web浏览器向web服务器发送一条HTTP请求报文
(6)web服务器响应并读取浏览器的请求信息,然后返回一条HTTP响应报文。
(7)web服务器关闭HTTP连接,关闭TCP连接,web浏览器显示访问的网站内容到屏幕上。
第二节 web服务器的类型
2.1 静态页面和动态网页
静态页面:
静态页面是指内容固定不变的网页。它的内容在服务器上是以 HTML 文件的形式存在,当用户请求访问时,服务器直接将预先存储好的 HTML 文件发送给用户的浏览器进行显示。
例如,一个简单的个人简历网页,其中的文字、图片、布局等在创建完成后就不会再发生变化,这就是静态页面。
静态页面的优点包括加载速度快,因为不需要服务器进行复杂的处理;对服务器的资源要求较低,易于维护和部署。
但是,其缺点也很明显,比如不易更新和修改内容,每次修改都需要重新编辑 HTML 文件;缺乏交互性,不能根据用户的操作实时动态地显示不同的内容。
动态页面:
动态页面则不同,它的内容不是固定不变的,而是根据用户的请求、数据库中的数据以及特定的程序逻辑在服务器端实时生成的。
比如,一个电商网站的商品列表页面,当数据库中的商品信息发生变化时,页面能够实时显示最新的商品信息。
动态页面的优点是具有高度的交互性和灵活性,能够根据用户的操作和不同的条件显示个性化的内容;方便内容管理和更新,无需手动修改每个页面。
然而,动态页面也存在一些缺点,例如加载速度相对较慢,因为服务器需要进行计算和处理;对服务器的性能要求较高,开发和维护成本也相对较高。
2.2静态页面资源特征
静态页面资源具有以下特性:
1. 内容固定: - 一旦创建完成,其显示的文本、图像、布局等元素就不会自行改变。 - 例如,一个介绍历史事件的静态网页,无论何时访问,其描述的内容和呈现方式始终保持一致。
2. 快速加载: - 由于不需要服务器进行额外的计算和处理,直接将预先准备好的 HTML 文件发送给浏览器。 - 比如一个只有简单文字和少量图片的静态博客页面,通常能够迅速加载出来。
3. 低服务器资源消耗: - 服务器只需响应请求并传输文件,对服务器的 CPU、内存等资源占用较少。 - 大量用户同时访问静态页面时,服务器的压力相对较小。
4. 易于缓存: - 浏览器和代理服务器可以更有效地对静态页面进行缓存。 - 下次用户再次访问相同的页面时,可以直接从本地缓存中获取,进一步加快加载速度。
5. 简单维护: - 主要是对 HTML、CSS 和 JavaScript 文件的直接编辑。 - 例如修改页面的颜色、字体或添加新的图片,只需修改相应的文件即可。
6. 安全性较高: - 因为没有与服务器端的动态交互,减少了潜在的安全漏洞。 - 降低了遭受诸如 SQL 注入等攻击的风险。
7. 可预测性强: - 每次访问的结果都是相同的,便于测试和质量保证。 - 开发人员能够准确地知道页面在各种情况下的表现。
2.4 nginx的搭建方式:
LAMP 、LNMP
以下是使用 Nginx 搭建 LAMP(Linux + Apache + MySQL + PHP)和 LNMP(Linux + Nginx + MySQL + PHP)环境的一般步骤:
LAMP 环境搭建:
1. 安装 Linux 操作系统(如 CentOS、Ubuntu 等)。
2. 安装 Apache 服务器:
- 在 CentOS 上,可以使用命令 `yum install httpd` 安装。
- 在 Ubuntu 上,可以使用命令 `apt-get install apache2` 安装。
3. 安装 MySQL 数据库:
- CentOS:`yum install mysql-server`
- Ubuntu:`apt-get install mysql-server`
4. 安装 PHP:
- CentOS:`yum install php`
- Ubuntu:`apt-get install php`
5. 配置 Apache 以支持 PHP:
- 在 Apache 的配置文件中(如 httpd.conf),添加对 PHP 的支持模块。
LNMP 环境搭建:
1. 同样先安装好 Linux 操作系统。
2. 安装 Nginx 服务器:
- CentOS:`yum install nginx`
- Ubuntu:`apt-get install nginx`
3. 安装 MySQL 数据库(步骤与 LAMP 中的相同)。
4. 安装 PHP:
- 同时需要安装 PHP-FPM(FastCGI 进程管理器),以便与 Nginx 协同工作。
5. 配置 Nginx 以支持 PHP:
- 在 Nginx 的配置文件(如 nginx.conf)中,设置 PHP 的处理规则,将 PHP 请求转发给 PHP-FPM 处理。
需要注意的是,在实际搭建过程中可能会遇到各种依赖问题和配置错误,需要根据具体的错误提示进行解决。
例如,在安装 MySQL 时可能会遇到设置 root 密码的提示,需要牢记密码以便后续使用。在配置 Nginx 时,可能需要根据服务器的实际 IP 地址和域名进行相应的修改。
2.5 web服务器基本配置
nginx服务器:
主配置文件:/etc/nginx/nginx.conf
子配置文件:/etc/nginx/conf.d/*.conf
请求目录文件位置:/var/share/nginx/html
apache服务器:
主配置文件:/etc/httpd/conf/httpd.conf
子配置文件:/etc/httpd/conf.d/
请求文件位置:/var/www/html
防火墙和关闭 selinux(Security-Enhanced Linux)防火墙。
systemctl stop firewalld 和 setenforce 0
最后查看一下防火墙是否关闭
systemctl status firewalld
systemctl stop firewalld ##关闭防火墙
systemctl disabled firewalld ##关闭防火墙开机自启
systemctl status firewalld ##查看防火墙是否关闭
setenforce 0 ##临时关闭selinux
vim /etc/selinux/config
SELINUX=disabled ##永久关闭
1.下载nginx
[root@server]# yum install nginx -y
2.开启服务
[root@server]# systemctl start nginx
3.查找uginx的配置文件
[root@server]# rpm -ql nginx(找.conf)
tree /etc/nginx #查看树形目录
4.编辑
[root@server]# vim /etc/nginx/nginx.conf
#nginx服务配置文件nginx.conf的结构
#############全局配置(无{}标志)############
user nginx; #进程所属用户
worker_processes auto; #线程数量CPU核心数,(双核4线程,可以设置为4)
error_log /var/log/nginx/error.log; #错误日志文件路径
pid /run/nginx.pid; #nginx pid文件位置
include /usr/share/nginx/modules/*.conf; #导入功能模块配置文件
#######################################################
##################性能配置(有{}标志)############
events {
worker_connections 1024; #tcp连接数
}
########################################################
##################http模块配置(有{}标志)############
http { #http区块开始
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#日志显示格式定义
access_log /var/log/nginx/access.log main; #访问日志文件位置
(不需要管以下这个)
sendfile on; #开启高效文件传输
tcp_nopush on; #性能优化参数
tcp_nodelay on; #性能优化参数
keepalive_timeout 65; #持久连接或超时时间
types_hash_max_size 4096; #性能优化参数
include /etc/nginx/mime.types; #可解析的静态资源类型
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf; #加载子配置文件
server { #server区块开始,就相当于一个虚拟主机
listen 80;
listen [::]:80;
server_name _; #服务名
root /usr/share/nginx/html; #主页存放路径
include /etc/nginx/default.d/*.conf; #子配置文件路径
error_page 404 /404.html; #404错误的返回页面
location = /404.html { #location 定义用户请求的uri,并返回相应的资源文件
}
error_page 500 502 503 504 /50x.html; #5xx状态返回的页面
location = /50x.html {
}
}
}
补充:
看nginx是否在运行
[root@server]# ps -aux | grep nginx
总结:结束进程,可以stop该进程,也可以rm这个进程文件
(这里以nginx.pid举例)
[root@server]# kill -9 1991或者
[root@server]# rm /run/nginx.pid
index.html是默认的,可以不写;
第三节 案例(Nginx)
案例一:多ip访问多网站
网站ip地址主机位为100,设置目录首页为/www/ip/100,网页内容为:this is 100
网站ip地址主机位为200,设置目录首页为/www/ip/200,网页内容为:this is 200
ip -a 查看网卡信息
rounte -n / ip route show ##查看网关等信息
1、添加IP地址
[root@localhost ~]# nmcli connection modify ens33 +ipv4.address 192.168.84.100/24 +ipv4.gateway 192.168.84.2 ipv4.dns 114.114.114.114 ipv4.method manual autoconnect yes
[root@localhost ~]# nmcli connection modify ens33 +ipv4.addresses 192.168.84.200/24
[root@localhost ~]# nmcli connection up ens33
2、创建网页根目录,定义网页内容
[root@localhost ~]# mkdir -pv /www/ip/{100,200}
[root@localhost ~]# echo this is 100 > /www/ip/100/index.html
[root@localhost ~]# echo this is 200 > /www/ip/200/index.html
3、新建文件,写入配置
[root@localhost ~]# vim /etc/nginx/conf.d/test1.conf
server {
listen 192.168.84.100:80;
root /www/ip/100;
location / {}
}
server {
listen 192.168.84.200:80;
root /www/ip/200;
location / {}
[root@localhost ~]# systemctl restart nginx
4、检查结果
[root@localhost ~]# curl 192.168.84.100
this is 100
[root@localhost ~]# curl 192.168.84.200
this is 200
案例二:基于不同端口访问网站
使用web服务器默认端口的网站,设置网站首页目录位置/www/port/80,网页内容为:the port is 80
建立一个使用1000端口的网站,设置网站首页目录位置/www/port/1000,网页内容为:the port is 1000
1、添加IP地址
[root@localhost ~]# nmcli connection modify ens33 +ipv4.address 192.168.84.100/24 +ipv4.gateway 192.168.84.2 ipv4.dns 114.114.114.114 ipv4.method manual autoconnect yes
[root@localhost ~]# nmcli connection up ens33
2、创建网页根目录,定义网页内容
[root@localhost ~]# mkdir -pv /www/port/{80,1000}
[root@localhost ~]# echo the port is 80 > /www/port/80/index.html
[root@localhost ~]# echo the port is 1000 > /www/port/1000/index.html
3、新建文件,写入配置
[root@localhost ~]# vim /etc/nginx/conf.d/test2.conf
server {
listen 192.168.84.100:80;
root /www/port/80;
location / {}
}
server {
listen 192.168.84.100:1000;
root /www/poort/1000;
location / {}
[root@localhost ~]# systemctl restart nginx
4、检查结果
[root@localhost ~]# curl 192.168.84.100
the port is 80
[root@localhost ~]# curl 192.168.84.100:1000
the port is 1000
第四节 搭建静态网站–基于https协议
1.简介
HTTP协议以明文方式发送内容,不提供任何方式的数据加密;
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS;
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道。HTTPS并不是一个新协议,而是HTTP+SSL(Secure Sockets Layer — 安全套接层)(TLS)。原本HTTP先和TCP(假定传输层是TCP协议)直接通信,而加了SSL后,就变成HTTP先和SSL通信,再由SSL和TCP通信,相当于SSL被嵌在了HTTP和TCP之间。
SSL协议分为两层:
- SSL记录协议 (SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能。
- SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
SSL协议提供的服务:
1)认证用户和服务器,确保数据发送到正确的客户机和服务器
2)加密数据以防止数据中途被窃取
3)维护数据的完整性,确保数据在传输过程中不被改变
2.https协议加密所使用的算法
2.1 Hash算法常用在不可还原的密码存储、信息完整性校验等
常见的HASH算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMACSHA1。
2.2 共享密钥加密(对称密钥加密):加密和解密使用相同密钥。
对称加密算法:DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6和AES。
2.3公开密钥加密(非对称密钥加密):公开密钥加密使用一对非对称的密钥。一把叫做私有密钥,一把叫做公开密钥。
常见的非对称加密算法:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)。
3.TLS完整的通信流程
第一阶:段客户端端申请建立https连接
第二阶段:客户端和服务器确认加密版本,加密套件
第三阶段:证书发送验证 (客户端验证证书取出公钥,用公钥加密生成的对称秘钥发送个服务器通知改变加密信息传递)
第四阶段:服务收到消息,用私钥解密取,确认对称秘钥通知客户端ssl通道建立完成
第五阶段:客户端和服务端可以通过加密通道开始数据通信
第六阶段:客户端断开连接
#key是私钥文件
#crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息
(第一种) [root@localhost certs]# make jiami.crt
(第二种) #openssl req -newkey rsa:4096 -nodes -sha256 -keyout haha.key -x509 -days 365 -out haha.crt
[root@www certs]# openssl genrsa -aes128 2048 > openlab.key
(第三种) #openssl req -utf8 -new -key openlab.key -x509 -days 365 -out openlab.crt
4.静态https网站搭建
1. 配置网络接口与 IP 地址
- 使用 `nmcli connection modify ens33 +ipv4.addresses 192.168.84.110/24` 为网络接口 `ens33` 配置 IPv4 地址。
- 通过 `nmcli connection up ens33` 激活网络连接。
2. 创建网站目录与文件
- 使用 `mkdir -p /www/https` 创建网站的目录。
- 利用 `echo this is https > /www/https/index.html` 创建网站的默认页面文件 `index.html` 并写入内容。
3. 生成 SSL 证书和私钥
- 通过 `openssl genrsa -out https.key` 生成私钥 `https.key` 。
- 执行 `openssl req -utf8 -new -key https.key -x509 -days 100 -out https.crt` 基于私钥生成自签名的 SSL 证书 `https.crt` 。
4. 配置 Nginx 服务器
- 使用 `vim /etc/nginx/conf.d/test_https.conf` 编辑 Nginx 的配置文件。
- 在配置文件中设置服务器监听的 IP 地址和端口、网站根目录、SSL 证书和私钥的路径等。
5. 测试网站
- 使用 `curl -k https://192.168.84.110` 命令访问网站,验证配置是否成功。
这些步骤共同构成了创建基于 HTTPS 的静态网站的主要过程,确保网站能够通过安全的 HTTPS 协议正常访问,并提供指定的静态内容。
具体操作命令:
1、添加ip地址
[root@localhost ~]# nmcli connection modify ens33 +ipv4.addresses 192.168.84.110/24
[root@localhost ~]# nmcli connection up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/3)
2、创建网页根目录,定义网页内容
[root@localhost ~]# mkdir -p /www/https
[root@localhost ~]# echo this is https > /www/https/index.html
3、生成lls证书和私钥
[root@localhost ~]# cd /etc/pki/tls/certs/
[root@localhost certs]# ls
ca-bundle.crt ca-bundle.trust.crt
[root@localhost certs]# openssl genrsa -out https.key #生成私钥https.key 使用 openssl 生成一个 RSA 私钥,并将其保存为 https.key 文件
[root@localhost certs]# openssl req -utf8 -new -key https.key -x509 -days 100 -out https.crt
#基于私钥生成LLS证书, 使用之前生成的私钥 https.key 创建一个自签名的 X.509 证书,有效期为 100 天,并将证书保存为 https.crt 文件。
[root@localhost certs]# ls
ca-bundle.crt ca-bundle.trust.crt https.crt https.key
4、配置nginx服务器
[root@localhost ~]# vim /etc/nginx/conf.d/test_https.conf
server {
listen 192.168.84.110:443 ssl; #表示监听 192.168.84.110 的 443 端口,并启用 SSL
root /www/https; #指定网站的根目录为 /www/https
ssl_certificate /etc/pki/tls/certs/https.crt; #指定了 SSL 证书位置。
ssl_certificate_key /etc/pki/tls/certs/https.key; #指定SSL 私钥位置
location / {}
}
5、测试网站
[root@localhost ~]# curl -k https://192.168.84.110
this is https
5.动态网站搭建
[root@localhost ~]# nmcli connection modify ens33 +ipv4.addresses 192.168.84.120/24
[root@localhost ~]# nmcli connection up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4)
[root@localhost ~]# dnf install php php-fpm -y
输出 PHP 信息
[root@localhost ~]# echo "<?php phpinfo(); ?>" /usr/share/nginx/html/index.html
<?php phpinfo(); ?> /usr/share/nginx/html/index.html
重启服务
[root@localhost ~]# systemctl restart nginx
查看输出信息
[root@localhost ~]# curl -I 192.168.84.120
HTTP/1.1 200 OK
Server: nginx/1.21.5
Date: Fri, 28 Jun 2024 10:07:42 GMT
Content-Type: text/html
Content-Length: 3510
Last-Modified: Mon, 23 Oct 2023 15:48:29 GMT
Connection: keep-alive
ETag: "653695cd-db6"
Accept-Ranges: bytes
第五节 案例(Apache)
案例一:设置单实例Apache HTTP服务器
[root@localhost ~]# echo this is apache http > /var/www/html/index.html
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# curl 192.168.84.160
this is apache http
案例二:配置基于不同端口的虚拟主机
cd /etc/httpd/conf.d/
[root@localhost conf.d]# mkdir -pv /www/{8080,9090}
mkdir: 已创建目录 '/www'
mkdir: 已创建目录 '/www/8080'
mkdir: 已创建目录 '/www/9090'
[root@localhost conf.d]# echo 8080 > /www/8080/index.html
[root@localhost conf.d]# echo 9090 > /www/9090/index.html
[root@localhost conf.d]#vim /etc/httpd/conf.d/port.conf
listen 8080
listen 9090
<directory /www>
allowoverride none
require all granted
</directory>
<virtualhost 192.168.84.160:8080>
servername 192.168.84.160
documentroot /www/8080
</virtualhost>
<virtualhost 192.168.84.160:9090>
servername 192.168.84.160
documentroot /www/9090
</virtualhost>
[root@localhost conf.d]# setenface 0
[root@localhost conf.d]# systemctl restart httpd
[root@localhost conf.d]# curl 192.168.84.160:8080
8080
[root@localhost conf.d]# curl 192.168.84.160:9090
9090
案例三:配置基于Apache的虚拟主机
基于多IP地址访问
[root@localhost conf.d]# cat way1.conf
<virtualhost 192.168.84.110:80>
documentroot /www/way1/a.com
servername a.com
</virtualhost>
<virtualhost 192.168.84.120:80>
documentroot /www/way1/b.com
servername b.com
</virtualhost>
root@localhost conf.d]# mkdir -p /www/way1/{a.com,b.com}
[root@localhost conf.d]# echo a.com > /www/way1/a.com/index.html
[root@localhost conf.d]# echo b.com > /www/way1/b.com/index.html
[root@localhost conf.d]# systemctl restart httpd
[root@localhost conf.d]# curl 192.168.84.110
a.com
[root@localhost conf.d]# curl 192.168.84.120
b.com
基于域名访问
root@localhost conf.d]# mkdir -p /www/way2/{abc.com,def.com}
[root@localhost conf.d]# echo abc.com > /www/way2/abc.com/index.html
[root@localhost conf.d]# echo def.com > /www/way2/def.com/index.html
[root@localhost conf.d]# cat way2.conf
<VirtualHost *:80>
ServerName a.com
DocumentRoot "/www/a.com/"
</VirtualHost>
<VirtualHost *:80>
ServerName b.com
DocumentRoot "/www/b.com/"
</VirtualHost>
修改物理主机hosts文件(C:\Windows\System32\drivers\etc),这里是因为物理机去访问Apache服务器
在hosts文件里面添加
192.168.81.136 a.com
192.168.81.136 b.com
案例四、在 Apache HTTP 服务器中添加 TLS 加 密
1. 安装必要的模块
首先,需要确保您的服务器已经安装了 `mod_ssl` 模块。如果未安装,可以使用您服务器的包管理工具进行安装。
dnf install mod_ssl
2. 生成证书和密钥
可以通过以下两种常见方式获取证书和密钥:
- 自签名证书:这适用于测试和开发环境。可以使用 `openssl` 命令来生成:
openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
- 从受信任的证书颁发机构(CA)获取:您需要向 CA 提交证书请求并完成相关验证流程,CA 将会颁发有效的证书。
3. 配置 Apache
打开 Apache 的配置文件 `httpd.conf` 或 `ssl.conf`(具体取决于您的系统配置),并进行以下关键配置:
- 启用 `mod_ssl` 模块:确保有类似 `LoadModule ssl_module modules/mod_ssl.so` 的行未被注释。
- 设置证书和密钥路径:
SSLCertificateFile /path/to/server.crt
SSLCertificateKeyFile /path/to/server.key
4. 配置虚拟主机(如果需要)
如果您为多个域名或子域名配置 SSL,需要在虚拟主机的配置中进行相应设置。
5. 重启 Apache 服务器
完成配置后,重启 Apache 服务器以使更改生效。
例如,如果您使用 `systemctl` 来管理服务,可以使用以下命令:
sudo systemctl restart apache2
1. 安装 `mod_ssl` 模块:
sudo dnf install mod_ssl
2. 生成自签名证书和密钥(在合适的目录下,例如 `/etc/httpd/ssl/` ):
sudo mkdir -p /etc/httpd/ssl
openssl req -new -newkey rsa:2048 -nodes -keyout /etc/httpd/ssl/server.key -out /etc/httpd/ssl/server.csr
openssl x509 -req -days 365 -in /etc/httpd/ssl/server.csr -signkey /etc/httpd/ssl/server.key -out /etc/httpd/ssl/server.crt
3. 打开 Apache 的配置文件 `/etc/httpd/conf/httpd.conf` :
sudo vim /etc/httpd/conf/httpd.conf
4. 在配置文件中进行以下配置:
- 启用 `mod_ssl` 模块:确保有类似 `LoadModule ssl_module modules/mod_ssl.so` 的行未被注释。
- 设置证书和密钥路径:
SSLCertificateFile /etc/httpd/ssl/server.crt
SSLCertificateKeyFile /etc/httpd/ssl/server.key
5. 如果需要配置虚拟主机,在 `/etc/httpd/conf.d/vhost.conf` 或类似的文件中进行设置(假设您要为 `example.com` 配置虚拟主机):
<VirtualHost *:443>
ServerName example.com
DocumentRoot "/var/www/html/example"
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/server.crt
SSLCertificateKeyFile /etc/httpd/ssl/server.key
</VirtualHost>
6. 重启 Apache 服务器:
sudo systemctl restart httpd