Ruby on rails 确定使用http头在两个应用之间发送ssl签名吗?

Ruby on rails 确定使用http头在两个应用之间发送ssl签名吗?,ruby-on-rails,openssl,http-headers,Ruby On Rails,Openssl,Http Headers,我们有两个rails应用程序,它们通过API相互通信。我们决定使用带有公钥和私钥的OpenSSL来保护调用。因此,在发送请求之前,我们使用私钥创建文档的签名。在另一个应用程序上,我们用公钥和收到的文档验证签名 这适用于我们的put和post,因为我们可以简单地在主体中添加文档和签名 但是,我们也希望对get执行此操作,我不想在get中添加一个主体,显然这是一个禁忌。在get请求中将签名和文档作为http头发送是否合适?该文档非常小,只有JSON字符串中的几个参数 我的另一个选择是使用POST或P

我们有两个rails应用程序,它们通过API相互通信。我们决定使用带有公钥和私钥的OpenSSL来保护调用。因此,在发送请求之前,我们使用私钥创建文档的签名。在另一个应用程序上,我们用公钥和收到的文档验证签名

这适用于我们的put和post,因为我们可以简单地在主体中添加文档和签名

但是,我们也希望对get执行此操作,我不想在get中添加一个主体,显然这是一个禁忌。在get请求中将签名和文档作为http头发送是否合适?该文档非常小,只有JSON字符串中的几个参数


我的另一个选择是使用POST或PUTs而不是GETs

这应该完全一样。无论您将其作为标题发送(例如
授权:
)还是在
POST
正文中发送,这都不会对安全性产生影响。注意:此方法从根本上讲是不安全的,因为您正在重用签名,因此如果攻击者有权访问您发送的数据,他们可能会执行重播攻击。谢谢Jeremy,在文档中,我想有一个时间戳,同时检查时间是否接近以及验证签名。保护两个应用程序之间的API调用的最佳实践是什么,或者至少是更好的方法?(这可能是另一个这样的问题)如果你使用时间戳,那会更好,但据我所知并不完美。每个请求使用一个唯一的数字会是一个更好的选择,或者你可以使用这一点。一般来说,这就是为什么最好不要使用自己的身份验证协议!考虑到您提出的问题,我们基本上都在讨论一个私钥签名,这应该是完全一样的。无论您将其作为标题发送(例如
授权:
)还是在
POST
正文中发送,这都不会对安全性产生影响。注意:此方法从根本上讲是不安全的,因为您正在重用签名,因此如果攻击者有权访问您发送的数据,他们可能会执行重播攻击。谢谢Jeremy,在文档中,我想有一个时间戳,同时检查时间是否接近以及验证签名。保护两个应用程序之间的API调用的最佳实践是什么,或者至少是更好的方法?(这可能是另一个这样的问题)如果你使用时间戳,那会更好,但据我所知并不完美。每个请求使用一个唯一的数字会是一个更好的选择,或者你可以使用这一点。一般来说,这就是为什么最好不要使用自己的身份验证协议!考虑到您提出的问题,我们基本上都在讨论一个私钥签名,这应该是完全一样的。无论您将其作为标题发送(例如
授权:
)还是在
POST
正文中发送,这都不会对安全性产生影响。注意:此方法从根本上讲是不安全的,因为您正在重用签名,因此如果攻击者有权访问您发送的数据,他们可能会执行重播攻击。谢谢Jeremy,在文档中,我想有一个时间戳,同时检查时间是否接近以及验证签名。保护两个应用程序之间的API调用的最佳实践是什么,或者至少是更好的方法?(这可能是另一个这样的问题)如果你使用时间戳,那会更好,但据我所知并不完美。每个请求使用一个唯一的数字会是一个更好的选择,或者你可以使用这一点。一般来说,这就是为什么最好不要使用自己的身份验证协议!考虑到您提出的问题,我们基本上都在讨论私钥签名