Nginx多域名HTTPS配置全攻略:從證書生成到客戶端安裝

一、業務背景

在現代Web開發中,HTTPS已成為保障數據傳輸安全的標準協議。特別是對于地圖類API服務(如高德地圖),往往需要同時支持多個子域名(如webapi.amap.comrestapi.amap.com等)的HTTPS訪問。傳統方式需要為每個域名單獨配置證書,不僅管理成本高,而且容易出錯。本文將詳細介紹如何使用單張通配符證書+SAN證書技術,配合Nginx實現多域名HTTPS的統一管理。

二、解決思路

針對多域名HTTPS配置的挑戰,我們采用以下技術方案:

  1. 證書生成階段

    • 使用OpenSSL生成包含通配符域名特定子域名的SAN證書

    • 一次性覆蓋*.amap.com及特定業務域名

  2. Nginx配置階段

    • 單server塊監聽443端口

    • 動態代理到不同后端服務

    • 啟用SNI支持多域名

  3. 客戶端適配

    • 自簽名證書需要手動安裝到受信任根證書

    • 瀏覽器/移動端特殊處理

三、解決內容

3.1 證書生成步驟

1. 準備SAN配置文件(san.cnf)
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no[req_distinguished_name]
C = CN
ST = Beijing
L = Beijing
O = AMap
OU = Dev
CN = *.amap.com[v3_req]
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names[alt_names]
DNS.1 = *.amap.com
DNS.2 = webapi.amap.com
DNS.3 = restapi.amap.com
DNS.4 = vdata.amap.com
2. 執行生成命令
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 keyout "F:/amap.key" -out "F:/amap.crt" -config "F:/san.cnf" -extensions v3_req

3.2 客戶端證書安裝

Windows系統安裝步驟:
  1. 雙擊amap.crt文件

  2. 選擇"安裝證書" → "本地計算機" → "受信任的根證書頒發機構"

  3. 完成向導后重啟瀏覽器

3.3 Nginx核心配置

worker_processes auto;events {worker_connections 1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;# 全局DNS配置(關鍵)resolver 8.8.8.8 114.114.114.114 valid=300s;  # 公共DNS + 超時設置resolver_timeout 5s;# 請求體大小限制client_body_buffer_size 100m;client_max_body_size 100m;# SSL優化參數ssl_session_cache   shared:SSL:10m;ssl_session_timeout 10m;ssl_protocols       TLSv1.2 TLSv1.3;ssl_ciphers         HIGH:!aNULL:!MD5:!SHA1;ssl_prefer_server_ciphers on;# 通配符證書服務器server {listen 443 ssl;server_name webapi.amap.com restapi.amap.com vdata.amap.com www.amap.com*.amap.com;ssl_certificate      cert/amap.crt;ssl_certificate_key  cert/amap.key;# 動態代理核心配置location / {# 關鍵:使用$host變量動態代理到對應域名proxy_pass https://$host$request_uri;# HTTPS代理必須參數proxy_ssl_server_name on;  # 啟用SNI支持proxy_ssl_name $host;      # 傳遞原始域名# 保持原始請求頭proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;# 連接優化proxy_http_version 1.1;proxy_set_header Connection "";proxy_read_timeout 300s;proxy_cache_valid 200 302 12h;proxy_cache_key "$host$request_uri";}}
}

3.4 常見錯誤及解決方案

錯誤信息原因分析解決方案
SSL_ERROR_BAD_CERT_DOMAIN證書域名不匹配請求域名檢查SAN配置包含所有子域名
ERR_CERT_AUTHORITY_INVALID證書未受信任確保證書安裝到"受信任的根證書"
upstream SSL certificate verify errorNginx證書驗證失敗檢查proxy_ssl_trusted_certificate路徑
certificate chain too long證書鏈不完整合并中間證書到crt文件
no valid SSL certificate found證書密鑰不匹配重新生成證書對

四、總結

