我正在寻找一种简单的方法来加密我的 C# Web 服务中的肥皂通信。
我正在研究WSE 3.0,但微软似乎放弃了对它的支持,因此使用起来并不简单。
似乎 WCF 可能是一种选择,但我不想从 .NET 2.0 升级。
任何简单直接的加密方法?
我正在寻找一种简单的方法来加密我的 C# Web 服务中的肥皂通信。
我正在研究WSE 3.0,但微软似乎放弃了对它的支持,因此使用起来并不简单。
似乎 WCF 可能是一种选择,但我不想从 .NET 2.0 升级。
任何简单直接的加密方法?
我认为这会有所帮助;去年我们用它来压缩 web 服务,它表现得非常好,我相信它可以通过加密类来增强;
您为提供不使用 SSL/TLS 的“加密”所做的任何事情都可能容易受到攻击。现在您必须问自己,是否值得花费您可以花费在橡胶鸡安全措施功能上的开发时间?也许是的。
DPAPI 和 Win32 crypt32 API 等 .NET API 使使用静态密钥加密数据块变得容易。但是您的客户将如何收到密钥?任何已安装的 SOAP 客户端都必须将密钥烧入其配置中,或者通过不安全的 Internet 接收它。
这是 SSL/TLS 为您解决的问题;你用 TLS 证书做的舞蹈是解决通过不受信任的渠道传递公钥的问题。
也许我很天真,但是强制通过 https 进行通信可以接受吗?我开发了在 2.0 上运行的 Web 服务,并且通过让 IIS 对虚拟目录强制执行 https 取得了成功。
这可能是最简单的方法,但不幸的是我无法控制 IIS 配置,也不能保证它可以运行 https。
在这种情况下,也许最好的办法是逐个加密部分 SOAP 消息(毕竟,您可能不需要加密整个消息 - 只需要加密某些敏感字段?),或者您可以选择使用一个 HttpModule 来拦截所有消息并对内容进行操作。无论哪种情况,您都可能必须提供自定义代理。
也许我很天真,但是强制通过 https 进行通信可以接受吗?我开发了在 2.0 上运行的 Web 服务,并且通过让 IIS 对虚拟目录强制执行 https 取得了成功。
或者,您可以检查HttpRequest.IsSecureConnection 属性。
我们实际上在我们的 Web 服务中使用了 WSE 3.0,它最初是在 WCF 之前开发的。为了安全起见,我们使用基于 System.Security 中的 Cryptography 类的基于 SAML 令牌的系统。
它工作得很好。然而,这种方法绝不是“简单”的。
您可以使用 System.Security.Cryptography 扩展在 C# 中使用参数加密。
加密和解密参数会更难,但更安全。
如何:使用对称 (Rijndael) 密钥 (C#/VB.NET) 加密和解密数据
我将这种方法用于 OTP(一次性密码)Web 服务,它对我来说效果很好。