当前位置:首页 > 问答 > 正文

go项目 宝塔面板:如何在宝塔里为go项目申请免费SSL证书?

🔥 Go项目 | 宝塔面板:手把手教你申请免费SSL证书(2025最新版)

最新动态 📢
2025年8月,Let's Encrypt宣布其免费SSL证书服务已覆盖99%的主流Web服务器环境,包括Go语言项目!宝塔面板7.9版本也优化了证书自动续签功能,现在部署HTTPS比叫外卖还简单~


🛠️ 准备工作清单

  1. 已安装宝塔面板(推荐7.9+版本)
  2. 域名已完成备案并解析到服务器
  3. Go项目已部署(比如你的main.go/www/wwwroot/your_project
  4. 一杯咖啡或奶茶 ☕(操作只要5分钟)

📌 第一步:登录宝塔面板

浏览器输入你的服务器IP+端口(如http://123.123.123.123:8888),用当初安装时设置的用户名密码登录,如果忘记密码...兄弟,终端输入bt选择5重置密码吧!


🌐 第二步:添加站点

  1. 点击左侧【网站】→【添加站点】
  2. 填写你的域名(如example.comwww.example.com
  3. 根目录建议设为Go项目目录(比如/www/wwwroot/go_app
  4. PHP版本选择【纯静态】(Go项目不需要PHP)
  5. 数据库看需求创建(Go项目可能用MySQL/PostgreSQL)

🔐 第三步:申请SSL证书

✨ 重点来了!宝塔内置Let's Encrypt免费证书:

  1. 进入【网站】列表,找到刚添加的站点
  2. 点击对应站点的【SSL】→【Let's Encrypt】
  3. 勾选域名(默认已选中)和【DNS验证】(比文件验证更稳定)
  4. 选择邮箱(用于到期提醒)
  5. 点击【申请】按钮

💡 小技巧:如果遇到验证失败,可能是DNS解析没生效,喝杯茶等10分钟再试~

go项目 宝塔面板:如何在宝塔里为go项目申请免费SSL证书?


⚙️ 第四步:配置Go项目

现在你的证书在/www/server/panel/vhost/ssl/your_domain/目录下:

  • fullchain.pem(证书链)
  • privkey.pem(私钥)

修改你的Go代码启用HTTPS:

package main
import (
    "log"
    "net/http"
)
func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte("🔒 你的Go项目现在是HTTPS加密的啦!"))
    })
    // 使用宝塔生成的证书
    err := http.ListenAndServeTLS(":443", 
        "/www/server/panel/vhost/ssl/your_domain/fullchain.pem",
        "/www/server/panel/vhost/ssl/your_domain/privkey.pem",
        nil)
    if err != nil {
        log.Fatal("启动失败: ", err)
    }
}

🔄 第五步:设置自动续签

宝塔的证书90天会过期,但自动续签超省心:

  1. 回到【SSL】页面
  2. 打开【自动续签】开关
  3. 点击【强制HTTPS】(全站跳转HTTPS)
  4. 在【计划任务】里确认续签任务已生成

🎉 搞定!现在访问你的域名,应该能看到绿色小锁标志了~


💣 常见问题排雷

错误1:"验证失败,域名未解析"
👉 去域名服务商检查DNS解析,ping一下看是否生效

go项目 宝塔面板:如何在宝塔里为go项目申请免费SSL证书?

错误2:"端口443被占用"
👉 宝塔面板【安全】里放行443端口,关闭其他占用443的服务

错误3:"Go程序报权限错误"
👉 终端执行:chmod 644 *.pem 给证书文件读权限


🚀 进阶玩法

  • acme.sh申请泛域名证书(*.example.com
  • 在Nginx反向代理后运行Go项目(更安全)
  • 开启HTTP/2提升性能(宝塔SSL设置里可直接开启)

📆 最后提醒

2025年起,Chrome等浏览器已全面标记HTTP站点为"不安全",给你的Go项目上SSL证书,就像给自行车上锁——简单但必要!遇到问题欢迎在评论区吼一嗓子~ 👇

发表评论