问题标签 [transport-security]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1991 浏览

c# - 对于 Internet 上的 WCF 服务,传输安全性是一种不好的做法吗?

我有一个可通过 Internet 访问的 WCF 服务。它具有 wsHttpBinding 绑定和消息安全模式,使用用户名凭据来验证客户端。msdn 说我们应该在 Internet 场景中使用消息安全,因为它提供端到端的安全性,而不是像传输安全性那样提供点对点的安全性。

如果我通过 Internet 对 wcf 服务使用传输安全性会怎样?这是一个不好的做法吗?恶意用户会看到我的数据吗?

0 投票
1 回答
196 浏览

wcf - 具有 SSL 和线程信息的 WCF 传输安全性

我对上述主题有疑问。我有一个 WCF 服务并为其使用传输安全模型。但是有一些我无法理解的与线程状态相关的机制。在我的服务的构造函数中,我尝试设置 Thread.CurrentPrincipal 但在我的服务的调用方法开始时 Thread.CurrentPrincipal 变为空......我读到它可能是在使用 WCF 传输安全的情况下。

是 WCF 传输安全中的原因还是此行为有任何其他原因?

提前致谢!抱歉,如果有一些解释中的混淆。

0 投票
3 回答
8699 浏览

wcf - 具有证书身份验证的传输安全性

当我访问我的网络服务 localhost/MyService/MyService.svc 时出现以下错误

服务“SslRequireCert”的 SSL 设置与 IIS“Ssl,SslNegotiateCert”的设置不匹配。

我遵循http://msdn.microsoft.com/en-us/library/ms731074.aspx中指定的 web.config 示例

这是我的 wcf 服务器 web.config:

我已将 IIS 配置如下:

  • 使用自签名证书添加的 https 绑定
  • 在 SSL 设置下,选中需要 SSL 并接受客户端证书
  • 自签名证书已添加到本地计算机受信任的根 CA。

我可以浏览并执行 .asmx 服务定义,但 .svc 给了我上述错误。

0 投票
4 回答
8782 浏览

wcf - 通过 HTTPS 上的客户端证书对 WCF 请求进行身份验证

在过去的一周里,我一直在为这个糟糕的 WCF 服务的配置而苦苦挣扎,而且我开始怀疑我正在尝试做的事情是不可能的,尽管有文档。

很简单,我希望 WCF 服务需要一个客户端证书(服务器将在其证书存储中拥有该证书),然后使用 System.ServiceModel.ServiceSecurityContext 访问该身份。此外,这需要使用传输安全性。

这是我的服务器配置:

这是我的客户端配置:

当 security mode='None' over http 时,代码都可以完美运行,但是当然,没有身份验证,System.ServiceModel.ServiceSecurityContext 中也没有任何内容。我已经对所有这些元素尝试了几十种变体,最终都不可避免地导致请求抛出异常“现有连接被远程主机强行关闭”。

我正在使用自签名证书“​​Cyber​​dyneIndustries”,我已将其 CA 证书添加到受信任的 CA 存储中。证书在我查看时签出。我经历了 http 命名空间管理的地狱,也解决了这些问题。看起来 WCF 并不真正支持这一点……请告诉我我错了。

TIA。

0 投票
1 回答
443 浏览

java - 传输安全性和基于 SSL 的消息身份验证之间有什么区别?

Transport SecurityMetro WSIT和有什么区别Message Authentication over SSL

运输安全

传输安全机制在传输过程中使用 SSL 进行身份验证和保密来保护您的应用程序。

通过 SSL 进行消息身份验证

基于 SSL 的消息身份验证机制将加密安全身份或身份验证令牌附加到消息中,并使用 SSL 进行机密性保护。

0 投票
1 回答
10344 浏览

asp.net - 经典 asp“验证消息的安全性时出错。” iis7 传输级安全性

在 II7 上,我们托管了一个基于 WCF/asp.net 的 API。为了允许经典 ASP 应用程序的用户连接到 API,我们必须发布一个我们称为“传输”的版本。这个 Transport 版本也是用 asp.net 写的,它指向同一个程序集,只是安全层不同,可以让经典的 asp 进行身份验证。使用传输级安全性,而不是基于消息的安全性。

当使用浏览器加载服务引用时,我可以加载 svcutil.exe ... WDSL 页面。

当使用我的测试 asp 页面从该引用调用 web 方法时,我得到以下返回:

已完成调用 Web 服务。状态 = 内部服务器错误 ResponseText = a:InvalidSecurity 验证消息的安全性时发生错误。

这表明身份验证失败。当使用 asp.net 或应用程序 WCF 风暴来联系正常的 API 进行测试时,一切正常。

API 最近被迁移,看起来有些东西没有正确设置,但我不知道是什么。

我可以浏览到 svcutil.exe ... WDSL 服务参考,当通过浏览器选择它时,我得到了预期的 XML 响应。

使用基于消息的安全性的 API 的非经典 asp publicaiton 时,使用的用户名和密码有效。

是否可以发布一些可能有助于诊断问题的故障排除技巧,请特别针对传输级安全故障查找和设置?

谢谢斯科特

编辑添加以下更新:

尝试使用默认应用程序池和新的应用程序池,但同样的问题仍然存在。

我的测试页错误:ResponseText = a:InvalidSecurityAn 验证消息的安全性时发生错误。

