前言
这里使用自签CA,SSL证书
CA证书部分
生成CA的私钥
openssl genrsa -out ca.key 2048
生成CA证书
openssl req -x509 -new -nodes -key ca.key -subj "/CN=www.open1.com" -days 3660 -out ca.crt
服务器证书部分
创建服务器私钥
openssl genrsa -out server.key 2048
创建服务器证书签名请求
openssl req -new -key server.key -subj "/CN=www.open1.com" -out server.csr
使用CA颁发证书
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 3660 -out server.crt
# 当前目录下结构
xieruixiang@xieruixiangdeMacBook-Pro testData % ls
ca.crt ca.key ca.srl server.crt server.csr server.key
go http service
package main
import (
"log"
"net/http"
"time"
)
func main() {
mux := http.NewServeMux()
mux.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) {
writer.Write([]byte("ssl/tls"))
})
server := &http.Server{
Addr: ":2001",
Handler: mux,
WriteTimeout: time.Second * 3,
}
server.ListenAndServe()
//传入ssl证书和服务器私钥
//非https的使用 server.ListenAndServe() 启动
log.Fatal(server.ListenAndServeTLS("/Users/xieruixiang/go/src/gateway/testData/server.crt","/Users/xieruixiang/go/src/gateway/testData/server.key"))
}
访问
由于我们证书主体是www.open1.com
需要修改本地host
vim /etc/hosts
# 增加
127.0.0.1 www.open1.com
由于我们的ca证书是不受信任的所以,访问网站会有提示。
火狐可以选择直接跳过,低版本的google浏览器也能选择跳过,高版本需要在提示页面键盘输入:thisisunsafe。当使用https后,发现协议版本也提升到http2了