HTTP 如何升級成 HTTPS

有一個自己的項目需要上線,域名解析完成后,發現只能使用 http 協議,這在瀏覽器上會限制,提示用戶不安全,所以需要把 HTTP 升級成 HTTPS 協議,但又不想花錢。

前提條件:

  • 已經配置好 Nginx 服務器

  • 域名已解析到您的服務器 IP

  • 已開放 80 和 443 端口(可在阿里云控制臺的安全組設置中配置)

獲取證書

我們先獲取證書,我使用的是「Let's Encrypt」,這是一家為6億多個網站提供免費 TLS 證書的非營利組織。

Let's Encrypt 提供免費的證書,有效期為 90 天,可以自動續期。

安裝證書

我們需要先安裝 Certbot 和 Nginx 插件:

# 安裝 EPEL 倉庫sudo?yum install epel-release -y# 安裝 Certbot 和 Nginx 插件sudo yum install certbot python3-certbot-nginx -y

獲取,然后安裝證書

sudo certbot?--nginx?-d your-domain.com
  • 在操作過程中,Certbot 會詢問幾個問題:

  • 輸入您的郵箱地址(用于緊急續期通知和安全公告)

  • 同意服務條款

  • 是否愿意共享郵箱(可選)

  • 是否希望將所有 HTTP 流量重定向到 HTTPS(建議選擇 2,完全重定向)

配置 Nginx

提供一個 AI 反饋的 Nginx 配置:???