IIS LOG 显示: v3/transport/testclassicasptransportwcfservice.asp ( 200 0 0 ) (即 iis 200) /V3/Transport/DeviceService.svc/DeviceService (500 0 0) (即 iis 错误 500)

注意:在 TRANSPORT 和 V3 上定义的虚拟目录。V3 使用 .net 可以正常工作,而不是使用经典的 asp 进行身份验证。

事件日志:由于以下错误,应用程序池“传输”的模板持久缓存初始化失败:无法为应用程序池创建磁盘缓存子目录。数据可能有额外的错误代码。

此参考似乎建议修复,但“appcmd”中的许多 DIR 路径和参考不存在。

_http://theether.net/kb/100127

0 投票
1 回答
389 浏览

silverlight-4.0 - N 层应用程序中的 WCF 和 Silverlight 4.0:安全服务调用(无 SSL、无消息安全、无 x.509)

我们的架构是一个简单的 N 层模型,它由一个位于 IIS7 中的 ASP.Net 应用程序(托管在 DiscountASP 中)组成,它公开了 WCF 服务上的方法。这些方法使用 EF4 与数据库通信。客户端使用 Silverlight 4.0。

三个重点:

  • 身份验证和授权不是问题 - 对服务的调用是匿名的,我们不关心调用者的身份。

  • 在方法调用中传输的数据不敏感

  • 我们只是想确保任何人都无法拨打电话。

如果有错误请纠正我:
消息安全不是一个选项,因为 Silverlight 不支持它。
传输安全(HTTPS 和 x.509/SSL 证书)也无法在 Silverlight 中完成

因此,我们为实施某种程度的安全性而采取的步骤是:

  • 密钥被硬编码到 XAP 中的一个 dll 中。

  • 这个 dll 是加扰的,所以它不能被重新设计。

  • 密钥作为参数发送给所有服务方法调用。

  • 在每个方法开始时,将密钥与数据库中的原始密钥进行核对。

  • 从服务中删除 MetaDataExchange 终结点。

考虑到这个最小的设置和许多缺陷,最大的缺陷可能是传输不安全(HTTP),并且密钥被暴露。所以问题是:

如果恶意用户想要破坏我们的系统,他需要付出多少努力才能提取密钥,找到暴露的方法并开始调用它们?

是否有其他 WCFcombiantion 可以在每次调用时提供基本的凭据保护(无 HTTPS 或证书)?

0 投票
2 回答
7791 浏览

wcf - WCF 4 - TransportWithMessageCredential 使用 X.509 证书进行传输和消息安全

我正在尝试制作一个托管在 IIS 上的 WCF4 服务,它将使用 X.509 证书进行消息安全和 SSL,并使用所需的相互身份验证来实现传输安全(项目规范要求使用 WS-SecuritySSL,AFAIK 通常只有一个是路要走,但没关系)。

我制作了我的 TestRootCA 并用它来颁发服务器证书 (localhost) 和客户端证书 (TestUser)。我最初只想建立和测试传输安全性,所以我将 IIS 配置为使用 https,配置 SSL 证书(我制作的本地主机证书),并将 IIS 配置为需要来自客户端的客户端证书。然后我修改了服务 web.config,制作了相应的 svcutil.conf 并运行了 svcutil,它成功地为我的测试 WinForms 应用程序制作了客户端代理类和 app.config。我通过调用创建代理客户端时设置证书:

到现在为止还挺好。但是,当我修改服务的 web.config 以使用 TrasportWithMessageCredential(而不是 Transport)并将“Certificate”指定为消息安全的 clientCredentialType 时,我得到了HTTP 403 - The HTTP request was forbidden with client authentication scheme 'Anonymous',即使我指定了“Certificate”。

我最终的 web.config 如下所示:

和我的客户端 app.conf:

有任何想法吗?

编辑:

我已经设法通过将客户端证书的 IIS SSL 设置从require更改为accept来使其工作。似乎当我使用证书而不是使用 SSL 的传输安全性引入消息安全性时,客户端使用证书进行消息签名,而不是通过 SSL 进行相互身份验证(即使分配了证书,它也会尝试以匿名身份登录)。

不知道为什么会这样,我想听听专家的评论:)。

0 投票
1 回答
1525 浏览

.net - WCF - 具有基本身份验证、无 ssl、自托管的 Soap Web 服务

我完全意识到这种方法的不安全性,但对 WCF 托管的 SOAP Web 服务的基本 http 身份验证有合理的需求。真的没有办法做到这一点吗?我发现的每种添加基本身份验证的方法都需要传输 (https) 安全性。

0 投票
2 回答
15583 浏览

ssl - 一种方式 SSL 是一种方式加密?

如果使用一种方式 SSL(服务器证书身份验证),则从客户端发送的数据将使用服务器证书的公钥加密。因此,隐私保护可用于从客户端发送的数据。我的问题是

  1. 这是否意味着以一种方式从服务器发送到客户端的 SSL 数据未加密并以纯文本形式发送?

  2. 对于服务器到客户端和客户端到服务器的通信,数据/消息都没有签名,因此不能保证防篡改或数据完整性。在使用基于 SSL 的传输安全而不是消息安全选项时,是否有任何其他方法可以实现数据完整性?