首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >共享私钥sTunnel

共享私钥sTunnel
EN

Security用户
提问于 2016-02-03 15:23:18
回答 2查看 1.5K关注 0票数 3

工作中的所有sTunnel指南和实现都是这样做的,他们说,一旦在服务器上创建了私钥和公共证书,您就需要将它们放在一起,然后与客户端主机共享。

虽然这对我来说是非常有意义的公共证书(因为客户端将使用它加密数据),但是共享私钥是否违背了整个SSL精神呢?

EN

回答 2

Security用户

发布于 2016-02-04 19:27:48

Stunnel是SSL,在SSL中,私钥从来不需要传输。"SSL精神“是指X.509证书用于在没有预先分发的共享秘密的情况下对对等点进行身份验证。例如,当您将Web浏览器连接到https://example.com时,SSL层会识别服务器证书,并确保它与真正的"example.com“对话,而不需要事先了解该特定站点。

Stunnel不在这个模型中,因为它通常在已经相互认识的两台机器之间使用。这样就可以使用更轻的型号。

默认情况下,stunnel不验证证书。这在HOWTO页面中也是如此(在“阻止测试证书是如何进行的?”)(第一节)如果您没有更改该设置,那么您使用的证书根本不重要。当然,不验证证书会使隧道易受中间人攻击攻击。从安全的角度来看,这仍然是可以接受的,如果隧道只想传递一个已经包含密码保护的底层协议;通常,您使用特技通过学校/公司防火墙,但在内部运行一些SSH。这个特技只是为了让防火墙对通信的SSHish特性保持警惕。在这种特殊情况下,不验证证书是可以的。(好吧,关于你的安全问题,我很好。你仍然在绕过学校/公司的防火墙,这在道德上和法律上都是有问题的。

大多数特技指南解释了如何在这种非验证模式下配置特效,而在客户端和服务器上复制证书是保持运行的最方便的方法。

如果将stunnel配置为验证证书,则:

  • 客户端必须能够检查服务器的证书(证书是公共部分,而不是私钥),这需要事先知道它,或者验证它对已知CA的签名。
  • 当客户端验证服务器的证书是真实的时,它仍然必须检查它是否是预期服务器的证书。
  • 如果服务器从客户端请求证书,它同样必须能够验证它,并检查它是否与允许的客户端相对应。

在stunnel中没有将客户端证书和服务器证书相互比较的代码。它们确实生活在不同的世界中;客户机证书在服务器上验证,服务器证书在客户端上验证。在这两个系统上拥有相同的证书对这两个系统的行为都没有任何影响。

在证书检查系统中,如果客户端和服务器都使用相同的证书,那么客户机可以模拟服务器,反之亦然。如果只有两台机器,那么这并不重要。如果有更多的机器(例如,在同一台服务器上连接两个客户机),那么这可能非常重要(您不一定希望允许客户端用假服务器为另一个客户端提供框架)。当然,共享私钥意味着私钥从一台机器传送到另一台机器,这台机器要么使用预先存在的隧道(例如SSH),要么是一种危险的操作。私钥应该保持私密,私钥旅行越多,私钥就越不私密。

票数 1
EN

Security用户

发布于 2016-02-04 16:17:00

不是的。

如果要使用客户端证书身份验证,则需要从证书颁发机构将客户端的私钥和证书复制到客户端。

如果希望允许客户端对服务器进行身份验证,则需要将服务器的私钥和证书从证书颁发机构复制到服务器。

确切地说,您希望如何验证远程终端对在何处需要哪些其他资源的影响。在客户端匿名连接(即没有客户端证书)到服务器的最简单情况下,客户机可以

  • 不需要任何服务器凭据的验证。
  • 验证服务器证书是由客户已经知道的CA签名的(即它拥有CA证书)
  • 验证所提供的证书是否匹配本地存储的副本。

SSL是服务器、客户端和证书颁发机构之间的一种威胁.

票数 0
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/112665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档