security - 确保无需凭据的客户端/服务器身份验证

标签 security ssl https certificate

我正在研究保护客户端应用程序和服务器之间 channel 的方法。

我有一个丰富的桌面客户端 (win) 和移动客户端连接到网络服务,交换数据。

使用 SSL 证书,服务器和客户端可以相互信任。在安全连接上,我可以交换用户名和密码,从而对用户进行身份验证。

但是在某些情况下,用户必须通过这两种方法中的任何一种连接到服务器,而无需他的凭据,而只是文字,比如车牌号。

我真的想确保在这种情况下我只允许客户端连接我确定我知道的设备,因为没有进一步检查身份验证并且车牌号将是一个非常常见的文字。

我如何确保只有我的服务器已知的“设备”才能与我的服务器交互?

最佳答案

如果你想验证设备,你需要找到一种方法让设备证明它是什么,而不泄露它的 secret 。

对于任何能够看到该号码的人来说,类似于车牌的系统很容易被欺骗。根据您对此设备的控制程度,您可能无法隐藏它,即使与您的服务器的连接已使用 SSL/TLS 进行保护。

实现此目的的一种可能方法是使用加密硬件 token (或智能卡)。其中一些 token 可以配置为持有证书和私钥,能够使用私钥而无法导出该私钥。加密操作(签名和解密)发生在 token 本身。

您可以使用它们对您的服务器执行客户端证书身份验证。在这种情况下,您会知道客户端拥有该 token 。这可能在您知道 CA 仅为此类 token 中的 key 对颁发证书的情况下起作用:管理 CA 来处理此问题会产生成本。

这至少可以让您将身份验证与特定 token 相关联。您是否可以将其与您的整体设备集成取决于您拥有的设备类型。

关于security - 确保无需凭据的客户端/服务器身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15655106/

相关文章:

linux - 阻止所有内部流量,除了来自单个端口上特定 IP 的传入流量

.net - 使用SPSite构造函数的FileNotFoundException

apache - 强制 www 时重定向循环。主机名和 SSL

mysql - AWS RDS MYSQL SSL 如何工作?

spring-boot - 使用 SSL 的 Spring Cloud Gateway 无法按名称路由到服务

c# - 通过 https 将用户名和密码以明文形式从 C# 发送到 Wordpress 站点是否安全

apache - 使用 htaccess 将 HTTPS 重定向到单个 PHP 文件

css - 安全性 - 通过 http 或 https 的 css 文件

security - 在 HEADER 或 URL 中传递 API key ?

apache - 如何结合基本身份验证和https?