本文将介绍如安在 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_certificate 和 ssl_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 设置是否正确:
如果齐备正常,重新加载 Nginx 设置:
- sudo systemctl reload nginx
复制代码 四、拉代替码时的 SSL 证书问题及办理方案
在启用了 HTTPS 后,Git 客户端可能会因 SSL 证书问题而无法克隆或拉代替码。以下是几种办理方案:
1. 利用 Let’s Encrypt 或其他受信托的证书
如果你还没有利用受信托的 SSL 证书,可以通过 Let’s Encrypt 获取免费证书,如许 Git 客户端将自动信托该证书。
2. 手动信托自签名证书(不推荐生产情况利用)
在 Windows 体系中
- 导出自签名证书:利用以下下令导出 Gitea 服务器上的自签名证书。在 Windows 中利用 <nul 替代 < /dev/null。
- openssl s_client -showcerts -connect gitea.example.com:443 <nul | openssl x509 -outform PEM > gitea.crt
复制代码 - 在 Windows 中安装证书:双击 gitea.crt 文件,选择“安装证书”,并将其安装到 受信托的根证书颁发机构 中。
在 macOS/Linux 体系中
- 将 .crt 文件复制到 /usr/local/share/ca-certificates/ 目录中:
- sudo cp gitea.crt /usr/local/share/ca-certificates/gitea.crt
复制代码 - 更新体系的 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 客户端可以顺利地克隆和拉代替码。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |