我一直在尝试实现一种安全的方式来验证通过安全证书调用基于 .Net SOAP 的 Web 服务的 Web 服务器。
我在接收服务器上设置了一个证书颁发机构,允许我颁发我们在接收服务器和调用服务器上安装的证书。我还将此证书颁发机构添加为调用服务器的证书根存储中的受信任颁发机构。
我现在遇到的问题是,当我将 IIS 设置为“要求”证书时,我只能发送一个小数据集,一次 25 行,每行大约 25 个字段,每个字段可能有 100 个字符长。我发送的数据已经用对称密钥加密。当我取消对客户端证书的要求时,我可以发送的数据量变为大约 25000 行。当使用“必需”的客户端证书执行此操作时,我得到
HTTP 413:请求实体太大
我最好的猜测是,该要求以双向方式开启非对称加密,从而使数据量呈指数增长。我试过修改web.config,特别是
<httpRuntime targetFramework="4.5" maxRequestLength="20000000" executionTimeout="3600" />
但这似乎没有效果,即使在数据集中发送 50 行也是如此。
我也想补充
maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferSize="100000"
但我不确定它的去向。
我使用发送客户端证书
Dim S as new webmethodname.webmethod
Dim x509 As X509Certificate = X509Certificate.CreateFromCertFile("filelocation")
s.ClientCertificates.Add(x509)
我能想到的两个解决方案是
- 进一步提高数据限制或找到阻止我的字段限制
- 一次发送较小的批次。
- 为此目的放弃使用客户端证书并寻求其他解决方案。
任何有关执行此操作的正确方法的建议,或有关使用 SSL 和 PKI 从服务器到服务器的幕后究竟发生了什么的信息,我们将不胜感激。