当前位置: 首页 > news >正文

Nginx 上安装 SSL 证书并启用 HTTPS 访问

本文将介绍如何在 Nginx 上为你的域名安装 SSL 证书,并配置 Nginx 使用 HTTPS 安全访问。我们将使用 Let’s Encrypt 免费的 SSL 证书,通过 Certbot 生成并管理证书,然后配置 Nginx 实现 HTTPS 加密访问。同时,我们将解决因 SSL 证书导致的代码拉取问题。

一、前置准备

  • 服务器:一台运行 Nginx 的服务器(如阿里云、AWS、DigitalOcean 等云服务器)。
  • 域名:一个已指向服务器公网 IP 的域名(例如 gitea.example.com)。
  • 服务器访问权限:确保你有服务器的 root 权限或 sudo 用户权限。

二、安装 Certbot 和生成 SSL 证书

Certbot 是 Let’s Encrypt 提供的一个工具,用于自动生成和管理 SSL 证书。

1. 安装 Certbot

在基于 Debian/Ubuntu 的系统上,可以使用以下命令安装 Certbot 和 Nginx 插件:

sudo apt update
sudo apt install certbot python3-certbot-nginx -y

2. 使用 Certbot 生成 SSL 证书

Certbot 可以自动为你的域名生成和安装 SSL 证书。运行以下命令:

sudo certbot --nginx -d gitea.example.com
  • --nginx:告诉 Certbot 自动配置 Nginx。
  • -d:指定需要申请证书的域名。

Certbot 会提示输入邮箱地址并同意服务条款。之后,它将自动生成 SSL 证书并更新 Nginx 配置以启用 HTTPS。

3. 验证证书安装

Certbot 完成后,你可以运行以下命令检查证书:

sudo certbot certificates

这将显示已安装证书的信息。确保域名和证书路径正确无误。

三、配置 Nginx 以启用 HTTPS

Certbot 在生成证书时会自动修改 Nginx 配置,但你可以手动优化和调整配置以满足安全性和性能的需求。以下是一个标准的 HTTPS 配置示例。

1. Nginx 配置文件

假设你的网站配置文件在 /etc/nginx/sites-available/gitea 中。打开该文件进行编辑:

