证书和HTTPS
http:应用层协议,标准协议
https:不是标准协议,http
+ssl
(security socket layer
)
例如访问百度
访问百度时,如何认证百度,需要CA
机构帮忙认证
- 百度在本地生成公私钥
- 将公钥发给CA机构
- CA对百度的公钥进行处理,生成百度数字证书,返回给百度。
- 客户访问百度,百度发送给客户证书。
- 客户认证证书是否有效
- 如果证书有效,生成对称密钥,使用服务器的公钥加密传送
- 服务器得到对称密钥,双方使用对称密钥通信
根证书是集成在操作系统中的。
linux创建证书
- 创建私钥
openssl genrsa -out s.key 1024
- csr用于给ca,让ca颁发证书
openssl req -new -key s.key -out s.csr
- 这里用自己的私钥给自己颁发证书
openssl x509 -req -days 365 -in s.csr -signkey s.key -out s.crt
- 查看自签名证书
openssl x509 -in s.crt -text
https服务
服务器
func main () {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request){
w.Write([]byte("hello world"))
})
e