- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
这里有很多人在问同样的问题。但很少有答案或成功的报告。服务器是第三方,所以我不知道他们的配置,但他们确实报告了他们在日志中发现的内容如下:
他们在日志中看到的唯一内容就是这个错误。 “基于 IP,它来自他们的 DEV 环境,但没有有效负载,要将其放入调试,URL 格式不正确。”
节点:时间:20150105 10:21:45.798严重性:警告请求编号:00000149c32c8869-3801消息:消息处理成功
事件类型:消息摘要客户端IP:56.6.66.6服务:包罗万象的调试服务[/*]操作:空请求长度:0响应长度:0回复状态:0响应时间:0ms用户身份 :用户名:空
这是完整的故事,
我在调用 https 服务器上的 WebService 时从未遇到过问题。但是他们有ip安全以及证书安全(没有用户名和密码安全)
奇怪的是,当我通常使用 visual studio 时,它们会发送物理 .wsdl 文件,指向它们,一切就绪。不是这种情况。我必须在本地添加文件,并在本地指向它们 c:\project\Server References\file.wsdl 并且一切正常。
我在谷歌上搜索了大约 10 个示例(都有些变体)来了解如何完成此操作。当然,这可以通过配置更少(所有代码)或配置中定义的所有内容来完成。也可以在控制台应用程序或 Web 应用程序中完成。出于理智的目的,我更喜欢控制台,但我把两者都装进去了。
附言我们持有SSL证书和客户端的权限,并向他们发送没有私钥的SSL证书。
P.S.S 我用过 Wireshark 和 Fiddler。 Wireshark 显示 8443 端口上的 TCP 连接和纯文本的 url,但数据部分似乎太小而无法保存证书(但这只是 open 调用正常吗?)
http://tinypic.com/r/34ihld4/8 (wireshark 屏幕截图)
http://tinypic.com/r/14jrbx3/8 ( watch 中的 wsclient)
Fiddler显示“握手成功”
这是我正在使用的“无配置代码”
ws.AccountInfo ai = new ws.AccountInfo();
ws.BasicAccountInfo[] info = new ws.BasicAccountInfo[10];
ws.ProductAndService PaS = new ws.ProductAndService();
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Ssl3 //have tried them all | System.Net.SecurityProtocolType.Tls | System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls12;
WSHttpBinding myBinding = new WSHttpBinding();
myBinding.Security.Mode = SecurityMode.Transport;
myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
myBinding.ReaderQuotas.MaxArrayLength = int.MaxValue;
myBinding.MaxReceivedMessageSize = int.MaxValue;
myBinding.UseDefaultWebProxy = false;
EndpointAddress ea = new EndpointAddress("https://www.some-company.com:8443/DSMProgramsV4/PgnDSMProgramsService"); //odly no .svc ending
ws.PgnDSMProgramsServiceClient wsclient = new ws.PgnDSMProgramsServiceClient(myBinding,ea);
// Specify a certificate to use for authenticating the client.
wsclient.ClientCredentials.ClientCertificate.SetCertificate(StoreLocation.LocalMachine,StoreName.My, X509FindType.FindByIssuerName, "Network Solutions DV Server CA");//the cert i want is found under this name for example www.somesite.com is found and shows up in watch in wsclient below
string s = "";
try
{
wsclient.Open();//success always
info = wsclient.GetAccountList("9999", "TEST", "99999999");
wsclient.Close();
}
catch(Exception ex)
{
s = ex.Message;// hang and error happens on GetAccount List
}
Console.Write(s);
Console.Write(info[0].ToString());//if we were ever successful, never are though
我得到的错误是向 https://www.some-company.com:8443/DSMProgramsV4/PgnDSMProgramsService 发出 HTTP 请求时发生错误.这可能是由于在 HTTPS 情况下服务器证书未正确配置为 HTTP.SYS。这也可能是由于客户端和服务器之间的安全绑定(bind)不匹配引起的。底层连接已关闭:发送时发生意外错误。身份验证失败,因为远程方已关闭传输流
我永远无法理解这条消息
我也尝试过使用 ChannelFactory
ws.AccountInfo ai = new ws.AccountInfo();
ws.BasicAccountInfo[] info = new ws.BasicAccountInfo[10];
ws.ProductAndService PaS = new ws.ProductAndService();
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Ssl3;
string address = "https://www.some-company.com:8443/DSMProgramsV4/PgnDSMProgramsService";
WSHttpBinding binding = new WSHttpBinding();
binding.Security.Mode = SecurityMode.Transport;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
ChannelFactory<ws.PgnDSMProgramsService> factory = new ChannelFactory<ws.PgnDSMProgramsService>(binding, address);
factory.Credentials.ClientCertificate.SetCertificate(System.Security.Cryptography.X509Certificates.StoreLocation.LocalMachine, System.Security.Cryptography.X509Certificates.StoreName.My, System.Security.Cryptography.X509Certificates.X509FindType.FindByIssuerName, "Network Solutions DV Server CA");
ws.PgnDSMProgramsService client = factory.CreateChannel();
var infoz = client.GetAccountList("9999", "TEST", "999999");
也没有运气,同样的错误信息。
我已经尝试了各种 web.config 和 app.config,就像下面一样简单:
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="CustomerEndpointBehavior" >
<clientCredentials supportInteractive="True">
<clientCertificate storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName" findValue="www.our-cert.org" />
<!-- <serviceCertificate>
<authentication certificateValidationMode="None" revocationMode="NoCheck" />
<sslCertificateAuthentication certificateValidationMode="PeerOrChainTrust" trustedStoreLocation="LocalMachine"/>
</serviceCertificate>-->
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="CustomerBindingConfig">
<!-- closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Mtom" textEncoding="utf-8" useDefaultWebProxy="false" allowCookies="false" > -->
<!-- <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> -->
<security mode="Transport" >
<transport clientCredentialType="Certificate"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://www.some-company.com:8443/DSMProgramsV4/PgnDSMProgramsService"
binding="basicHttpBinding" bindingConfiguration="CustomerBindingConfig" behaviorConfiguration="CustomerEndpointBehavior"
contract="ws.PgnDSMProgramsService" name="serviceEndpoint" />
</client>
变得更复杂
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="CustomerEndpointBehavior">
<clientCredentials>
<clientCertificate storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName" findValue="www.our-cert.org" />
<serviceCertificate>
<authentication certificateValidationMode="PeerTrust" />
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<wsHttpBinding>
<binding name="CustomerBindingConfig" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false"
transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="Certificate" negotiateServiceCredential="true"
algorithmSuite="Default" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="https://www.some-company.com:8443/DSMProgramsV4/PgnDSMProgramsService" binding="wsHttpBinding" bindingConfiguration="CustomerBindingConfig" behaviorConfiguration="CustomerEndpointBehavior" contract="ws.PgnDSMProgramsService" name="serviceEndpoint" />
</client>
不像我一直在做尽职调查,见下文
http://www.codeproject.com/Articles/36705/7-simple-steps-to-enable-HTTPS-on-WCF-WsHttp-bindi
http://msdn.microsoft.com/en-us/library/ms789011.aspx
http://www.codeproject.com/Articles/18601/An-easy-way-to-use-certificates-for-WCF-security
http://blogs.ugidotnet.org/cfolini/archive/2008/01/04/90561.aspx
http://www.codeproject.com/Articles/348595/Use-Mutual-SSL-Authentication-in-WCF
最佳答案
如果您还没有,您应该启用 WCF 跟踪,这可能有助于确定 WCF 安全问题的根本原因。我们发现 WCF Trace 日志会揭示以前“隐藏”的问题。
http://msdn.microsoft.com/en-us/library/ms733025(v=vs.110).aspx
关于c# - WCF 客户端 4.5 C# 使用 CA 证书颁发机构 ssl 证书。需要帮助,已放弃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27907186/
我正在尝试在 Java 中执行此操作,但我认为这是一个一般证书问题。我有一个根CA,一个由根CA颁发的中间CA1,一个由中间CA1颁发的中间CA2,以及一个由中间CA2颁发的证书。 rootCA ->
编辑 1:https://security.stackexchange.com/questions/83972/trust-ca-and-parent-ca-but-not-other-derivat
我正在使用“任何?” block 中的方法。该片段正在字符串中查找字符串“CA”(拆分)检查: region="CA" check="AU,US,UK,CA,ZA" if check.split(',
我有一个SpringBoot应用程序,它使用以下配置与PostgreSQL通信,通过AWS Beanstrik部署:。在我将AWS Aurora证书更新为rds-ca-ecc384-g1之前,一切都很
我们正在使用我们现有的 CA 进行 freeipa 安装。在安装过程中,会生成 CSR,并且必须由 CA 签名才能创建证书。这个证书必须有 X509v3 Basic Constraints: CA:T
我正在尝试导出客户端证书以供网络浏览器使用。 目标是使用 指令限制对管理区域的访问。我看过很多关于使用自签名 CA 的教程。你会如何使用第三方来做到这一点? 1) 如果它是受信任的根 CA,我是否需要
我已经设法弄清楚 x509Certificate2Collection 中的证书是否是证书颁发机构证书,但我如何才能安全地确定它是根证书还是中间证书?以下是否足够安全? var collection
我使用 fabric-ca-sdk(fabric-sdk-java/fabric-sdk-java/src/test/fixture/sdkintegration) 中的测试代码启动 ca 服务器。并
环境: Red Hat Enterprise Linux Server release 7.7 (Maipo) # openssl version OpenSSL 1.0.2g 1 Mar 2016
导出 K8s 集群 CA 证书和 CA 私钥 团队,我有一个 Kubernetes 集群正在运行。我将一次又一次地删除和创建它,所以我想一直重复使用相同的 CA 证书,我需要保存 CA 证书和 key
我正在编写一个自定义客户端和服务器,我想通过公共(public) Internet 安全地进行通信,因此我想使用 OpenSSL 并让两端进行对等验证以确保我的客户端不会被 MITM 误导,同样,未经
问题: 我想构建一个 docker 容器 FROM:ubuntu:20.04但我无法访问外部互联网 我在内部网络上有一个 apt 镜像,可以使用 apt 镜像位于 https 后面,带有自定义证书 我
Linux 的新手,正在尝试了解更多,我遇到了这种情况。 我已经尝试使用 ps 命令并使用 grep 来捕获“ca”,但它会返回每次出现的“ca”,无论它来自什么,它实际上对我没有帮助。 我已经尝试过
我正在尝试在我的 .NET 应用程序和我安装了第三方根 CA 证书和中间 CA 证书的网站之间建立 TLS 连接: ServicePointManager.SecurityProtocol = Sec
SSL 证书永远不会让我眼花缭乱。我有一个网络应用程序,它从合作伙伴那里对另一项服务进行休息调用以获取某些数据。他们使用为公司生成的自签名或内部 CA。问题是每当另一端更新 SSL 证书时,我的应用程
我正在开发一个带有证书固定的移动应用程序。我将在 DMZ 中有一个盒子来代理我的请求。该服务器是否应该拥有来自可信 CA 的证书,还是我可以使用我自己的 CA 生成的证书? 从移动客户端使用受信任的
有没有人设法将 CA 证书安装到 activemq 实例中?我一直在进行谷歌搜索并阅读 activemq 文档,但我没有找到任何关于如何在 activemq 中使用预先存在的 CA 证书的信息。 我假
openssl ca 和 openssl x509 命令有什么区别?我正在使用它来创建和签署我的 root-ca、intermed-ca 和客户端证书,但是 openssl ca 命令不会在证书上注册
在 keystore 中创建私钥和自签名证书 keytool -genkey -alias mydomain -keystore mydomain.ks -dname cn=mydomain.com
我的 Raspberry Pi 3 出了点问题。我不得不运行 fsck.ext3,但是很多包都损坏了,例如 python 等。现在,ca-certificates 不会重新安装。每当它运行 updat
我是一名优秀的程序员,十分优秀!