通過本文的實踐,我們實現了:

  1. 一證多用:單張證書支持通配符域名和特定子域名

  2. 動態代理:Nginx根據請求域名自動路由

  3. 安全加固:啟用TLS 1.2+協議和強密碼套件

最佳實踐建議

  • 生產環境建議使用Let's Encrypt等權威CA

  • 定期輪換證書(建議不超過1年)

  • 使用OCSP Stapling提升驗證效率

注:本文示例適用于開發測試環境,生產環境請根據實際情況調整安全策略。

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

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

相關文章

Redis原理:rename命令

RENAME key newkey 將一個key重命名為新key,如果key不存在,則會返回異常。如果newKey已經存在,則會被覆蓋,其實newKey會被顯示的刪除,所以如果newKey是一個大key,則會引起延遲。 源碼 void renameCommand…

k8s污點與容忍

k8s污點與容忍 k8s污點管理常用命令effect標記值查看污點添加污點刪除污點 node污點與容忍污點容忍yaml示例容忍放大基于污點的驅逐驅逐時排除指定服務 設置master調度設置master盡量不調度允許master節點調度pod恢復Master Only狀態將node標記為不可調度狀態(節點警戒)設置nod…

(BFS)題解:P9425 [藍橋杯 2023 國 B] AB 路線

題解:P9425 [藍橋杯 2023 國 B] AB 路線 題目傳送門 P9425 [藍橋杯 2023 國 B] AB 路線 一、題目描述 給定一個NM的迷宮,每個格子標記為A或B。從左上角(1,1)出發,需要移動到右下角(N,M)。移動規則是:必須交替走K個A格子和K個B…

python-leetcode 62.搜索插入位置

題目: 給定一個排序數組和一個目標值,在數組中找到目標值,并返回其索引。如果目標值不存在于數組中,返回它將會被按順序插入的位置 方法一:二分查找 假設題意是在排序數組中尋找是否存在一個目標值,則可以…

【計網速通】計算機網絡核心知識點和高頻考點——數據鏈路層(一)

數據鏈路層核心知識點(一) 一、數據鏈路層概述 1.1 基本概念 數據鏈路層位于OSI模型的第二層,介于物理層和網絡層之間,主要負責在相鄰節點之間傳輸和識別數據幀。 1.2 主要功能 幀同步:識別幀的開始和結束差錯控制…

模型部署與調用

目錄 部署 ollama下載 模型版本選擇 ?編輯 對照表 控制臺執行 調用 部署 大模型部署我使用的是Ollama,點擊跳轉 接下來我將在本地使用ollama就行模型部署的演示 ollama下載 模型版本選擇 對照表 大家可以根據自己的顯卡配置選擇對應的模型版本 控制臺執…

Rstudio如何使用Conda環境配置的R

前言 Rstudio作為一款流行的R語言集成開發環境(IDE),為用戶提供了便捷的編程體驗。然而,不同項目可能需要不同版本的R,這就需要我們靈活切換R版本。除了在之前文章中提到的使用 Docker 部署不同版本的 R 的方法之外&am…

C++---RAII模式

一、RAII模式概述 1. 定義 RAII(Resource Acquisition Is Initialization)即資源獲取即初始化,是C中用于管理資源生命周期的一種重要編程模式。其核心在于將資源的獲取和釋放操作與對象的生命周期緊密綁定。當對象被創建時,資源…

【功能開發】DSP F2837x 檢測中斷所有函數運行一次的時間

要查看 DSP F28377 的 CPU 在 50 微秒一次的中斷內所有程序運行完總共占用了中斷多長時間,可以采用硬件定時器測量和軟件計時兩種常見方法。 方法一:使用硬件定時器測量 原理 利用 DSP 內部的高精度硬件定時器,在中斷開始時記錄定時器的值…

MAC環境給docker換源

2025-03-28 MAC環境給docker換源 在官網下載docker ,dmg 文件 參考: https://blog.csdn.net/qq_73162098/article/details/145014490 {"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},&q…