# HTTPS 部分 - 配置反向代理到服务
server {listen 443 ssl http2;  # 启用 HTTP/2 支持server_name gitea.example.com;# SSL 配置 - Certbot 自动生成的配置ssl_certificate /etc/letsencrypt/live/gitea.example.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/gitea.example.com/privkey.pem;include /etc/letsencrypt/options-ssl-nginx.conf;  # Certbot 的自动配置文件ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;# HSTS(HTTP Strict Transport Security)配置add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;# 反向代理设置(代理到本地服务或其他端口)location / {proxy_pass http://127.0.0.1:3000;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_connect_timeout 60s;proxy_read_timeout 60s;proxy_send_timeout 60s;}
}# HTTP 重定向到 HTTPS
server {listen 80;server_name gitea.example.com;location / {return 301 https://$host$request_uri;}
}

2. 配置说明

  • HTTP 重定向:80 端口的 HTTP 请求将被自动重定向到 HTTPS。
  • SSL 证书路径ssl_certificatessl_certificate_key 路径指向 Certbot 生成的证书。
  • HSTS 配置add_header Strict-Transport-Security 可以强制客户端在未来仅通过 HTTPS 访问,防止降级攻击。

3. 检查和重启 Nginx

创建软链接以启用该配置:

sudo ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled/

检查 Nginx 配置是否正确:

sudo nginx -t

如果一切正常,重新加载 Nginx 配置:

sudo systemctl reload nginx

四、拉取代码时的 SSL 证书问题及解决方案

在启用了 HTTPS 后,Git 客户端可能会因 SSL 证书问题而无法克隆或拉取代码。以下是几种解决方案:

1. 使用 Let’s Encrypt 或其他受信任的证书

如果你还没有使用受信任的 SSL 证书,可以通过 Let’s Encrypt 获取免费证书,这样 Git 客户端将自动信任该证书。

2. 手动信任自签名证书(不推荐生产环境使用)

在 Windows 系统中
  1. 导出自签名证书:使用以下命令导出 Gitea 服务器上的自签名证书。在 Windows 中使用 <nul 替代 < /dev/null

    openssl s_client -showcerts -connect gitea.example.com:443 <nul | openssl x509 -outform PEM > gitea.crt
    
  2. 在 Windows 中安装证书:双击 gitea.crt 文件,选择“安装证书”,并将其安装到 受信任的根证书颁发机构 中。

在 macOS/Linux 系统中
  1. .crt 文件复制到 /usr/local/share/ca-certificates/ 目录中:

    sudo cp gitea.crt /usr/local/share/ca-certificates/gitea.crt
    
  2. 更新系统的 CA 证书:

    sudo update-ca-certificates
    

3. 在 Git 配置中关闭 SSL 验证(仅限测试环境)

在特定项目中关闭 SSL 验证:

git config http.https://gitea.example.com.sslVerify "false"

4. 使用 SSH 连接

如果 Gitea 支持 SSH,可以使用 SSH 协议克隆仓库,避免 SSL 证书问题。

git clone git@gitea.example.com:username/repository.git

五、测试 HTTPS 访问

在浏览器中访问 https://gitea.example.com,确保网站可以通过 HTTPS 正常加载。如果一切配置正确,浏览器地址栏应显示一个锁标志,表示连接已加密。

六、自动续订证书

Let’s Encrypt 证书有效期为 90 天。Certbot 已自动设置续订任务,可以通过以下命令手动测试续订:

sudo certbot renew --dry-run

七、总结

通过 Certbot 和 Nginx 配置 HTTPS 可以显著提高网站的安全性,并且 Let’s Encrypt 提供的免费证书使配置过程简单高效。按以上步骤设置后,你的站点将支持 HTTPS 安全访问,提升用户数据传输的安全性。同时,通过信任自签名证书或使用 SSH 协议,Git 客户端可以顺利地克隆和拉取代码。

相关文章:

Nginx 上安装 SSL 证书并启用 HTTPS 访问

本文将介绍如何在 Nginx 上为你的域名安装 SSL 证书&#xff0c;并配置 Nginx 使用 HTTPS 安全访问。我们将使用 Let’s Encrypt 免费的 SSL 证书&#xff0c;通过 Certbot 生成并管理证书&#xff0c;然后配置 Nginx 实现 HTTPS 加密访问。同时&#xff0c;我们将解决因 SSL 证…...

谷歌Gemini发布iOS版App,live语音聊天免费用!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…...

docker运行ActiveMQ-Artemis

前言 artemis跟以前的ActiveMQ不是一个产品&#xff0c;原ActiveMQ改为ActiveMQ Classic, 现在的artemis是新开发的&#xff0c;和原来不兼容&#xff0c;全称&#xff1a;ActiveMQ Artemis 本位仅介绍单机简单部署使用&#xff0c;仅用于学习和本地测试使用 官网&#xff1a;…...

90.选择排序(理论分析)

一.选择排序 冒泡排序每相邻的俩个元素之间都会比较交换一次&#xff0c;效率比较慢。这对这个问题所改进的算法叫做选择排序。 二&#xff0e;选择排序的实现思路 首先在一组未排序的数据中假定一个最大或者最小元素&#xff0c;一般是第0个元素。然后在从剩余未排序的元素中…...

GitLab 如何跨版本升级?

本分分享 GitLab 跨版本升级的一些注意事项。 众所周知&#xff0c;GitLab 的升级必须要严格遵循升级路径&#xff0c;否则就会出现问题&#xff0c;导致升级失败。因此&#xff0c;在 GitLab 升级之前需要做好两件事情&#xff1a; 当前版本的确认升级路径的确认 极狐GitLa…...

【Fermat】费马小定理

定理 若存在整数 a &#xff0c; p 且g c d ( a &#xff0c; p ) 1 gcd(a&#xff0c;p)1gcd(a&#xff0c;p)1&#xff0c;即二者互为质数&#xff0c;则有 a ( p − 1 ) ≡ 1 ( m o d p ) a^{(p-1)}≡ 1(mod p) a (p−1) ≡1(modp) 目录 定理 引理 引理一 引理二 证…...

NVMe(Non-Volatile Memory Express)非易失性存储器访问和传输协议

目录 NVMe(Non-Volatile Memory Express)非易失性存储器访问和传输协议 一、NVMe的定义 二、NVMe的特点 三、NVMe的应用场景 四、举例说明 NVMe(Non-Volatile Memory Express)非易失性存储器访问和传输协议 是一种非易失性存储器访问和传输协议,专为固态硬盘(SSD)…...

C++初阶——queue

一、什么是queue 是一个容器适配器&#xff0c;专门设计用于在先进先出&#xff08;FIFO&#xff0c;First In First Out&#xff09;的上下文中操作。它是一个容器适配器&#xff0c;这意味着它不是一个完整的容器类&#xff0c;而是封装了一个特定的容器类&#xff08;如list…...

达梦数据库迁移j脚本

国产环境使用达梦数据库的越来越多&#xff0c;除了使用管理工具&#xff0c;还是可以使用脚本。 下面简单记录下&#xff0c;我在迁移中遇到的问题&#xff1a; 备份脚本 使用此脚本可以一次备份一个数据 backup_one_db.sh #!/bin/bashexport DB$1 export PASS<your_p…...

【Linux】内核调用栈打印函数dump_stack使用效果

init/main.c的start_kernel示例&#xff0c;这个调用栈不太深&#xff1a; /var/log/dmesg日志&#xff1a; [ 0.000000] kernel: [init/main.c start_kernel 911] start_kernel(void) [ 0.000000] kernel: [kernel/panic.c print_tainted 519 LOG_TIMES: 1 ] [ 0.…...

Uniapp踩坑input自动获取焦点ref动态获取实例不可用

前言 大家好我是没钱的君子下流坯&#xff0c;用自己的话解释自己的知识。很久很更新了&#xff0c;这几个月一直在加班&#xff0c;今天记录一个uniapp关于input中focus()方法自动获取焦点的坑。 案例 为了实现一个手机验证码的页面&#xff0c;验证码是五个输入框&#xf…...

数据分析-47-时间序列变点检测之离线历史数据的CPD

文章目录 1 时间序列结构1.1 变化点的定义1.2 结构变化的类型1.2.1 水平变化1.2.2 方差变化1.3 变点检测1.3.1 离线数据检测方法1.3.2 实时数据检测方法2 模拟数据2.1 模拟恒定方差数据2.2 模拟变化方差数据3 离线数据变点检测3.1 Ruptures模块3.2 恒定方差CPD3.3 变化方差CPD4…...

加入GitHub Spark需要申请

目录 加入GitHub Spark需要申请 GitHub Spark 一、产品定位与特点 二、核心组件与功能 三、支持的AI模型 四、应用场景与示例 五、未来展望 六、申请体验 加入GitHub Spark需要申请 GitHub Spark 是微软旗下GitHub在2024年10月30日的GitHub Universe大会上推出的一款革…...

生成式GPT商品推荐:精准满足用户需求

生成式GPT商品推荐&#xff1a;精准满足用户需求 随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;电商平台正在逐步迎来一场前所未有的变革。尤其是生成式GPT&#xff08;Generative Pre-trained Transformer&#xff09;技术的应用&#xff0c;正在重新定…...

async 和 await的使用

一、需求 点击按钮处理重复提交&#xff0c;想要通过disabled的方式实现。 但是点击按钮调用的方法里有ajax、跳转、弹窗等一系列逻辑操作&#xff0c;需要等方法里流程都走完&#xff0c;再把disabled设为false&#xff0c;这样下次点击按钮时就可以继续走方法里的ajax等操作…...

Spring Cloud Vault快速入门Demo

1.什么是Spring Cloud Vault&#xff1f; Spring Cloud Vault 是 Spring Cloud 生态系统中的一个项目&#xff0c;旨在简化 Spring 应用程序与 HashiCorp Vault 的集成。它提供了一种方便的方式来管理和访问应用程序的敏感配置数据&#xff0c;如数据库凭证、API 密钥和其他机…...

道陟科技EMB产品开发进展与标准设计的建议|2024电动汽车智能底盘大会

11月12日&#xff0c;2024电动汽车智能底盘大会在重庆开幕。会议由中国汽车工程学会主办&#xff0c;电动汽车产业技术创新战略联盟、中国汽车工程学会智能底盘分会、智能绿色车辆与交通全国重点实验室承办。本届大会围绕电动汽车智能底盘相关技术发展与融合&#xff0c;满足高…...

GitHub Org

运营一个GitHub Org&#xff08;组织&#xff09;是一个复杂但充满价值的过程&#xff0c;它涉及多个方面&#xff0c;包括项目管理、团队协作、代码审查、文档维护、社区建设等。以下是一篇关于如何运营GitHub Org的详细指南&#xff0c;旨在帮助组织者更好地管理和维护其GitH…...

unity小:shaderGraph不规则涟漪、波纹效果

实现概述 在本项目中&#xff0c;我们通过结合 Sine、Polar Coordinates 和 Time 节点&#xff0c;实现了动态波纹效果。以下是实现细节&#xff1a; 核心实现 Sine 波形生成&#xff1a; 使用 Sine 节点生成基本的波形。该节点能够创建周期性变化&#xff0c;为波纹效果提供…...

【JavaScript】JavaScript开篇基础(6)

1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 亲爱的朋友们&#x1f44b;&#x1f44b;&#xff0c;这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章&#xff0c;请别吝啬你的点赞❤️❤️和收藏&#x1f4d6;&#x1f4d6;。如果你对我的…...

Obsidian个性化首页终极指南:3种配置方案提升知识管理效率70%

Obsidian个性化首页终极指南&#xff1a;3种配置方案提升知识管理效率70% 【免费下载链接】obsidian-homepage Obsidian homepage - Minimal and aesthetic template (with my unique features) 项目地址: https://gitcode.com/gh_mirrors/obs/obsidian-homepage 在信息…...

PIC32MZ EF嵌入式开发实战:硬件FPU与多协议连接方案解析

1. 项目概述&#xff1a;为什么是PIC32MZ EF&#xff1f;在嵌入式开发领域&#xff0c;尤其是涉及复杂控制、实时信号处理或物联网边缘计算时&#xff0c;我们常常面临一个经典矛盾&#xff1a;对计算性能的渴求与对功耗、成本和开发复杂度的现实考量。几年前&#xff0c;当我接…...

如何快速掌握Wallpaper Engine资源处理工具:面向初学者的完整指南

如何快速掌握Wallpaper Engine资源处理工具&#xff1a;面向初学者的完整指南 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 你是否曾经遇到过想要修改Wallpaper Engine动态壁纸&a…...

重新定义光学设计:Inkscape光线追踪插件带来的矢量图形仿真新范式

重新定义光学设计&#xff1a;Inkscape光线追踪插件带来的矢量图形仿真新范式 【免费下载链接】inkscape-raytracing An extension for Inkscape that makes it easier to draw optical diagrams. 项目地址: https://gitcode.com/gh_mirrors/in/inkscape-raytracing 当…...

从配色灾难到视觉盛宴:手把手教你用Matlab Colormap编辑器定制专属散点图配色

从配色灾难到视觉盛宴&#xff1a;手把手教你用Matlab Colormap编辑器定制专属散点图配色 科研图表的美学设计往往被工程师们忽视&#xff0c;直到某天你发现自己的论文配图在学术海报展上显得格格不入。Matlab默认的parula或jet色图虽然经典&#xff0c;但早已无法满足现代数据…...

终极图片转3D模型解决方案:ImageToSTL完整指南与性能优化

终极图片转3D模型解决方案&#xff1a;ImageToSTL完整指南与性能优化 【免费下载链接】ImageToSTL This tool allows you to easily convert any image into a 3D print-ready STL model. The surface of the model will display the image when illuminated from the left sid…...

为内部工具集成 AI 能力时如何借助 Taotoken 简化运维

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为内部工具集成 AI 能力时如何借助 Taotoken 简化运维 在开发内部效率工具或数据分析脚本时&#xff0c;集成文本生成、代码补全等…...

5.3、从双亲表示法看树的存储设计哲学

1. 双亲表示法的本质&#xff1a;用数组重构树形关系 第一次接触双亲表示法时&#xff0c;我被它的简洁性惊艳到了——仅用数组就能完整描述整棵树的拓扑结构。这种存储方式的核心在于&#xff1a;每个节点只需要记住自己的父亲是谁。就像现实中的家族族谱&#xff0c;我们通过…...

零基础极速上手教程:用AI建站工具10分钟生成你的第一个网站

你是不是也想过拥有一个属于自己的网站&#xff0c;但总觉得那是程序员才干得了的事&#xff1f;或者你曾经试过一些建站工具&#xff0c;结果被复杂的后台、密密麻麻的选项和所谓的「可视化拖拽」搞得晕头转向&#xff1f;别担心&#xff0c;今天这篇教程&#xff0c;就是专门…...

基于Spark的分布式量化交易框架:事件驱动架构与实战开发

1. 项目概述与核心价值最近在跟几个做量化交易的朋友聊天&#xff0c;发现一个挺有意思的现象&#xff1a;大家手里或多或少都有一些基于Python的量化策略&#xff0c;但真正能稳定、高效、自动化跑起来的&#xff0c;却不多。问题往往出在几个地方&#xff1a;要么是本地机器性…...