AI智能实体侦测服务HTTPS配置:SSL证书申请与部署教程
1. 引言
1.1 学习目标
随着AI服务在企业级场景中的广泛应用,保障数据传输安全已成为不可忽视的关键环节。本文将围绕AI智能实体侦测服务(基于RaNER模型),手把手教你如何为其WebUI和API接口配置HTTPS加密通信。
通过本教程,你将掌握: - 如何为本地AI服务申请免费SSL证书 - Nginx反向代理的配置方法 - HTTPS服务的安全加固实践 - 域名绑定与端口转发设置
最终实现:用户通过https://your-domain.com安全访问实体识别Web界面,并可通过HTTPS调用REST API,确保敏感文本数据在传输过程中不被窃取或篡改。
1.2 前置知识
阅读本文需具备以下基础: - 熟悉Linux基本命令操作 - 了解HTTP与HTTPS协议差异 - 拥有云服务器或内网穿透能力 - 已成功部署AI智能实体侦测服务镜像
💡提示:若尚未部署服务,可先前往 CSDN星图镜像广场 获取预置RaNER模型的Docker镜像,一键启动服务。
2. SSL证书申请与获取
2.1 为什么需要HTTPS?
AI实体侦测服务常用于处理新闻、公文、客户资料等含敏感信息的文本。若使用HTTP明文传输,可能导致: - 用户输入内容被中间人截获 - 实体识别结果泄露隐私 - API密钥或Token暴露风险
启用HTTPS后,所有请求均经过TLS加密,有效防止数据嗅探与篡改。
2.2 选择证书颁发机构(CA)
我们推荐使用Let’s Encrypt提供的免费DV证书,其特点如下:
| 特性 | 描述 |
|---|---|
| 费用 | 免费 |
| 验证方式 | 域名所有权验证(DNS或HTTP) |
| 有效期 | 90天(支持自动续期) |
| 浏览器兼容性 | 支持99%以上主流浏览器 |
✅ Let’s Encrypt 是目前最广泛使用的开源CA,已被各大操作系统和浏览器信任。
2.3 使用acme.sh申请证书
acme.sh是一个轻量级ACME协议客户端,支持自动化签发与续期。
步骤一:安装 acme.sh
curl https://get.acme.sh | sh -s email=my@example.com source ~/.bashrc步骤二:以DNS模式申请证书(推荐)
适用于已拥有域名并能修改DNS记录的用户。
# 替换为你的域名 export DP_Id="你的DNS提供商API ID" export DP_Key="你的DNS提供商API密钥" acme.sh --issue --dns dns_dp -d ner.yourdomain.com🌐 支持阿里云、腾讯云、Cloudflare等多种DNS平台,详见 acme.sh官方文档
步骤三:安装证书到指定路径
acme.sh --installcert \ -d ner.yourdomain.com \ --key-file /etc/ssl/private/ner.key \ --fullchain-file /etc/ssl/certs/ner.crt \ --reloadcmd "sudo systemctl reload nginx"该命令会自动将证书复制至标准路径,并在更新时重载Nginx。
3. Nginx反向代理配置
3.1 安装Nginx
大多数Linux发行版可通过包管理器安装:
# Ubuntu/Debian sudo apt update && sudo apt install nginx -y # CentOS/RHEL sudo yum install nginx -y启动并设置开机自启:
sudo systemctl enable nginx sudo systemctl start nginx3.2 配置反向代理规则
创建配置文件/etc/nginx/sites-available/ner-webui:
server { listen 443 ssl http2; server_name ner.yourdomain.com; # SSL证书配置 ssl_certificate /etc/ssl/certs/ner.crt; ssl_certificate_key /etc/ssl/private/ner.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512; ssl_prefer_server_ciphers off; ssl_session_cache shared:SSL:10m; ssl_stapling on; # 安全头增强 add_header Strict-Transport-Security "max-age=63072000" always; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; # 反向代理到AI服务(默认运行在8080端口) location / { proxy_pass http://127.0.0.1:8080; 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_buffering off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } # API路径单独优化 location /api/ { proxy_pass http://127.0.0.1:8080/api/; proxy_set_header Content-Type "application/json;charset=utf-8"; proxy_read_timeout 300s; } }启用站点配置
sudo ln -s /etc/nginx/sites-available/ner-webui /etc/nginx/sites-enabled/ sudo rm /etc/nginx/sites-enabled/default # 删除默认配置 sudo nginx -t # 测试配置语法 sudo systemctl reload nginx3.3 HTTP自动跳转HTTPS
创建监听80端口的重定向规则:
server { listen 80; server_name ner.yourdomain.com; return 301 https://$server_name$request_uri; }这样即使用户输入http://ner.yourdomain.com,也会自动跳转至HTTPS。
4. 服务端口与防火墙配置
4.1 开放必要端口
确保服务器防火墙允许以下端口通行:
| 端口 | 协议 | 用途 |
|---|---|---|
| 80 | TCP | Let’s Encrypt 验证 & HTTP跳转 |
| 443 | TCP | HTTPS服务 |
| 8080 | TCP | AI服务内部端口(仅限本地访问) |
UFW(Ubuntu)示例:
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw allow from 127.0.0.1 to any port 8080 sudo ufw enablefirewalld(CentOS)示例:
sudo firewall-cmd --permanent --add-port=80/tcp sudo firewall-cmd --permanent --add-port=443/tcp sudo firewall-cmd --reload4.2 内网穿透方案(无公网IP时)
如果你的服务运行在家庭网络或局域网中,可使用frp或ngrok进行内网穿透。
使用 frp 示例:
frpc.ini配置:
[web] type = https local_port = 443 custom_domains = ner.yourdomain.com配合公网服务器上的frps,即可将本地HTTPS服务暴露到外网。
5. WebUI与API的HTTPS验证
5.1 访问HTTPS Web界面
打开浏览器访问:
https://ner.yourdomain.com你应该看到: - 地址栏显示绿色锁图标 🔒 - Cyberpunk风格UI正常加载 - 输入一段文本测试实体识别功能
⚠️ 若出现“混合内容”警告,请检查前端资源是否仍引用了HTTP链接,建议修改HTML模板中的静态资源路径为相对路径或HTTPS地址。
5.2 调用HTTPS API接口
原HTTP API:
POST http://ner.yourdomain.com/api/predict现应改为:
POST https://ner.yourdomain.com/api/predict示例Python调用代码:
import requests url = "https://ner.yourdomain.com/api/predict" headers = {"Content-Type": "application/json"} data = {"text": "马云在杭州阿里巴巴总部发表演讲"} response = requests.post(url, json=data, verify=True) print(response.json())✅verify=True表示启用证书校验,确保连接安全。
6. 自动续期与监控
6.1 设置证书自动续期
acme.sh默认每天检查一次证书状态,到期前30天自动续签。
你可以手动测试续期流程:
acme.sh --renew -d ner.yourdomain.com --force并确认Nginx成功重载。
6.2 添加健康检查脚本
创建监控脚本/opt/check_https.sh:
#!/bin/bash URL="https://ner.yourdomain.com/health" if curl -sk --max-time 10 $URL | grep -q "ok"; then echo "$(date): HTTPS service is UP" >> /var/log/ner-monitor.log else echo "$(date): HTTPS service DOWN!" | mail -s "NER Service Alert" admin@yourdomain.com fi添加定时任务:
crontab -e # 添加以下行 */5 * * * * /opt/check_https.sh每5分钟检测一次服务可用性。
7. 总结
7.1 核心要点回顾
- 安全优先:AI文本处理涉及敏感信息,必须启用HTTPS加密传输。
- 证书自动化:使用
acme.sh + Let’s Encrypt实现免费证书全自动签发与续期。 - Nginx反向代理:作为SSL终止点,统一管理HTTPS流量并转发至后端AI服务。
- 安全加固:配置强加密套件、HSTS、CSP等安全头,提升整体防护水平。
- 持续运维:通过脚本+定时任务实现证书续期与服务健康监控。
7.2 最佳实践建议
- 将Nginx配置纳入版本控制(如Git),便于回滚与协作
- 定期备份SSL证书私钥(
ner.key),避免丢失导致服务中断 - 对API调用启用身份认证(如JWT Token),进一步提升安全性
- 在生产环境中使用独立域名,避免与其他服务共享证书
💡获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。