Vulnhub-zico2靶機打靶記錄

本篇文章旨在為網絡安全滲透測試靶機教學。通過閱讀本文,讀者將能夠對滲透Vulnhub系列zico2靶機有一定的了解 一、信息收集階段 靶機下載地址:https://download.vulnhub.com/zico/zico2.ova 因為靶機為本地部署虛擬機網段,查看dhcp地址池設…

【LeetCode 熱題100】347:前 K 個高頻元素(詳細解析)(Go語言版)

🚀 力扣熱題 347:前 K 個高頻元素(詳細解析) 📌 題目描述 力扣 347. 前 K 個高頻元素 給你一個整數數組 nums 和一個整數 k,請你返回其中出現頻率 前 k 高的元素。你可以按 任意順序 返回答案。 &#x1f…

Java 大視界 -- Java 大數據機器學習模型在金融衍生品定價中的創新方法與實踐(166)

💖親愛的朋友們,熱烈歡迎來到 青云交的博客!能與諸位在此相逢,我倍感榮幸。在這飛速更迭的時代,我們都渴望一方心靈凈土,而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識,也…

深度學習入門:從神經網絡基礎到簡單實現

深度學習作為人工智能領域最令人興奮的技術之一,已經在圖像識別、自然語言處理、語音識別等多個領域取得了突破性進展。本文將深入淺出地介紹深度學習的基本概念,并通過Python代碼實現一個簡單的神經網絡模型,幫助讀者建立直觀理解并邁出實踐第一步。 神經網絡的基本原理 …

第2.6節 iOS生成全量和增量報告

2.6.1 簡介 在采集了覆蓋率數據后,就需要生成對應需求的全量和增量覆蓋率報告,以便對測試進行查漏補缺。IOS系統有兩種開發語言,所以生成報告的方式也不相同,下面就分別介紹一下Object C和Swift語言如何生成覆蓋率報告。 2.6.2 O…

STM32技能綜合鞏固

一、深入理解ARMCPU架構及其指令格式、ARM匯編語言編程方法 1.匯編語言編程,實現LED燈 新建keil項目,選擇芯片 選擇運行環境以及配置 添加.s文件 匯編程序: AREAMYDATA,DATA AREAMYCODE,CODE ENTRY EXPORT__main __main MOVR0,#10 M…

P2Rank網頁端:預測蛋白結合口袋+vina分子對接

P2Rank 是一種基于機器學習的蛋白質口袋預測工具,用于識別蛋白質結構中的潛在配體結合位點。它采用了一種基于物理特征的打分方法,結合隨機森林(Random Forest)機器學習模型,以提高口袋預測的精確度。 該程序有在線工具…

安裝windows server 2016沒有可選硬盤,設備安裝過ubuntu系統

如果在安裝 Windows Server 2016 時無法識別已安裝過 Ubuntu 的硬盤,可能是由于硬盤分區格式(如 ext4)與 Windows 不兼容,或缺少必要的驅動程序。以下是詳細的解決方案: 1. 檢查 BIOS/UEFI 設置 確認硬盤模式 ? 重啟電…

Debian系統_主板四個網口1個配置為WAN,3個配置為LAN

Debian系統_主板四個網口1個配置為WAN,3個配置為LAN 一、重新配置網口 1、查看當前網口的狀態 ifconfig 或者 ip link show 或者 ls /sys/class/net 2、修改網絡配置文件 sudo vi /etc/network/interfaces 注意WAN口的網關地址如果是192.168.3.1的話,L…

springboot整合Thymeleaf web開發出現Whitelabel Error Page

背景 在做java端上應用開發的時候,從資源和部署操作成本兩方面考慮,一般會將前端的靜態資源直接與后端應用一起打包,通過springboot內嵌的Tomcat提供web服務。進入web首頁登錄一直到后續業務流程正向操作,頁面都能正常加載靜態資…