用golang来实现的webserver通常是是这样的
//main.go package main import ( "fmt" "io" "net/http" ) func defaultHandler(w http.ResponseWriter, r *http.Request) { io.WriteString(w, "<h1>Golang HTTP</h1>") } func main() { mux := http.NewServeMux() mux.HandleFunc("/", defaultHandler) err := http.ListenAndServe(":80", mux) if err != nil { fmt.Println(err.Error()) } }
服务运行后,我们通常通过http://localhost
的形式来访问,
而我们要实现的是通过https://localhost
的形式来访问.
那么如何用golang来实现HTTPS呢?
//main.go package main import ( "fmt" "io" "net/http" ) func defaultHandler(w http.ResponseWriter, r *http.Request) { io.WriteString(w, "<h1>Golang HTTPS</h1>") } func main() { mux := http.NewServeMux() mux.HandleFunc("/", defaultHandler) certFile := "/etc/letsencrypt/live/www.taadis.com/cert.pem" keyFile := "/etc/letsencrypt/live/www.taadis.com/privkey.pem" err := http.ListenAndServeTLS(":443", certFile, keyFile, mux) if err != nil { fmt.Println(err.Error()) } }
源码比较简单,主要是把http.ListenAndServe()
替换成ListenAndServeTLS()
。其次注意下端口号的区别,还有就是CA证书的问题,这里我采用了Let's Encrypt。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。