Web 服務詳解:HTTP 與 HTTPS 配置

Web 服務詳解:HTTP 與 HTTPS 配置

一、HTTP 服務概述

HTTP(Hypertext Transfer Protocol,超文本傳輸協議)是用于在網絡上傳輸網頁數據的基礎協議,默認使用80 端口,以明文形式傳輸數據。常見的 HTTP 服務軟件包括:

  • httpd(Apache):最流行的開源 Web 服務器,功能豐富,配置靈活。
  • Nginx:輕量級高性能 Web 服務器,擅長處理高并發請求。
  • Tomcat:支持 Java Servlet 和 JSP 的應用服務器,常用于部署 Java Web 應用。

本文重點講解httpd(Apache) 的配置與使用。

二、httpd(Apache)核心配置

1. 關鍵文件與目錄

路徑 / 文件

作用描述

/etc/httpd/conf/httpd.conf

httpd 主配置文件,包含全局參數(端口、日志等)。

/var/www/html/

默認網頁存放目錄,訪問服務器 IP 時默認加載此目錄下的index.html。

/usr/share/doc/httpd-2.4.6/httpd-vhosts.conf

虛擬主機配置模板文件。

/etc/httpd/conf.d/

虛擬主機配置文件存放目錄(httpd 會自動加載此目錄下的.conf文件)。

2. 虛擬主機配置

虛擬主機(Virtual Host)允許在一臺服務器上通過不同的標識(IP、端口、域名)提供多個網站服務,常見配置方式有三種。

前提條件
  • 已安裝 httpd 服務:yum -y install httpd
  • 啟動服務并關閉防火墻 / SELinux:
systemctl start httpd 
systemctl enable httpdsystemctl stop firewalld
systemctl disable firewalldsetenforce 0
  • 準備測試網頁目錄及文件:
# 創建兩個測試目錄mkdir -p /var/www/one /var/www/html# 寫入測試內容echo "abcd" > /var/www/one/index.htmlecho "Welcome to luoqi" > /var/www/html/index.html
方式 1:相同 IP,不同端口

通過不同端口區分不同網站(如 80 端口和 8080 端口)。

  • 復制虛擬主機模板文件:
cp -p /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf /etc/httpd/conf.d/
  • 編輯虛擬主機配置文件:
vim /etc/httpd/conf.d/httpd-vhosts.conf
  • 添加以下配置:
# 80端口對應/var/www/one目錄<VirtualHost 192.168.100.10:80>DocumentRoot "/var/www/one" # 網頁目錄</VirtualHost># 監聽8080端口Listen 8080# 8080端口對應/var/www/html目錄<VirtualHost 192.168.100.10:8080>DocumentRoot "/var/www/html"</VirtualHost>
  • 重啟服務生效:
systemctl restart httpd
  • 驗證:
    • 訪問 http://192.168.100.10 → 顯示 /var/www/one 內容

    • 訪問 http://192.168.100.10:8080 → 顯示 /var/www/html 內容

方式 2:不同 IP,相同端口

服務器綁定多個 IP,通過不同 IP 區分網站(均使用 80 端口)。

  • 為服務器添加第二個 IP(以ens33網卡為例):
vim /etc/sysconfig/network-scripts/ifcfg-ens33

添加以下內容:

IPADDR1=192.168.100.50 # 第二個IPPREFIX1=24
  • 重啟網絡服務:
systemctl restart network
  • 編輯虛擬主機配置文件:
vim /etc/httpd/conf.d/httpd-vhosts.conf
  • 添加以下配置:
# IP 192.168.100.10 對應/var/www/one目錄<VirtualHost 192.168.100.10:80>DocumentRoot "/var/www/one"</VirtualHost># IP 192.168.100.50 對應/var/www/html目錄<VirtualHost 192.168.100.50:80>DocumentRoot "/var/www/html"</VirtualHost>
  • 重啟服務并驗證:

訪問 http://192.168.100.10 → 顯示 /var/www/one 內容

訪問 http://192.168.100.50 → 顯示 /var/www/html 內容

方式 3:相同 IP、端口,不同 FQDN(域名)

