Linux 服務部署:自簽 CA 證書構建 HTTPS 及動態 Web 集成

Linux 服務部署:自簽 CA 證書構建 HTTPS 及動態 Web 集成

一、HTTPS基礎原理

HTTPS是HTTP協議基于SSL/TLS協議的加密版本,核心差異及握手過程如下:

  1. HTTP與HTTPS對比

    協議傳輸方式端口核心特點
    HTTP明文傳輸80無加密,安全性低
    HTTPS數據加密(SSL/TLS)443數據加密、身份驗證,安全性高
  2. SSL/TLS握手過程(簡化)

    • 客戶端(Client)動作

      第一步ClientHello:發送支持的SSL/TLS版本、加密算法,生成隨機數random_c(32字節)。

      第三步ClientKeyExchange:用服務器公鑰加密預處理密鑰pre_master,發送給服務器。

    • 服務器(Server)動作

      第二步ServerHello:確定版本和加密算法,生成隨機數random_s(32字節);發送證書(含公鑰)。

      第四步用私鑰解密pre_master,結合random_c+random_s+pre_master生成會話密鑰,用于后續數據加密傳輸。

在這里插入圖片描述

openssl: 命令的選項
-x509 :生成自簽名證書格式,專用于創建私有CA
-new :生成新證書的簽署請求
-key :生成請求時用到的私鑰文件路徑
-out :生成后的文件存放路徑,如果是自簽名操作,將直接生成簽署過的證書
-days :證書有效期 默認是365天

二、CA(證書頒發機構)配置

CA是用于頒發和管理數字證書的機構,私有CA配置步驟如下:

1. 前提準備
  • 在DNS服務器的正向解析文件中添加CA域名解析(如ca.example.com對應IP 192.168.100.10):
    vim /var/named/example.com.zone
    # 添加以下內容
    ca      IN      A       192.168.100.10
    # 保存退出后重啟DNS服務
    systemctl restart named
    
