Связывание WCF SSL .pfx - PullRequest
       6

Связывание WCF SSL .pfx

0 голосов
/ 03 февраля 2020

Мой API-вызов вызывает еще один безопасный внутренний API-интерфейс, указанный ниже:

string ID = Convert.ToString(ConfigurationManager.AppSettings["ID"]);
string Password = Convert.ToString(ConfigurationManager.AppSettings["Password"]);
string client_ID = Convert.ToString(ConfigurationManager.AppSettings["client_ID"]);
string client_secret = Convert.ToString(ConfigurationManager.AppSettings["client_secret"]);
string patchURI = Convert.ToString(ConfigurationManager.AppSettings["SecureApi"]);
patchURI = patchURI + "?client_ID=" + client_ID + "&client_secret=" + client_secret;

string JsonStringParams = jsonStringRequest();

//ServicePointManager.Expect100Continue = true;
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

byte[] data = Encoding.UTF8.GetBytes(JsonStringParams);
var request = (HttpWebRequest)WebRequest.Create(patchURI);
request.KeepAlive = false;
request.Method = "POST";
request.ContentType = "application/json";


request.ContentType = "application/x-www-form-urlencoded";
request.Headers.Add("UserName", LDAPID);
request.Headers.Add("Password", Password);
string requestData = JsonStringParams;
data = Encoding.UTF8.GetBytes(requestData);
Stream dataStream = request.GetRequestStream();
dataStream.Write(data, 0, data.Length);
dataStream.Close();
var response = request.GetResponse(); // failed at this stage Error : The request was aborted: Could not create SSL/TLS secure channel.",
string result = new StreamReader(response.GetResponseStream()).ReadToEnd();
result = new StreamReader(response.GetResponseStream()).ReadToEnd();

мой patchURI содержит ссылку https, для которой требуется .pfx SSL, а на клиенте уже установлен тот же .cer / crt. Когда я использую patchURI и передать SSL в SOAPUI Tool. Я получаю ответ от клиентского сервера, но когда я использую этот код, он не работает, генерирует ошибку: - Не удалось создать канал SSL.

1 Ответ

0 голосов
/ 04 февраля 2020

Ошибка обычно указывает на то, что доверительные отношения еще не установлены. Чтобы установить sh связь между клиентской и серверной сторонами, мы должны установить сертификат друг друга в TRUSTED ROOT CERTIFICATION AUTHORITIES хранилище.
Не рекомендуется вызывать службу WCF с использованием * 1003. * клиентская библиотека, за исключением того, что служба WCF создана WebHttpbinding (Restful WCF служба). Мы обычно вызываем веб-сервис WCF soap, используя клиентский прокси. Приведенный ниже код может быть использован для проверки сертификата вручную при отправке запроса Http.

ServicePointManager.ServerCertificateValidationCallback += delegate
{
    return true;
};

Кроме того, пожалуйста, опубликуйте полное сообщение об ошибке, если ошибка все еще существует.
Не стесняйтесь, дайте мне знать, если есть что-то, с чем я могу помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...