在CentOS系统下为Golang应用程序配置SSL证书,可以按照以下步骤进行:
获取SSL证书:首先,你需要获取一个SSL证书。你可以从证书颁发机构(CA)购买一个证书,或者使用Let’s Encrypt免费生成一个证书。
安装Certbot:Certbot是一个自动化的工具,用于获取和部署Let’s Encrypt SSL证书。在CentOS上安装Certbot,可以使用以下命令:
sudo yum install epel-release
sudo yum install certbot
yourdomain.com
替换为你的域名:sudo certbot certonly --standalone -d yourdomain.com
Certbot会创建一个新的目录(默认为/etc/letsencrypt/live/yourdomain.com
),其中包含你的证书文件(fullchain.pem
)和私钥文件(privkey.pem
)。
http.ListenAndServeTLS
函数配置SSL证书。以下是一个简单的示例:package main
import (
"fmt"
"log"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, SSL!")
})
certFile := "/etc/letsencrypt/live/yourdomain.com/fullchain.pem"
keyFile := "/etc/letsencrypt/live/yourdomain.com/privkey.pem"
log.Printf("Starting server on :443")
err := http.ListenAndServeTLS(":443", certFile, keyFile, nil)
if err != nil {
log.Fatal(err)
}
}
将certFile
和keyFile
变量设置为你的证书文件和私钥文件的路径。
重启Golang应用程序:保存更改并重启你的Golang应用程序以应用新的SSL配置。
更新证书:Certbot证书的有效期为90天。为了自动更新证书,你可以使用Certbot的renew
命令:
sudo certbot renew --dry-run
如果没有错误,运行以下命令以实际更新证书:
sudo certbot renew
certbot renew
命令。使用以下命令打开crontab编辑器:sudo crontab -e
添加以下行以每天检查证书更新:
0 0 * * * certbot renew --quiet && systemctl reload your-golang-app.service
将your-golang-app.service
替换为你的Golang应用程序的systemd服务名称。
现在,你的Golang应用程序已经配置了SSL证书,并可以安全地处理HTTPS请求。