在CentOS上为Golang应用配置SSL证书,通常需要以下几个步骤:
你可以从Let’s Encrypt免费获取SSL证书,或者购买商业证书。
安装Certbot:
sudo yum install epel-release
sudo yum install certbot
获取证书:
sudo certbot certonly --standalone -d yourdomain.com -d www.yourdomain.com
按照提示完成证书的获取和配置。
假设你的Golang应用运行在一个HTTP服务器上,你可以使用http.Server结构体来配置SSL。
package main
import (
"log"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello, HTTPS!"))
})
server := &http.Server{
Addr: ":443",
TLSConfig: &tls.Config{MinVersion: tls.VersionTLS12},
}
log.Println("Starting HTTPS server on :443")
if err := server.ListenAndServeTLS("/etc/letsencrypt/live/yourdomain.com/fullchain.pem", "/etc/letsencrypt/live/yourdomain.com/privkey.pem"); err != nil {
log.Fatalf("Failed to start HTTPS server: %v", err)
}
}
Let’s Encrypt证书每90天需要续期一次。你可以使用Certbot的自动续期功能。
设置自动续期:
sudo systemctl enable certbot.service
sudo systemctl start certbot.service
检查续期状态:
sudo certbot renew --dry-run
确保你的防火墙允许HTTPS流量(端口443)。
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
确保你的应用可以通过HTTPS访问,并且证书正确安装。
curl -k https://yourdomain.com
注意:-k选项用于忽略证书验证,仅用于测试目的。
通过以上步骤,你应该能够在CentOS上为你的Golang应用成功配置SSL证书。