http描述

HTTP属于超文本传输协议,用来在Internet上传送超文本,而HTTPS为安全超文本传输协议,在Http基础上拥有更强的安全性,简单来说https是http的安全版,是使用TLS/SSL加密的HTTP协议

超文本传输协议http协议被用在web浏览器和网站服务器之间传递信息,http协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,http协议不适合传输一些敏感信息,比如:信用卡哦好,密码等支付信息。

为了解决这个问题,就需要用到"安全套接字层超文本传输协议Https"为了数据安全,https在http基础上增加了ssl协议,ssl是依靠整数来验证服务器身份,并未浏览器和服务器之间的通信加密,从而就诞生了HTTPs。简单来说https就是ssl+http组合而成的加密传输,可以防止他人的恶意行为

HTTPS和HTTP的区别主要如下
1.https需要申请证书,免费的整数比较少,一般的需要一定的费用
2.http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议
3.http和https使用的是完全不同的连接方式,用的端口也不一样,前者是580,后者是443.
4.http的链接简单,是无状态的,https协议是由ssl+http协议构建的可进行加密传输,身份认证的网络协议,比http协议安全。

一般用于银行网站或电子邮箱等安全级别较高的服务都会采取https协议步骤一般如下:

1.客户使用https的URL访问Web服务器,要求与Web服务器建立ssl链接
2.Web服务器收到客户端请求后,会将网站的整数信息(证书中包含公钥)传送一份给客户端。
3.客户端的浏览器与Web服务器开始协商ssl链接的安全等级,也就是信息加密等级。
4.客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
5.web服务器利用自己的私钥解密出会话密钥
6.Web服务器利用会话密钥加密与客户端之间的通信

https的运用

Go语言的net/http包中包含了这种https页面访问方式的支持。net/http包中的ListenAndServeTLS就是提供这个功能的。我们可以先看一下这个函数的原型

func ListenAndServeTLS(addr string, certFile string, keyFile string, handler Handler) error

addr: 地址
cerfile:公钥
keyfile:私钥
handler:处理器函数
package main

import (
    "io"
    "log"
    "net/http"
)
 
func helloHandler(w http.ResponseWriter, r *http.Request) {
    io.WriteString(w, "hello world!")
}
 
func main() {
    http.HandleFunc("/hello", helloHandler)
    err := http.ListenAndServeTLS(":8080", "cert.pem", "key.pem", nil)
    if err != nil {
        log.Fatal("ListenAndServeTLS:", err.Error())
    }
}
Last modification:June 26th, 2019 at 09:13 pm
如果觉得我的文章对你有用,请随意赞赏