Я пытаюсь подписать сообщение одним, а транспорт другим, но оба используют один и тот же сертификат клиента.
public HttpResponseMessage BloquearTarjeta()
{
var binding = new CustomBinding("ServiciosAdministativosCodensaSOAP");
binding.Elements.Add(new HttpsTransportBindingElement() { RequireClientCertificate = true,AuthenticationScheme=AuthenticationSchemes.Basic,TransferMode=TransferMode. });
EndpointIdentity identity = EndpointIdentity.CreateDnsIdentity(utilidades.GetParametrosApp("WS_SSL_Subject"));
EndpointAddress address = new EndpointAddress(Utilidades.endPointAddress("ServicioBloquear"), identity);
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072 | (SecurityProtocolType)768 | SecurityProtocolType.Tls;
ServicePointManager.Expect100Continue = false;
ServiceBloqueoTarjetas.ServiciosAdministativosCodensaClient client =
new ServiceBloqueoTarjetas.ServiciosAdministativosCodensaClient(binding, address);
/// THIS IS FOR SIGN -> BUT IT USES AS SSL TRANSPORT CERT TOO
client.ClientCredentials.ClientCertificate.Certificate = ConsumirSoap.GetCertificateBySubject(utilidades.GetParametrosApp("WS_PrivateKey_P12"));
/// AND THIS IS FOR SSL TRANSPORT BUT IS IGNORED
client.ClientCredentials.ServiceCertificate.DefaultCertificate = ConsumirSoap.GetCertificateBySubject(utilidades.GetParametrosApp("WS_SSL_Subject"));
client.ClientCredentials.ServiceCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.PeerTrust;
}
Я использую этот код для подписи сообщения, он работает, но используется сертификат клиента. и транспорт тоже:
public AsymetricSecurityBE()
{
MessageSecurityVersion securityVersion =
MessageSecurityVersion.WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10;
SecurityBindingElement securityBE =
SecurityBindingElement.CreateCertificateSignatureBindingElement(); //.CreateMutualCertificateBindingElement(securityVersion,false);
securityBE.IncludeTimestamp = false;
securityBE.MessageSecurityVersion = MessageSecurityVersion.WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10;
securityBE.SetKeyDerivation(true);
//xmldsigexcc14ntransform cn14transform = new XmlDsigExcC14NTransform(true, "soapenv");
securityBE.SecurityHeaderLayout = SecurityHeaderLayout.Strict;
securityBE.EnableUnsecuredResponse = true;
securityBE.DefaultAlgorithmSuite = SecurityAlgorithmSuite.Basic256Sha256Rsa15;
m_asymSecBE = securityBE as AsymmetricSecurityBindingElement;
}
Пожалуйста, мне нужна помощь, я потратил много времени.