server?{? ??listen?443?ssl;? ??server_name?example.com www.example.com;? ??ssl_certificate?/path/to/your/certificate.crt;? ??ssl_certificate_key?/path/to/your/private.key;? ??# 其他 SSL 配置? ??ssl_protocols?TLSv1.2?TLSv1.3;? ??ssl_prefer_server_ciphers?on;? ??ssl_ciphers?ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384;? ??# 網站根目錄等配置? ??root?/var/www/html;? ??index?index.html;? ??# 其他配置...}# HTTP 重定向到 HTTPSserver?{? ??listen?80;? ??server_name?example.com www.example.com;? ??return?301?https://$host$request_uri;}

另外提供一個 Apache 的配置???????

<VirtualHost *:443>? ??ServerName?example.com? ??ServerAlias?www.example.com? ??SSLEngine?on? ??SSLCertificateFile?/path/to/your/certificate.crt? ??SSLCertificateKeyFile?/path/to/your/private.key? ??# 其他配置? ??DocumentRoot?/var/www/html? ??# 其他設置...</VirtualHost># HTTP 重定向到 HTTPS<VirtualHost *:80>? ??ServerName?example.com? ??ServerAlias?www.example.com? ??Redirect?permanent / <https://example.com/></VirtualHost>

檢查 Nginx 配置

配置好以后,您可以檢查 Nginx 的配置,

sudo?cat?/etc/nginx/conf.d/your-config-file.conf

我服務器上 Nginx 的內容如下:???????

server?{? ??listen? ? ? ?80;? ??listen? ? ? ?[::]:80;? ??server_name? your-domain.com;? ??# 添加網站根目錄? ??root?/usr/share/nginx/your-domain;? ??# 為 Let's Encrypt 驗證添加特殊處理? ??location?/.well-known/acme-challenge/ {? ? ? ? ? ??allow?all;? ? }? ??# 其他請求繼續重定向到 HTTPS? ??location?/ {? ? ? ? ? ??return?301?https://$server_name$request_uri;? ? }}# HTTPS serverserver?{? ??listen? ? ? ?443?ssl http2;? ??listen? ? ? ?[::]:443?ssl http2;? ??server_name? your-domain.com;? ??client_max_body_size?50M;? ??# 下載優化? ??proxy_buffer_size?128k; ? ? ? ? ? ? ? ? ??# 代理響應的緩沖區大小? ??proxy_buffers?4?256k; ? ? ? ? ? ? ? ? ? ??# 緩沖區數量和大小? ??proxy_busy_buffers_size?256k; ? ? ? ? ? ??# 繁忙時緩沖區大小? ??proxy_temp_file_write_size?256k; ? ? ? ? ?# 臨時文件寫入大小? ??# 開啟 gzip 壓縮? ??gzip?on;? ??gzip_min_length?1k;? ??gzip_comp_level?6;? ??gzip_types?text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;? ??# 修改證書路徑為 Let's Encrypt 的證書路徑? ??ssl_certificate? ? ?/etc/letsencrypt/live/your-domain.com/fullchain.pem;? ??ssl_certificate_key?/etc/letsencrypt/live/your-domain.com/privkey.pem;? ??ssl_session_cache?shared:SSL:1m;? ??ssl_session_timeout??10m;? ??ssl_ciphers?PROFILE=SYSTEM;? ??ssl_prefer_server_ciphers?on;? ??# 添加反向代理配置? ??location?/ {? ? ? ??proxy_pass?<http://localhost:3100>;? ? ? ??proxy_http_version?1.1;? ? ? ??proxy_set_header?Upgrade?$http_upgrade;? ? ? ??proxy_set_header?Connection?'upgrade';? ? ? ??proxy_set_header?Host?$host;? ? ? ??proxy_cache_bypass?$http_upgrade;? ? }? ??# Load configuration files for the default server block.? ??include?/etc/nginx/default.d/*.conf;? ??error_page?404?/404.html;? ? ? ??location?= /40x.html {? ? }? ??error_page?500?502?503?504?/50x.html;? ? ? ??location?= /50x.html {? ? }}

自動續期腳本

如果到期怎么辦?

我們可以設置自動續期的腳本:

確認當前狀態???????

# 檢查 Certbot 版本certbot?--version# 查看當前證書信息sudo certbot certificates

測試續期功能

# 執行干運行測試,不實際更新證書sudo?certbot renew --dry-run

創建腳本

sudo nano?/usr/local/bin/renew-letsencrypt.sh

添加內容:???????

#!/bin/bash# 日志文件LOG_FILE="/var/log/letsencrypt-renewal.log"DATE=$(date?"+%Y-%m-%d %H:%M:%S")# 記錄開始信息echo?"[$DATE] 開始證書續期檢查..."?>>?$LOG_FILE# 執行續期操作并記錄輸出RENEWAL_OUTPUT=$(certbot renew --quiet 2>&1)RENEWAL_STATUS=$?# 檢查續期狀態if?[?$RENEWAL_STATUS?-eq 0 ];?then? ??echo?"[$DATE] 證書檢查/續期成功"?>>?$LOG_FILE? ??# 檢查是否有證書被實際更新? ??if?echo?"$RENEWAL_OUTPUT"?| grep -q?"renewal";?then? ? ? ??echo?"[$DATE] 檢測到證書已更新,重新加載 Nginx"?>>?$LOG_FILE? ? ? ? systemctl reload nginx? ? ? ? NGINX_STATUS=$?? ? ? ??if?[?$NGINX_STATUS?-eq 0 ];?then? ? ? ? ? ??echo?"[$DATE] Nginx 重新加載成功"?>>?$LOG_FILE? ? ? ??else? ? ? ? ? ??echo?"[$DATE] 錯誤:Nginx 重新加載失敗,返回碼:?$NGINX_STATUS"?>>?$LOG_FILE? ? ? ??fi? ??else? ? ? ??echo?"[$DATE] 沒有證書需要更新"?>>?$LOG_FILE? ??fielse? ??echo?"[$DATE] 錯誤:證書續期失敗,返回碼:?$RENEWAL_STATUS"?>>?$LOG_FILE? ??echo?"[$DATE] 錯誤詳情:?$RENEWAL_OUTPUT"?>>?$LOG_FILEfiecho?"[$DATE] 證書續期流程完成"?>>?$LOG_FILEecho?"----------------------------------------"?>>?$LOG_FILE

設置執行權限

sudo?chmod?+x /usr/local/bin/renew-letsencrypt.sh

創建任務

sudo?crontab -e

添加以下內容:???????

# 每天凌晨 2:15 和下午 2:15 運行證書續期15?2,14?* * * /usr/local/bin/renew-letsencrypt.sh

驗證任務設置

sudo?crontab -l

設置每周運行一次???????

sudo?chmod?+x /usr/local/bin/renew-letsencrypt.shsudo crontab -e

每周檢查一次???????

# 每周一上午9點檢查證書狀態0?9?* *?1?/usr/local/bin/renew-letsencrypt.sh

手動續簽腳本???????

# 執行腳本sudo /usr/local/bin/renew-letsencrypt.sh# 檢查文件輸出sudo?tail?-f /var/log/letsencrypt-renewal.log

查看證書信息

sudo?certbot certificates

會顯示出「已安裝證書的域名、存儲位置、到期日期、續期設置」證書有效期

比如:從 2025-04-21 到 2025-07-20(共 90 天,符合 Let's Encrypt 標準)。

Certbot 會在到期前 30 天(即 2025-06-20 左右)自動嘗試續期(你之前的 -dry-run 測試已確認續期配置正常)。

無需手動操作,除非續期失敗。

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

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

相關文章

測試面試題總結一

目錄 列表、元組、字典的區別 nvicat連接出現問題如何排查 mysql性能調優 python連接mysql數據庫方法 參數化 pytest.mark.parametrize 裝飾器 list1 [1,7,4,5,5,6] for i in range(len(list1): assert list1[i] < list1[i1] 這段程序有問題嘛&#xff1f; pytest.i…

[藍橋杯]密文搜索

密文搜索 題目描述 福爾摩斯從 X 星收到一份資料&#xff0c;全部是小寫字母組成。 他的助手提供了另一份資料&#xff1a;許多長度為 8 的密碼列表。 福爾摩斯發現&#xff0c;這些密碼是被打亂后隱藏在先前那份資料中的。 請你編寫一個程序&#xff0c;從第一份資料中搜…

打卡第36天:模型可視化以及推理

知識點回顧&#xff1a; 1.三種不同的模型可視化方法&#xff1a;推薦torchinfo打印summary權重分布可視化 2.進度條功能&#xff1a;手動和自動寫法&#xff0c;讓打印結果更加美觀 3.推理的寫法&#xff1a;評估模式 作業&#xff1a;調整模型定義時的超參數&#xff0c;對…

8天Python從入門到精通【itheima】-68(元組)

目錄 65節——元組的定義和操作 1.學習目標 2.為什么要學習元組 3.元組的定義 4.定義元組的注意事項 5.元組的嵌套 6.元組的相關操作 【1】index方法 【2】count方法 【3】len方法 7.元組的遍歷 【1】while循環進行元組的遍歷 【2】for循環進行元組的變量 Python …

鏈表題解——環形鏈表【LeetCode】

141. 環形鏈表 方法一 核心思想&#xff1a; 使用一個集合 seen 來記錄已經訪問過的節點。遍歷鏈表&#xff0c;如果當前節點已經存在于集合中&#xff0c;說明鏈表存在環&#xff1b;否則&#xff0c;將當前節點添加到集合中&#xff0c;繼續遍歷。如果遍歷結束&#xff08;h…

【免費數據】1980-2022年中國2384個站點的水質數據

水&#xff0c;是生命之源&#xff0c;關乎著地球上每一個生物的生存與發展。健康的水生生態系統維持著整個水生態的平衡與活力&#xff1b;更是確保人類能持續獲得清潔水源的重要保障。水質數據在水質研究、海洋生物量測算以及生物多樣性評估等諸多關鍵領域都扮演著舉足輕重的…

分享推薦高精度磁阻式磁編碼器芯片

磁編碼器其通過感應旋轉磁場來實現角度、轉速的測量&#xff0c;因此&#xff0c;相較于傳統的光編碼器&#xff0c;磁編碼器對粉塵、污垢和油脂等污染物有很強的耐受性&#xff0c;即使在較為惡劣的環境中仍能夠保持高分辨率與檢測精度&#xff0c;安裝和維護簡捷方便&#xf…

Spring AI 項目實戰(四):Spring Boot + AI + DeepSeek 超參數優化——智能化機器學習平臺(附完整源碼)

系列文章 序號文章名稱1Spring AI 項目實戰&#xff08;一&#xff09;&#xff1a;Spring AI 核心模塊入門2Spring AI 項目實戰&#xff08;二&#xff09;&#xff1a;Spring Boot AI DeepSeek 深度實戰&#xff08;附完整源碼&#xff09;3Spring AI 項目實戰&#xff08…

高效VLM:VisionZip

論文&#xff1a;[2412.04467] VisionZip: Longer is Better but Not Necessary in Vision Language Models github&#xff1a;https://github.com/dvlab-research/VisionZip LLaVA論文&#xff1a;https://arxiv.org/abs/2310.03744 LLaVA倉庫&#xff1a;https://github.…

華為設備OSPF配置與實戰指南

一、基礎配置架構 sysname HUAWEI-ABR ospf 100 router-id 1.1.1.1area 0.0.0.0network 10.1.1.0 0.0.0.255 # 將接口加入區域0 interface GigabitEthernet0/0/1ospf enable 100 area 0.0.0.0 # 華為支持點分十進制區域號bandwidth-reference 10000 # 設置10Gbps參考帶寬…

區塊鏈架構深度解析:從 Genesis Block 到 Layer 2

# 區塊鏈架構深度解析&#xff1a;從 Genesis Block 到 Layer 2 目錄 一、Genesis Block&#xff1a;區塊鏈的起點 二、Layer 0&#xff1a;區塊鏈的底層網絡架構 三、Layer 1&#xff1a;核心協議層 &#x1f680; 四、Layer 2&#xff1a;擴展性解決方案 五、未來展望&a…

【位運算】丟失的數字(easy)

34. 丟失的數字&#xff08;easy&#xff09; 題?描述&#xff1a;方法一&#xff1a;排序解法&#xff08;位運算&#xff09;&#xff1a;C 算法代碼&#xff1a;Java 算法代碼&#xff1a; 題?鏈接&#xff1a; 268. 丟失的數字 題?描述&#xff1a; 給定?個包含 [0, n…

如何通過RL真正提升大模型的推理能力?NVIDIA提出長期強化學習訓練框架ProRL

原文&#xff1a;https://mp.weixin.qq.com/s/QLFKvb8Ol3CX9uWKBXSrow 論文&#xff1a;ProRL: Prolonged Reinforcement Learning Expands Reasoning Boundaries in Large Language Models Abs&#xff1a;https://arxiv.org/abs/2505.24864 權重下載&#xff1a;https://hugg…

ORM 框架的優缺點分析

ORM 框架的優缺點分析 一、ORM 框架概述 ORM(Object-Relational Mapping)是一種將關系型數據庫與面向對象編程進行映射的技術框架。它通過將數據庫表映射為編程語言中的類,將記錄映射為對象,將字段映射為屬性,實現了用面向對象的方式操作數據庫。 核心價值:ORM 在數據庫和…

1. 數據庫基礎

1.1 什么是數據庫 ? mysql 本質是一種網絡服務, 是基于 C(mysql) S(mysqld)的 網絡服務. 存儲數據用文件就可以了&#xff0c;為什么還要弄個數據庫&#xff1f;文件保存數據存在以下缺點&#xff1a; 文件的安全性問題。文件不利于數據查詢和管理。文件不利于存儲海量數據。…

go語言學習 第5章:函數

第5章&#xff1a;函數 函數是編程中不可或缺的一部分&#xff0c;它封裝了一段可重復使用的代碼&#xff0c;用于執行特定的任務。在Go語言中&#xff0c;函數同樣扮演著重要的角色。本章將詳細介紹Go語言中函數的定義、調用、參數傳遞、返回值處理以及一些高級特性&#xff…

MapReduce 分布式計算模型

what&#xff1a;分解大數據集&#xff0c;并行處理&#xff0c;匯總結果&#xff08;分解組合思想&#xff09; 目的&#xff1a;SQL查詢轉換為MR&#xff0c;理解MR更好優化SQL 優點&#xff1a; 只需關注業務邏輯&#xff08;自定義函數map&#xff0c;reduce&#xff09…

RDMA簡介3之四種子協議對比

RDMA協議共有四種子協議&#xff0c;分別為InfiniBand、iWARP、RoCE v1和RoCE v2協議。這四種協議使用統一的RDMA API&#xff0c;但在具體的網絡層級實現上有所不同&#xff0c;如圖1所示&#xff0c;接下來將分別介紹這四種子協議。 圖1 RDMA四種子協議網絡層級關系圖 Infin…

LabelImg: 開源圖像標注工具指南

LabelImg: 開源圖像標注工具指南 1. 簡介 LabelImg 是一個圖形化的圖像標注工具&#xff0c;使用 Python 和 Qt 開發。它是目標檢測任務中最常用的標注工具之一&#xff0c;支持 PASCAL VOC 和 YOLO 格式的標注輸出。該工具開源、免費&#xff0c;并且跨平臺支持 Windows、Lin…

系統架構設計論文

disstertation 軟考高級-系統架構設計師-論文&#xff1a;論文范圍&#xff08;十大知識領域&#xff09;、歷年論題、預測論題及論述過程、論文要點、論文模板等。 —— 2025 年 4 月 4 日 甲辰年三月初七 清明 目錄 disstertation1、論文范圍&#xff08;十大核心領域&#x…