gpt4 book ai didi

Delphi Indy - 如何为 Indy 10 的 SSL-TCP 客户端/服务器链接获取 SSL 证书

转载 作者:可可西里 更新时间:2023-11-01 02:45:21 26 4
gpt4 key购买 nike

我对 SSL 和这些加密的东西完全陌生,但我需要让在移动设备上运行的客户端和服务器 Delphi XE6 应用程序进行通信。必须对 TCP 通信进行安全加密。

首先,我简单地编写了基于 Win32 客户端和服务器交换字符串的 Delphi/Indy TIdTCPServer/TIdTCPClient。 (出自 SourceForge 上的 indy10clieservr 演示:svn://svn.code.sf.net/p/indy10clieservr/code/1_sample Simple String Exchange)

我试图通过在服务器上添加 TIdServerIOHandlerSSLOpenSSL 组件和在客户端上添加 TIdSSLIOHandlerSocketOpenSSL 来修改它们以加密通信,将它们分别附加到 TIdTCPServer 和 TIdTCPClient。

我在两侧设置了它们的以下属性:- SSLOptions.Method = sslvSSSv23- SSLOptions.Mode = sslmServer/sslmClient(分别)- SSLOptions.VerifyDepth = 2

我还添加了一个 OnGetPassword 事件处理程序,将两侧的密码参数设置为“密码”。(此密码的作用是什么?它对通信的隐私至关重要吗?如果通过分析/逆向工程二进制文件发现它怎么办?)

最后,在服务器的 OnConnect 事件处理程序中,我将 TIdSSLIOHandlerSocketBase(AContext.Connection.IOHandler).PassThrough 属性设置为 false。

但是 3 个 SSLOptions 证书属性呢?- 证书文件- key 文件- 根证书文件

如何在我的目标设备上生成和部署它们,以便在客户端和服务器上运行我的 SSL 层?

此外,如果我打算稍后在 IOS 或 Android 移动设备上部署我的服务器和/或客户端,是否有什么特别要做或需要考虑的。

我知道我对这个 SSL 主题知之甚少。对不起,如果我问一些琐碎的事情。非常感谢任何向新手解释所有这些棘手内容的基本文档。

最佳答案

正如我在回答您的 same question on the Embarcadero forums 时告诉您的那样, 证书是可选的。它们用于允许对等点验证彼此的身份,而不是用于加密。证书有助于避免中间人攻击,它允许客户端验证它连接到它期望连接到的正确服务器,反之亦然。客户端拥有证书并不常见,除非在制作仅允许授权客户端连接的专有系统时除外。但至少服务器拥有证书是很常见的。证书可以受密码保护,因此如果您确实使用它们,则必须为您实际使用的证书提供正确的密码。无法从证书本身检索证书的密码,但如果攻击者获得了对您的证书文件的访问权限,那么您就有更大的问题需要处理。

至于 SSLv23,它是一个通配符,允许在以下情况下进行动态版本协商客户端和服务器支持不同的 SSL/TLS 版本。 SSLv23 允许他们找出并使用双方共同的最高版本。如果一个服务器需要支持广泛的客户端,使用 SSLv23 是有意义的服务器端。在客户端没有那么多。既然你控制了两者客户端和服务器,最好使用特定版本TLSv1 或更高版本。

关于Delphi Indy - 如何为 Indy 10 的 SSL-TCP 客户端/服务器链接获取 SSL 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27194780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com