首页 > 后端开发 > Golang > 正文

Golang如何实现HTTPS服务 配置Let's Encrypt证书教程

P粉602998670
发布: 2025-07-23 09:20:01
原创
339人浏览过

使用go语言实现https服务并结合let's encrypt证书的步骤如下:1. 准备已备案的域名、安装go环境和certbot工具;2. 通过standalone或webroot方式验证域名所有权并获取证书文件fullchain.pem和privkey.pem;3. 在go代码中使用http.listenandservetls方法启用https,指定证书和私钥路径;4. 配置自动更新证书脚本结合crontab定时执行,推荐使用热重启避免中断连接;5. 可选nginx反向代理、支持通配符证书及验证证书有效性。整个流程需注意权限管理、服务重启机制以确保证书生效和运行稳定。

Golang如何实现HTTPS服务 配置Let\'s Encrypt证书教程

HTTPS服务在Go语言中实现并不复杂,加上Let's Encrypt证书后,既能保证安全性,又能免费使用。下面直接进入正题。

Golang如何实现HTTPS服务 配置Let's Encrypt证书教程

准备工作

首先,你需要一个已经备案的域名,并能通过该域名访问你的服务器。Let's Encrypt不支持IP地址直接申请证书。此外,确保你的Go环境已经安装完毕,版本不要太旧。

Golang如何实现HTTPS服务 配置Let's Encrypt证书教程

另外,需要安装一个工具来获取和更新证书。推荐使用certbot,它是由Let’s Encrypt官方维护的自动获取证书工具。

立即学习go语言免费学习笔记(深入)”;

常见步骤如下:

Golang如何实现HTTPS服务 配置Let's Encrypt证书教程
  • 安装certbot
  • 用standalone或webroot方式验证域名所有权
  • 获取证书文件(通常是fullchain.pemprivkey.pem

Go代码中启用HTTPS

Golang标准库中的net/http包已经支持HTTPS服务,只需要调用ListenAndServeTLS方法即可。关键是要指定证书路径和私钥路径。

举个例子:

标小兔AI写标书
标小兔AI写标书

一款专业的标书AI代写平台,提供专业AI标书代写服务,安全、稳定、速度快,可满足各类招投标需求,标小兔,写标书,快如兔。

标小兔AI写标书 40
查看详情 标小兔AI写标书
package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello over HTTPS!")
    })

    // 假设证书文件放在当前目录下
    certFile := "/etc/letsencrypt/live/yourdomain.com/fullchain.pem"
    keyFile := "/etc/letsencrypt/live/yourdomain.com/privkey.pem"

    fmt.Println("Starting HTTPS server on :443")
    err := http.ListenAndServeTLS(":443", certFile, keyFile, nil)
    if err != nil {
        panic(err)
    }
}
登录后复制

注意:运行时要确保程序有权限读取证书文件。如果你把服务部署在非root用户下,可能需要调整文件权限或者软链接到项目目录。

自动更新证书

Let's Encrypt的证书有效期是90天,所以必须定期更新。一般做法是写一个脚本自动重启服务,结合crontab定时执行。

比如写一个更新脚本renew-cert.sh

#!/bin/bash
certbot renew --quiet --post-hook "systemctl restart your-go-service"
登录后复制

然后配置cron任务每月执行两次:

0 0 1,15 * * /path/to/renew-cert.sh
登录后复制

这样可以确保证书不会过期。需要注意的是,重启服务时最好使用热重启(Graceful Restart),避免中断现有连接。如果使用标准库,可以通过第三方库如fvbock/endless实现优雅重启。

额外小贴士

  • 如果你不想用443端口,也可以用Nginx做反向代理,Go服务监听本地端口即可。
  • Let's Encrypt也支持通配符证书,但需要用DNS验证方式申请。
  • 每次证书更新后,记得检查Go服务是否加载了新证书。有时候服务没重启,证书是不会自动生效的。
  • 使用openssl x509 -in fullchain.pem -text -noout命令可以查看证书的有效时间。

基本上就这些。配置HTTPS的过程不算难,但容易忽略细节,尤其是证书更新和服务重启的部分。只要处理好这几个环节,就能稳定运行一个安全的HTTPS服务了。

以上就是Golang如何实现HTTPS服务 配置Let's Encrypt证书教程的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号