【问题标题】:[golang]Is it possible to write TLS server without certificate?[golang]没有证书可以写TLS服务器吗?
【发布时间】:2017-02-15 22:17:38
【问题描述】:
从客户端我已经有 tls 配置,它将 InsecureSkipVerify 设置为 true。如何为此客户端编写带有任何证书的服务器。
tls.config 也可以帮助服务器吗?喜欢将InsecureSkipVerify 设置为true?
【问题讨论】:
标签:
go
https
x509certificate
tls1.2
【解决方案1】:
不,正如@JimB 告诉你的那样,没有证书,TLS 就无法工作。
原因很简单:TLS 就是关于安全性和证书
是 加密密钥 提供安全性(TLS 使用所谓的
“非对称加密”,其中每一方都有一个密钥对,包括
私人和公共部分;公共部分是发送给另一方的
进行 TLS 握手时)。
但另一方面,TLS 提供的安全性是双重的:
- 它提供参与方的相互身份验证
交换。
- 它提供传输通道的加密。
证书用于两个方面:它们包含加密密钥的事实用于 (2),以及它们具有 所有者身份 编码的事实
在其中(并由颁发特定证书的人验证(
用于(1)。
让我不要离题来详细讨论 (1) 的工作原理
(虽然我真的敦促你阅读一些关于它的理论)但是(1)是什么
你真的想回避。
(对您而言)好处是它便宜可行:
- 可以告诉 TLS 客户端不要验证服务器的身份。
- 可以告诉 TLS 服务器做同样的事情(通常是默认设置)
他们运行的模式——这是常规网站的典型模式
例如)。
- 您可以为您的 TLS 创建一个所谓的self-signed certificate
服务器。
后者只需要能够生成的东西
X.509 证书; OpenSSL 通常用于此目的;
just google for it.
如果您使用的是 Debian 或 Debian 衍生产品(如 Ubuntu、Mint 等)
考虑安装ssl-cert 包并使用
它提供的make-ssl-cert 程序。