alles - Ich habe eine Dotnet-Core-API-Set geschrieben, die perfekt auf Windows funktioniert. Unter Ubuntu 14.04 funktioniert alles außer einer SOAP-Anfrage an einen Anbieter, der ein Client-Zertifikat für die Authentifizierung verwendet.Client-Zertifikate in Dotnet Core unter Ubuntu
Die Anfrage läuft immer ab. Ein Netstat-Trace zeigt, dass nur 1 Byte Daten an den Remote-Dienst auf 443 gesendet wurde. Keine Kommunikation wird für 100 Sekunden ausgeführt, und dann löst die App eine Zeitüberschreitungsausnahme aus.
Ich habe versucht mit openssl PEM-und CRT-Dateien zu exportieren und referenziert diese zusätzlich zu der Art, wie der Code jetzt konfiguriert ist (pfx w/Passwort). Ich habe auch die Zertifikatsteile des PFX in die Zertifikate geladen.
Hier ist der Code:
var binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.Transport;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
var baseAddress = new Uri(mySettings.ClientUrl);
factory = new ChannelFactory<SingleSignOnSoap>(binding, new EndpointAddress(baseAddress));
if (RuntimeEnvironment.OperatingSystemPlatform == Platform.Windows)
{
//windows file location
factory.Credentials.ClientCertificate.Certificate = new X509Certificate2(mySettings.PrivateKeyWindowsPath, mySettings.PfxPass);
}
else
{
//linux file location
factory.Credentials.ClientCertificate.Certificate = new X509Certificate2(mySettings.ClientPrivateKeyUnixPath, mySettings.PfxPass);
}
serviceProxy = factory.CreateChannel();
RequestTicketRequest request = new RequestTicketRequest();
RequestTicketRequestBody requestBody = new RequestTicketRequestBody(xmlRequest);
request.Body = requestBody;
RequestTicketResponse response = serviceProxy.RequestTicket(request);
return response.Body.RequestTicketResult;
Ich habe es nicht in den Code aufgenommen, aber die URL verwendet https: // – mwdavisii
Auch versucht, mit BasicHttpsBinding ohne Erfolg – mwdavisii