SSL(Secure Socket Layer, 安全套接字层):
SSL是一种通过公钥基础设施(PKI)为通信双方提供数据加密和身份验证的协议,其中通信的双方通常是客户端和服务器。后改名为TLS(Transport Layer Security, 传输层安全协议)。
HTTPS:
HTTPS需要使用SSL/TLS来实现数据加密以及身份验证。SSL证书存储在服务器上,它使用X.509格式进行格式化数据,这些数据包含公钥和其他信息。证书一般由证书分发机构(CA)签发。
由HTTPS提供服务的过程:
1.服务器接收客户端的请求后,将证书和响应返回给客户端
2.客户端确认证书真实性后,生成一个随机密钥,并使用证书中的公钥进行加密传回服务器
3.服务器和客户端使用对称密钥(回传的随机密钥)对通信进行加密
SSL证书:
X.509:由国际电信联盟电信标准化部门为公钥基础设施指定的一个标准,这个标准包含了公钥证书的标准格式。
X.509证书:实际上是一个经过编码的ASN.1格式的电子文档。ASN.1是一种表示法。X.509可以使用多种编码,其中一种是BER,DER是BER的一个子集。DER只提供了一种编码ASN.1值的方法,被广泛用于密码学中。
SSL证书的保存格式:有多种格式,其中一种是PEM,这种格式会对X.509证书实施Base64编码。
如果证书由CA签发,那么证书文件中同时包含服务器签名和CA签名,其中服务器签名在前,CA签名在后。
go 通过HTTPS提供服务:
package main
import "net/http"
func main() {
s := http.Server{
Addr: "0.0.0.0:8080",
Handler: nil,
}
s.ListenAndServeTLS("cert.pem", "cert.pem")
}