写点什么

Go 语言快速入门指南:什么是 TSL 安全传输层

作者:宇宙之一粟
  • 2022 年 8 月 04 日
  • 本文字数:1406 字

    阅读完需:约 5 分钟

Go 语言快速入门指南:什么是 TSL 安全传输层

安全问题,让人既爱又恨,不管是云原生应用还是本地或其他,安全是任何应用程序的一个重要特性。但往往很多时候,安全问题被忽视,成为最后考虑的问题,这样的结果就是:一旦出现问题,就会带来灾难性结果。


传统环境有丰富的工具和既定的安全最佳实践,但对于云原生应用来说,情况就不一样了,云原生应用往往采取几个小的、往往是短暂的微服务的形式。虽然这种架构提供了巨大的灵活性和可扩展性优势,但它也为潜在的攻击者创造了一个明显的机会。潜在的攻击者创造了一个明显的机会:服务之间的每一次通信都是通过网络传输的。从而使其被窃听和篡改。



TLS 介绍


TLS(Transport Layer Security,安全传输层),是一种加密协议,旨在通过计算机网络提供通信安全。TLS 是建立在传输层 TCP 协议之上的协议,服务于应用层,它的前身是 SSL(Secure Socket Layer,安全套接字层),它实现了将应用层的报文进行加密后再交由 TCP 进行传输的功能。


TLS 确保没有第三方可以窃听或篡改任何消息。它的使用是无处不在和广泛的,几乎适用于任何互联网通信。


TSL 的优点

  • 加密: TLS/SSL 可以帮助使用加密保护传输的数据

  • 互操作性:TLS/SSL 适用于大多数 Web 浏览器,包括 Microsoft Internet Explorer 以及大多数操作系统和 Web 服务器

  • 算法灵活性:TLS/SSL 为安全会话期间使用的身份验证机制、加密算法和散列算法提供操作

  • 易于部署:许多应用程序 TLS/SSL 临时在 windows server 2003 操作系统上

  • 使用方便:因为我们在应用层下实现了 TLS/SSL,所以它的大部分操作对客户端是完全不可见的


TLS 的工作:客户端连接服务器(使用 TCP),客户端就会有东西了。客户发送规格编号:

  1. SSL/TLS 的版本

  2. 哪个密码套件,它想使用的压缩方法


公钥加密技术


TLS 使用公钥加密法对信息进行加密,在这种情况下,双方都拥有自己的密钥对。其中包括一个免费公开的公钥,和一个只有其所有者知道的私钥。


任何人都可以使用公钥对信息进行加密,但只有用相应的私钥才能对其进行解密。使用该协议,希望进行私密通信的双方可以交换他们的公钥,然后可以用公钥来保证所有后续通信的安全,而这种方式只能由持有相应私钥的预定收件人的主人来阅读。



服务器检查它们都支持的最高 SSL/TLS 版本,从一个客户端选项(如果它支持一个)中选择一个密码套件,并可选择选择一种压缩方法。在此基本设置完成后,服务器提供其证书。此证书必须由客户端本身或客户端信任的一方信任。在验证了证书并确定该服务器确实是他声称的人(而不是中间人)之后,交换了一个密钥。这可以是一个公钥,“PreMasterSecret”,也可以是任何东西,具体取决于密码套件。


服务器和客户端现在都可以计算对称加密的密钥。握手完成,两台主机可以安全通信。通过完成来关闭连接。 TCP 连接双方都会知道连接被不当终止。连接不会因此而受到损害,只会中断。


Go 内置的安全服务函数

net/http 的设计者友好地提供了一个我们熟悉的 TLS 的变体:ListenAndServe 函数,我们已经很熟悉了。

func ListenAndServeTLS(addr, certFile, keyFile string, handler Handler) error
复制代码

ListenAndServeTLS 的使用和感觉几乎与 ListenAnd Serve 完全一样,只是它有两个额外的参数:certFilekeyFile。如果你碰巧有证书和私钥的 PEM 文件,那么服务 HTTPS 加密连接只是将这些文件的名称传递给 ListenAndServeTLS 的问题。

http.ListenAndServeTLS(":8080", "cert.pem", "key.pem", nil)
复制代码

这看起来超级方便.


总结

TSL 提供个相对低成本、高回报的组成部分。

发布于: 16 小时前阅读数: 62
用户头像

宇宙古今无有穷期,一生不过须臾,当思奋争 2020.05.07 加入

🏆InfoQ写作平台-第二季签约作者 🏆 混迹于江湖,江湖却没有我的影子 热爱技术,专注于后端全栈,轻易不换岗 拒绝内卷,工作于软件工程师,弹性不加班 热衷分享,执着于阅读写作,佛系不水文

评论

发布
暂无评论
Go 语言快速入门指南:什么是 TSL 安全传输层_安全_宇宙之一粟_InfoQ写作社区