在Go中使用OpenSSL生成的server.key
和server.crt
文件实现HTTPS服务器,你需要使用crypto/tls
包来配置TLS。以下是一个简单的HTTPS服务器示例:
首先,确保你已经有了server.key
和server.crt
文件。
package main
import (
"crypto/tls"
"log"
"net/http"
)
func main() {
// 加载服务器的私钥和证书
cert, err := tls.LoadX509KeyPair("server.crt", "server.key")
if err != nil {
log.Fatalf("服务器证书加载失败: %v", err)
}
// 配置TLS
config := &tls.Config{
Certificates: []tls.Certificate{cert},
}
// 创建HTTPS服务器
server := &http.Server{
Addr: ":443",
Handler: http.DefaultServeMux,
TLSConfig: config,
}
// 注册处理函数
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello, this is an HTTPS server!"))
})
// 启动服务器
log.Println("服务器启动中...")
err = server.ListenAndServeTLS("", "")
if err != nil {
log.Fatalf("服务器启动失败: %v", err)
}
}
在上述代码中,server.crt
应该是服务器的证书,server.key
应该是服务器的私钥。服务器将在443端口监听HTTPS请求。
确保你的server.crt
和server.key
文件权限是正确的,不然可能导致加载失败。
运行上述代码后,你将拥有一个基本的HTTPS服务器,它监听443端口并响应请求。