通過不同域名(如one.example.com和html.example.com)區分網站,需配合 DNS 服務解析域名到同一 IP。

  • 配置 DNS 正向解析(參考 DNS 服務配置):

在 DNS 服務器的example.com區域文件中添加:

one IN A 192.168.100.10 # one.example.com 解析到服務器IPhtml IN A 192.168.100.10 # html.example.com 解析到服務器IP

重啟 DNS 服務:systemctl restart named

  • 編輯虛擬主機配置文件:
vim /etc/httpd/conf.d/httpd-vhosts.conf
  • 添加以下配置:
# 域名 one.example.com 對應/var/www/one目錄<VirtualHost 192.168.100.10:80>DocumentRoot "/var/www/one"ServerName one.example.com # 綁定域名</VirtualHost># 域名 html.example.com 對應/var/www/html目錄<VirtualHost 192.168.100.10:80>DocumentRoot "/var/www/html"ServerName html.example.com # 綁定域名</VirtualHost>
  • 重啟服務并驗證:

訪問 http://one.example.com → 顯示 /var/www/one 內容

訪問 http://html.example.com → 顯示 /var/www/html 內容

三、HTTPS 服務概述

HTTPS(HTTP Secure)是 HTTP 的加密版本,通過SSL/TLS 協議對傳輸數據加密,默認使用443 端口,確保數據傳輸的安全性(防止竊聽、篡改)。

核心特點

  • 加密機制:HTTPS = HTTP + SSL/TLS,通過證書實現身份驗證和數據加密。
  • 端口:默認 443 端口(需在防火墻開放)。
  • 證書:需通過 CA(證書頒發機構)簽署的證書驗證服務器身份,避免 “中間人攻擊”。

四、HTTPS 加密原理(SSL/TLS 握手流程)

  1. ClientHello:客戶端向服務器發送支持的 SSL/TLS 版本、加密算法列表,及隨機數random_c。
  2. ServerHello:服務器確認使用的版本和算法,返回隨機數random_s、服務器證書(含公鑰)。
  3. ClientKeyExchange:客戶端驗證證書有效性后,生成預主密鑰pre_master,用服務器公鑰加密后發送。
  4. 會話密鑰生成:服務器用私鑰解密pre_master,雙方基于random_c + random_s + pre_master生成會話密鑰,后續通信使用該密鑰加密。

五、HTTPS 配置(基于 httpd 與自建 CA)

1. 環境準備

  • CA 服務器:IP 192.168.100.10,負責生成根證書和簽署服務端證書。
  • Web 服務器:IP 192.168.100.20,部署 httpd 并配置 HTTPS。
  • DNS 服務器:已配置域名解析(如ca.example.com指向 CA 服務器,sl1.example.com指向 Web 服務器)。

2. 自建 CA(證書頒發機構)

(1)openssl 配置文件關鍵參數?

openssl 的主配置文件為/etc/pki/tls/openssl.cnf,其中與 CA 相關的重要參數如下:?

?

####################################################################?[ CA_default ]??dir = /etc/pki/CA # 所有CA相關文件的存放根目錄?certs = $dir/certs # 證書所在目錄?database = $dir/index.txt # 證書數據庫文件目錄?new_certs_dir = $dir/newcerts # 新生成證書的存放目錄??certificate = $dir/cacert.pem # CA自簽名證書(根證書)?serial = $dir/serial # 證書序列號文件?private_key = $dir/private/cakey.pem# CA私鑰文件路徑??
步驟 1:配置 CA 目錄與文件

CA 相關文件默認存放在/etc/pki/CA/,需創建必要文件(參考/etc/pki/tls/openssl.cnf配置):

