当您使用具有客户端证书的相互SSL时,是否有任何理由签署消息正文

时间:2012-05-22 15:20:20

标签: web-services security authentication ssl

我最近不得不用两个大型实体实现XML消息传递,这两个实体要求我们提供SSL客户端证书,并使用不同的签名证书对SOAP消息体进行签名。除了冗余之外,邮件正文具有不同证书的签名是否会提供任何额外保护?

编辑提供对问题的澄清,并指出我和EJP之间长达数年的误解。

除了使用SSL与相互身份验证(客户端证书)之外,对邮件进行签名的价值在于您获得了不可否认性。但是,无论客户端证书是否用于签名消息或使用其他签名证书,都可以得到。

3 个答案:

答案 0 :(得分:4)

签署邮件可在交易中提供法律上可强制执行的不可否认性。您有证据证明该客户端只有该客户端可以发送该消息,您可以在法庭上重复签名验证以进行演示。 SSL在技术上给你同样的东西,但是你没有任何办法让签名失效,所以你不能在法庭上制作它:你需要证据,而不是真正的数字签名,这是一种合法签名,因此表面上证据。

答案 1 :(得分:0)

我不知道我称之为“保护”,但这些是两件不同的事情。 SSL证书用于验证您的身份以进行加密/传输。

SOAP签名允许最终用户验证自创建者(您)签名后XML未被更改。

答案 2 :(得分:0)

使用传输层安全性,您的安全性将在传输层结束。通过对SOAP消息进行签名,您将为应用程序层提供端到端身份验证。

如果没有SSL客户端证书,互联网上的任何人都可以与您的后端服务器通信。这会增加你的攻击面。

如果没有应用层安全性,想象一下如果攻击者获得了对SSL负载均衡器/反向代理的控制,会发生什么。 (他们可以将他们想要的任何SOAP消息发送到您的后端服务器而不进行身份验证吗?!)

所以看起来他们俩都提供了一些价值,是的。

我要问的另一个问题是,如何保护密钥(即SSL客户端证书和SOAP签名证书)?如果攻击者获得对两个密钥的控制是微不足道的,那么这将减少这种方法的回报。

通过使用不同的密钥来签署SOAP消息而不是验证您的连接,您还可以更加灵活地了解PKI的使用方式。例如,您的网络管理团队可能希望为每个组织颁发一个SSL客户端证书,但应用程序团队可能希望该组织中的每个实体都有一个SOAP消息签名证书。