使用openssl生成自签证书使项目支持https
生成CA证书
- 创建私钥 openssl genrsa -out ca-key.pem 1024
- 创建证书请求 openssl req -new -out ca.csr -key ca-key.pem
- 之后按个人的实际情况,填写信息 (这些信息会标明在证书里面)
- 自签署证书 openssl x509 -req -in ca.csr -out ca.cer -signkey ca-key.pem -days 3650
生成server证书
- 生成server证书 openssl genrsa -out server-key.pem 1024
- 创建证书请求 openssl req -new -out server-req.csr -key server-key.pem
- 根据个人的实际情况,填写信息
- 自签署证书
openssl x509 -req -in server-req.csr -out server-cert.pem -signkey server-key.pem -CA ca.cer -CAkey ca-key.pem -CAcreateserial -days 3650 - 之后更改 server-cert.pem的后缀 server-cert.CER (不改也可以,这只是俩种不同的编码)
这样之后 server-cert.CER为自签证书,且包含公钥,server-key.pem为私钥。可以在项目中直接使用,更改后项目就可以支持https请求了
go func() {
if err := srv.ListenAndServeTLS("server-cert.CER路径", "server-key.pem路径"); err != nil && err != http.ErrServerClosed {
log.Fatalf("listen: %s\n", err)
}
}()
简单版本
-
生成私钥
openssl genrsa -out server.key 2048 -
生成 CSR (Certificate Signing Request)
openssl req
-subj “/C=CN/ST=BeiJing/L=BeiJing/O=XXX/OU=XXX/CN=XXX”
-new
-key server.key
-out server.csr -
生成自签名证书
openssl x509
-req
-days 3650
-in server.csr
-signkey server.key
-out server.crt