# 進入CA目錄cd /etc/pki/CA/# 創建私鑰(權限需嚴格限制,僅root可讀寫)(umask 077; openssl genrsa -out private/cakey.pem)# 生成自簽名根證書(CA證書)openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365# 按提示輸入信息
(國家:CN,
省份:HB,
城市:WH,
組織:LQ,
主機名:ca.example.com等)# 創建證書數據庫和序列號文件touch index.txt # 證書索引數據庫echo 01 > serial # 證書序列號(初始為01)
(2)openssl 關鍵命令選項說明?
  • -x509:生成自簽名證書格式,專用于創建私有 CA。?
  • -new:生成新證書的簽署請求。?
  • -key:指定生成請求時用到的私鑰文件路徑。?
  • -out:指定生成后的文件存放路徑,如果是自簽名操作,將直接生成簽署過的證書。?
  • -days:指定證書有效期,默認是 365 天。

3. Web 服務器配置 HTTPS

步驟 1:生成服務端私鑰與證書請求
# 在Web服務器上安裝httpd和SSL模塊yum -y install httpd mod_ssl# 創建存放證書的目錄mkdir /etc/httpd/ssl# 生成服務端私鑰(umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key)# 生成證書請求文件(CSR)openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365# 輸入信息需與CA一致,主機名填Web服務器域名(如sl1.example.com)
步驟 2:向 CA 提交證書請求并獲取簽名證書
# 將CSR文件發送到CA服務器scp /etc/httpd/ssl/httpd.csr root@ca.example.com:/etc/pki/CA/# 在CA服務器上簽署證書cd /etc/pki/CA/openssl ca -in httpd.csr -out httpd.crt -days 365# 提示時輸入"y"確認簽署# 將簽署好的證書發送回Web服務器scp httpd.crt root@192.168.100.20:/etc/httpd/ssl/
步驟 3:配置 httpd 支持 HTTPS
  • 編輯 SSL 配置文件:
vim /etc/httpd/conf.d/ssl.conf

修改證書和私鑰路徑:

SSLCertificateFile /etc/httpd/ssl/httpd.crt # 服務端證書SSLCertificateKeyFile /etc/httpd/ssl/httpd.key # 服務端私鑰
  • 配置 HTTPS 虛擬主機(綁定 443 端口):
vim /etc/httpd/conf.d/httpd-vhosts.conf

添加以下內容:

<VirtualHost 192.168.100.20:443>DocumentRoot "/var/www/test" # HTTPS網頁目錄ServerName sl1.example.com # 綁定域名SSLEngine on # 啟用SSLSSLCertificateFile /etc/httpd/ssl/httpd.crtSSLCertificateKeyFile /etc/httpd/ssl/httpd.key</VirtualHost>
  • 創建測試網頁:
mkdir /var/www/testecho "HTTPS Test Page" > /var/www/test/index.html
  • 重啟 httpd 服務:
systemctl restart httpd

4. 客戶端驗證 HTTPS

  1. 在客戶端導入 CA 根證書(信任自建 CA):
# 從CA服務器下載根證書scp root@192.168.100.10:/etc/pki/CA/cacert.pem /tmp/

(Windows/Linux 客戶端需在瀏覽器中導入該證書,信任 CA)

  1. 訪問 HTTPS 網站:

瀏覽器輸入 https://sl1.example.com,確認連接加密(顯示鎖圖標),頁面顯示 /var/www/test 內容。

六、總結

  • HTTP 服務:通過 httpd 的虛擬主機功能,可基于 IP、端口、域名部署多個網站,核心是配置DocumentRoot和綁定標識。
  • HTTPS 服務:在 HTTP 基礎上添加 SSL/TLS 加密,需通過 CA 簽署證書實現身份驗證,配置重點是證書路徑和 SSL 引擎啟用。