2. CA核心配置文件(/etc/pki/tls/openssl.cnf[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私鑰路徑(需保密)
RANDFILE        = $dir/private/.rand    # 指定隨機數生成器的種子文件路徑
3. 生成CA私鑰和自簽名證書
  1. 生成CA私鑰(權限嚴格限制,umask 077確保僅root可讀寫):

    (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem)
    
  2. 生成CA自簽名證書-x509指定自簽名格式):

    openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365
    
    • openssl req`**:OpenSSL 中用于處理證書請求(CSR)的子命令。
    • -new:生成新的證書請求。
  • -x509:直接生成自簽名證書(通常用于根 CA,因為根證書無需其他機構簽名)。

    • -key:指定用于簽名的私鑰路徑(這里是 CA 的私鑰 cakey.pem)。
    • -out:指定輸出的證書文件路徑(生成的 CA 根證書 cacert.pem)。
    • -days 365:設置證書有效期為 365 天(1 年)。

    證書信息(DN 字段)填寫詳情

    證書需要包含標識身份的“可分辨名稱(Distinguished Name, DN)”,以下是各字段的輸入和含義:

    1. Country Name (2 letter code) [XX]:CN
      • 國家/地區代碼(2 個字母),輸入 CN 表示“中國”。
    2. State or Province Name (full name) []:HB
      • 省/州名稱,輸入 HB 通常代表“湖北省”。
    3. Locality Name (eg, city) [Default City]:WH
      • 城市名稱,輸入 WH 通常代表“武漢市”。
    4. Organization Name (eg, company) [Default Company Ltd]:LQ
      • 組織/公司名稱,這里填寫自定義名稱 LQ
    5. Organizational Unit Name (eg, section) []:linux
      • 部門/單位名稱,輸入 linux 表示該 CA 屬于 Linux 相關部門。
    6. Common Name (eg, your name or your server's hostname) []:ca.example.com
      • 通用名稱(核心字段),通常是 CA 服務器的域名,這里設置為 ca.example.com(符合 CA 服務器的命名規范)。
    7. Email Address []:root@example.com
      • 聯系郵箱,填寫 root@example.com 作為證書管理員的聯系方式。
  1. 創建CA必要文件
    touch /etc/pki/CA/index.txt  # 證書數據庫
    echo 01 > /etc/pki/CA/serial  # 初始序列號(從01開始)
    

三、Web服務器證書申請與簽名

Web服務器(如Apache)需向CA申請證書,步驟如下:

1. Web服務器生成私鑰和CSR(證書簽名請求)
  1. 創建存放證書的目錄

    mkdir /etc/httpd/ssl  # Apache證書目錄
    
  2. 生成Web服務器私鑰

    (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key)
    
  3. 生成CSR文件(需與CA信息匹配,主機名填web.example.com):

    openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365
    
    • DN字段示例:國家(CN)、省份(HB)、城市(WH)、組織(LQ)、部門(linux)、主機名(hrz2.example.com)、郵箱(root@example.com)。
2. CA簽名Web證書
  1. Web服務器發送CSR給CA

    scp /etc/httpd/ssl/httpd.csr root@ca.example.com:/etc/pki/CA/  # 傳輸CSR
    
  2. 在主機CA上 對簽署請求進行數字簽名,并指明所生成的Web證書的存放路徑

    openssl ca -in /etc/pki/CA/httpd.csr -out /etc/pki/CA/httpd.crt -days 365
    
3. Web服務器獲取簽名證書
scp root@ca.example.com:/etc/pki/CA/httpd.crt /etc/httpd/ssl/  # 下載簽名后的證書

四、Apache部署HTTPS站點

通過mod_ssl模塊配置Apache支持HTTPS:

1. 安裝mod_ssl
yum -y install mod_ssl  # 安裝SSL模塊
2. 配置SSL證書路徑

修改/etc/httpd/conf.d/ssl.conf,指定證書和私鑰路徑:

# 編輯配置文件
vim /etc/httpd/conf.d/ssl.conf
# 修改以下兩行
SSLCertificateFile /etc/httpd/ssl/httpd.crt  # Web服務器證書
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key  # Web服務器私鑰
3. 配置HTTPS虛擬主機

創建/etc/httpd/conf.d/httpd-vhosts.conf,添加虛擬主機配置:

# 編輯虛擬主機配置文件
vim /etc/httpd/conf.d/httpd-vhosts.conf
# 添加以下內容
<VirtualHost 192.168.100.20:443>DocumentRoot "/var/www/html/test"  # 網站根目錄ServerName hrz2.example.com  # 綁定域名SSLEngine on  # 啟用SSLSSLCertificateFile /etc/httpd/ssl/httpd.crt  # 證書路徑SSLCertificateKeyFile /etc/httpd/ssl/httpd.key  # 私鑰路徑
</VirtualHost>
# 保存退出后重啟Apache
systemctl restart httpd
4. 客戶端信任CA根證書
  1. 下載CA根證書到客戶端

    scp root@192.168.100.10:/etc/pki/CA/cacert.pem .  # 從CA服務器下載
    
  2. 導入瀏覽器(以火狐為例):
    設置 → 首選項 → 高級 → 證書 → 查看證書 → 導入 → 選擇cacert.pem → 勾選“信任使用此CA標識的網站” → 確認。

    在這里插入圖片描述

    在這里插入圖片描述
    在這里插入圖片描述

  3. 訪問驗證
    瀏覽器訪問 https://hrz2.example.com,顯示安全連接。

在這里插入圖片描述

五、集成Python動態Web內容

通過mod_wsgi模塊部署Python動態內容:

1. 安裝依賴
yum -y install httpd mod_wsgi  # 安裝Apache和WSGI模塊
2. 部署動態內容
  1. 創建存放Python腳本的目錄

    mkdir /var/www/wsgi  # 存放Python腳本
    # 將Python動態腳本(如webapp.py)上傳至該目錄
    
  2. 配置虛擬主機
    修改/etc/httpd/conf.d/httpd-vhosts.conf,添加HTTP虛擬主機(80端口):

    vim /etc/httpd/conf.d/httpd-vhosts.conf
    # 添加以下內容
    <VirtualHost 192.168.100.20:80>DocumentRoot "/var/www/wsgi"WSGIScriptAlias  /  "/var/www/wsgi/webapp.py"  # 綁定Python腳本ServerName py.example.com  # 動態站點域名
    </VirtualHost>
    
3. DNS解析配置

在DNS服務器添加py.example.com解析:

vim /var/named/example.com.zone
# 添加以下內容
py      IN      A       192.168.100.20  # 解析到Web服務器IP
# 保存退出后重啟DNS
systemctl restart named
4. 驗證

瀏覽器訪問 http://py.example.com,查看動態內容是否正常加載。

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

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

相關文章

Python3.10 + Firecrawl 下載公眾號文章

獲取Firecrawl apikey 打開官網&#xff0c;使用github賬號登錄 https://www.firecrawl.dev/ 進入個人中心 https://www.firecrawl.dev/app/api-keys 使用PyCharm創建python項目 創建.env # API配置 FIRECRAWL_API_KEYfc-9*********0816d5ac6b20 # 輸出配置 OUTPUT_DIRout…

IoT/透過oc_lwm2m/boudica150 源碼中的AT指令序列,分析NB-IoT接入華為云物聯網平臺IoTDA的工作機制

文章目錄概述指令調用順序具體接入指令分析ATE0 關閉回顯ATQREGSWT 設置&#xff08;平臺&#xff09;注冊模式ATQLWSREGIND0 手動注冊平臺set_autoconnect / ATNCONFIGATNBANDx,xset_plmn / ATCOPS_set_apn / ATCGDCONT(安全)接入參數 CDPDTLSPSKATNNMI 設置新消息指示_check_…

Android UI(一)登錄注冊 - Compose

UI - 登錄注冊 - Compose一、聲明式UI1. **顛覆傳統開發模式**2. **技術優勢**3. **開發效率提升**4. **未來生態方向**5. **實際影響**二、創建項目1. Compose UI結構2. Scaffold3. 可組合函數三、創建組件頁面1. LoginPage2. RegisterPage3. MainPage四、導航1. 添加依賴2. 使…

分享10個ai生成ppt網站(附ai生成ppt入口)

實測對比&#xff1a;15頁PPT從3小時壓縮到3分鐘的秘密武器 當ChatGPT能寫方案、Midjourney能畫圖&#xff0c;做PPT還在手動排版就OUT了&#xff01;這些AI生成PPT網站已實現「輸入文案秒出設計稿」&#xff0c;無論職場匯報、畢業答辯還是路演融資&#xff0c;零設計基礎也能…

最強開源視頻模型通義萬相wan2.1在comfyui中的安裝應用詳解

摘要&#xff1a;阿里巴巴開源通義萬相Wan2.1模型&#xff0c;支持文生視頻、圖生視頻等多種功能&#xff0c;并整合關鍵環節簡化創作流程。官方和Kiji版本需配套使用各自工作流。低顯存顯卡可使用GGUF模型解決方案&#xff0c;最低適配4G顯存。ComfyUI已原生支持該模型&#x…

機器學習:基于OpenCV和Python的智能圖像處理 實戰

機器學習&#xff1a;基于OpenCV和Python的智能圖像處理實戰——待填坑圖像處理基礎圖像的基本表示方法圖像處理的基本操作圖像運算圖像的色彩空間轉換圖像幾何變換4.1 仿射變換4.2 重映射4.3 投影變換 4.4 極坐標變換5 圖像直方圖處理7 圖像閾值處理8 圖像形態學處理github地址…

proteus實現簡易DS18B20溫度計(stm32)

一、新建proteus工程 具體看前面文章 二、搭建電路 需要配置供電網絡以及尋找元器件&#xff0c;細節看前面文章&#xff0c;下面給出電路圖 電路包含了五個部分&#xff1a; 1、DS18B20&#xff1a;數據引腳記得上拉 2、stm32電路 3、串口電路&#xff08;右下角那個器件…

Autoppt-AI驅動的演示文稿生成工具

本文轉載自&#xff1a;Autoppt-AI驅動的演示文稿生成工具 - Hello123工具導航 ** 一、 Autoppt&#xff1a;AI 驅動的智能演示文稿生成工具 Autoppt 是一款基于人工智能的在線演示文稿生成平臺&#xff0c;通過輸入主題或上傳文檔&#xff08;Word/PDF/ 圖片等&#xff09;&…

Flink on YARN啟動全流程深度解析

Flink on YARN 模式啟動流程及核心組件協作詳解整個過程分為三個主要階段&#xff1a;??JobManager 啟動??&#xff08;作業提交與 AM 初始化&#xff09;??TaskManager 資源分配與啟動????任務部署與執行??第一階段&#xff1a;作業提交與 JobManager (AM) 啟動?…

安卓開發者自學鴻蒙開發1基礎入門

1.基礎 聲明式UI&#xff1a;?? ??核心&#xff1a;?? 你??聲明??你想要UI是什么樣子&#xff08;在build()方法里描述&#xff09;&#xff0c;而不是一步步命令式地創建和操作View對象&#xff08;findViewById, setText, setOnClickListener&#xff09;。 模塊化…

彈性擴展新范式:分布式LLM計算的FastMCP解決方案

本文較長&#xff0c;建議點贊收藏&#xff0c;以免遺失。更多AI大模型應用開發學習視頻及資料&#xff0c;盡在聚客AI學院。如果你想系統學習AI大模型應用開發&#xff0c;挑戰AI高薪崗位&#xff0c;可在文章底部聯系。在現代大語言模型&#xff08;LLM&#xff09;應用架構中…

springboot項目不同平臺項目通過http接口AES加密傳輸

前言&#xff1a; 在公司協作開發的過程中&#xff0c;自己的項目是公共調用平臺&#xff0c;也可以說是中轉平臺&#xff0c;供公司其他團隊的項目進行接口調用。因為是不同團隊項目之間的相互調用&#xff0c;所以不能通過openFeign遠程調用。只能通過http遠程調用&#xff…

推薦5個網頁模板資源網

1. 企業模板官方網站&#xff1a; http://www.qimoban.com介紹&#xff1a;企業模板(qimoban.com )是一個專注于提供豐富多樣的企業模板的優質平臺&#xff0c;致力于為企業和個人打造高效、專業、個性化的模板獲取渠道。該平臺提供海量的企業模板資源&#xff0c;涵蓋企業官網…

Redis持久化機制(RDB AOF)

1. RDB RDB 持久化是把當前進程數據生成快照保存到硬盤的過程&#xff0c;觸發 RDB 持久化過程分為手動觸發和 自動觸發&#xff0c;存儲的是二進制數據。 1.1 手動觸發 使用 save 和 bgsave 命令觸發&#xff1a; save&#xff1a;Redis服務主進程阻塞式執行持久化操作&…

【css】讓瀏覽器支持小于12px的文字

【css】讓瀏覽器支持小于12px的文字.demo {display: inline-block;/** 使用Webkit引擎的變換屬性&#xff08;主要針對舊版Safari/Chrome&#xff09; **/-webkit-transform: scale(0.8); }注意&#xff1a;display: inline-block; 一定要加上&#xff01;1.transform: scale(…

機器學習-基礎入門:從概念到核心方法論

在人工智能飛速發展的今天&#xff0c;機器學習作為其核心技術&#xff0c;正深刻改變著我們的生活與工作。從 AlphaGo 戰勝圍棋世界冠軍&#xff0c;到日常的智能推薦、人臉識別&#xff0c;機器學習的應用無處不在。本文將從基礎概念出發&#xff0c;帶你系統了解機器學習的核…

《Leetcode》-面試題-hot100-動態規劃

題目列表 70. 爬樓梯 簡單難度 leetcode鏈接 118. 楊輝三角 簡單難度 leetcode鏈接 198. 打家劫舍 中等難度 leetcode鏈接 279.完全平方數 中等難度 leetcode鏈接 322.零錢兌換 中等難度 leetcode鏈接 139.單詞拆分 中等難度 leetcode鏈接 300.最長遞增子序列 中等難度 l…

數巔中標中建科技AI知識庫項目,開啟建筑業數智化新篇章

AI正以前所未有的迅猛態勢滲透進建筑業的每一處脈絡。在這場數智化轉型浪潮中&#xff0c;AI技術如何與建筑業基因深度融合&#xff1f;如何充分釋放數據價值&#xff1f;近日&#xff0c;數巔成功中標中建科技集團有限公司“企業AI知識庫研發”項目&#xff0c;這一“大語言模…

想要PDF翻譯保留格式?用對工具是關鍵

嘿&#xff0c;朋友&#xff01;最近有沒有被PDF翻譯的事兒搞得焦頭爛額呀&#xff1f;尤其是碰到韓文PDF文件的時候&#xff0c;是不是更頭疼了&#xff1f;別擔心&#xff0c;我最近也遇到了類似的問題&#xff0c;試了不少軟件&#xff0c;發現有五款軟件在處理韓文PDF翻譯時…

【MySQL?】服務器安裝 MySQL 及配置相關操作

1. 安裝 MySQL 在安裝 MySQL 時&#xff0c;如果使用官方 RPM 源&#xff0c;會遇到 GPG 密鑰驗證失敗的錯誤&#xff0c;可以按照以下步驟解決&#xff1a; 解決 GPG 密鑰驗證失敗的問題下載 MySQL 官方 GPG 密鑰 使用以下命令下載并安裝 MySQL 的官方 GPG 密鑰&#xff1a; w…