實際生產環境中,建議使用可信 CA(如 Let's Encrypt)頒發的證書,并合理配置防火墻和 SELinux 規則,保障服務安全。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/92914.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/92914.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/92914.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

YOLO-v2-tiny 20種物體檢測模型

一、簡介 YOLO-v2-tiny是基于YOLO(You Only Look Once)實時目標檢測算法的輕量級版本&#xff0c;專門為嵌入式設備和資源受限環境優化。本模型能夠檢測20種常見物體類別&#xff0c;在保持較高檢測精度的同時大幅減少了計算量和模型大小。 20種物體檢測模型&#xff0c; 使用…

heterophilic graph和hetergeneous graph區別(附帶homophilic graph 和homoegeneous graph)

Heterophilic Graph&#xff08;異配圖&#xff09;連接的節點在屬性上不相似,但是所有節點和邊的類別都是同一種類型&#xff0c;數據集如squirrel / chameleon&#xff0c;它們是 heterogeneous graph&#xff08;異質圖&#xff09;而不是Heterophilic Graph&#xff08;異配…

Thinkphp(GUI)漏洞利用工具,支持各版本TP漏洞檢測,命令執行,Getshell

工具介紹 Thinkphp(GUI)漏洞利用工具&#xff0c;支持各版本TP漏洞檢測&#xff0c;命令執行&#xff0c;Getshell。JAVAFX可視化編寫&#xff0c;博主第一次用javafx來寫界面&#xff0c;第一次學習嘗試&#xff0c;僅僅只用于學習嘗試如果缺少什么payload&#xff0c;歡迎提交…

GitHub分支保護介紹(Branch Protection)(git分支保護)(通過設置規則和權限來限制對特定分支的操作的功能)

文章目錄**1. 核心功能****a. 防止誤操作****b. 強制代碼審查****c. 狀態檢查&#xff08;Status Checks&#xff09;****d. 權限控制****2. 如何設置分支保護&#xff1f;**1. **進入倉庫設置**2. **添加分支保護規則**3. **配置保護規則**4. **保存設置****3. 常見應用場景**…

怎么理解On-Premises

On-Premises 指的是—— 軟件、系統、數據中心等部署并運行在企業自己管理的本地硬件或機房里&#xff0c;而不是放在云端或第三方托管環境中。 你可以把它理解成&#xff1a;“服務器在你自己家里&#xff08;公司機房&#xff09;&#xff0c;而不是寄放在別人家&#xff08;…

UserController類講解

用戶管理控制器&#xff0c;實現了用戶CRUD操作的RESTful API&#xff1a; 1. 類結構與核心注解 1.1 控制器聲明 RestController RequestMapping("/api/users") public class UserControllerRestController 深度解析&#xff1a; 組合注解&#xff1a;Controller Re…

【劍指offer】搜索算法

目錄 &#x1f4c1; JZ53 數字在升序數組中出現的次數?編輯 &#x1f4c1; JZ4 二維數組中的查找?編輯 &#x1f4c1; JZ11 旋轉數組的最小數字 &#x1f4c1; JZ38 字符串的排列?編輯 &#x1f4c1; JZ53 數字在升序數組中出現的次數 這就是一道簡單的模板題&#xff0…

ETLCloud批流一體化體現在哪

ETLCloud批流一體化體現在哪 企業對數據處理的實時性、高效性和準確性的要求越來越高。批流一體化作為一種先進的數據處理理念&#xff0c;逐漸被企業所采用。 目前許多國產化ETL工具也裝配了十分強大的批流一體化能力&#xff0c;ETLCoud就是一個很好的代表&#xff0c;它能夠…

Mybatis學習之緩存(九)

這里寫目錄標題一、MyBatis的一級緩存1.1、工作原理1.2、一級緩存失效的四種情況1.3、不同的SqlSession對應不同的一級緩存1.4、同一個SqlSession但是查詢條件不同1.5、同一個SqlSession兩次查詢期間執行了任何一次增刪改操作1.6、同一個SqlSession兩次查詢期間手動清空了&…

windows10裝Ubuntu22.04系統(雙系統)

參考鏈接&#xff1a;Windows和Linux雙系統的保姆級安裝教程&#xff0c;新手小白跟著也能裝_windows安裝linux雙系統-CSDN博客 1 前期準備 1.下載Ubuntu22.04.5 的iso鏡像文件&#xff1a;Download Ubuntu Desktop | Ubuntu 2.準備一個U盤&#xff08;空&#xff0c;已有文…

Pandas數據處理與分析實戰:Pandas數據清洗與處理入門

數據清洗&#xff1a;Pandas數據處理入門 學習目標 本課程將引導學員了解數據清洗的基本概念&#xff0c;掌握使用Pandas庫處理數據集中的缺失值、重復數據和異常值的方法&#xff0c;確保數據的質量&#xff0c;為后續的數據分析和機器學習任務打下堅實的基礎。 相關知識點 Pa…

Python爬蟲實戰:研究ScrapyRT框架,構建圖書商城數據采集系統

1. 引言 1.1 研究背景 在當今數字化時代,互聯網已成為全球最大的信息庫,蘊含著海量的有價值數據,涵蓋商業、教育、科研、醫療等各個領域。根據 IDC(國際數據公司)預測,到 2025 年全球數據圈將增長至 175ZB,其中網絡數據占比超過 60%。這些數據不僅是企業制定商業策略、…

springboot接口請求參數校驗

參數校驗 參數校驗可以防止無效或錯誤的數據進入系統。通過校驗前端輸入的參數&#xff0c;可以確保數據的完整性&#xff0c;避免因為缺少必要的信息而導致程序錯誤或異常。例如&#xff0c;對于密碼字段&#xff0c;可以通過校驗規則要求用戶輸入至少8個字符、包含字母和數字…

Docker部署 Neo4j 及集成 APOC 插件:安裝與配置完整指南(docker-compose)

Docker部署 Neo4j 及集成 APOC 插件&#xff1a;分步驟指南 摘要 &#xff1a;本文將分兩部分詳細介紹相關內容。第一部分講解如何使用 Docker Compose 部署 Neo4j 圖數據庫&#xff0c;提供完整配置文件及常見問題解決方案&#xff1b;第二部分在前者基礎上&#xff0c;介紹 A…

TLSv1.2協議與TCP/UDP協議傳輸數據內容差異

一、Wireshark中常見的TLSv1.2在用Wireshark抓包時&#xff0c;除了看到課堂上教過的經典的TCP/UDP協議&#xff0c;還有一個協議經常出現——TLSv1.2。并且這個協議的Info解釋是Application data&#xff0c;其實看到這個解釋&#xff0c;我大概猜出來了TLSv1.2是用來給用戶數…

51c自動駕駛~合集14

自己的原文哦~ https://blog.51cto.com/whaosoft/11707335 #Text2LiDAR 文本引導的無條件點云生成新SOTA 論文題目&#xff1a;《Text2LiDAR: Text-guided LiDAR Point Cloud Generation via Equirectangular Transformer》 論文地址&#xff1a;https://arxiv.o…

k8s基本概念

k8s 的基本概念 Kubernetes是一個可以移植、可擴展的開源平臺&#xff0c;使用 聲明式的配置 并依據配置信息自動地執行容器化應用程序的管理。在所有的容器編排工具中&#xff08;類似的還有 docker swarm / mesos等&#xff09;&#xff0c;Kubernetes的生態系統更大、增長更…

Easysearch 數據遷移之數據比對

上一篇我們通過 INFINI Gateway 進行了索引數據遷移&#xff0c;對索引遷移結果進行了初步且直觀的校驗--對比索引的文檔數是否一致。今天介紹個實實在在的數據比對方法&#xff0c;通過網關對比索引文檔的內容在兩個集群是否一致。話不多說&#xff0c;就拿上次遷移的兩個索引…

Codeforces Round 1042 (Div. 3)

ABCD 略E注意到每個操作最多執行一次&#xff0c;ifa[i]!b[i]&#xff0c;要么a[i]^a[i1]要么a[i]^b[i1]G設消除1~i的數的操作次數為f[i]&#xff0c;可以推出f[i]2*f[i-1]1&#xff0c;那么消除1~i的數的分數乘的數為g[i]&#xff0c;g[i]g[i-1]*g[i-1]*i s雖然很大&#xff0…

AJAX:讓你的網頁“靜悄悄”變聰明,體驗絲滑升級

大家好&#xff0c;今天想聊聊一個讓網頁“活”起來的小秘密——AJAX。你可能遇到過這種情況&#xff1a;點個按鈕&#xff0c;頁面就刷新&#xff0c;等得心急火燎。但用了AJAX的網站&#xff0c;比如購物車更新或搜索建議&#xff0c;數據嗖嗖就來了&#xff0c;整個頁面卻紋…