Проверьте протокол безопасности подключения в C # - PullRequest
0 голосов
/ 25 мая 2018

Мое приложение подключается к внешней службе для получения данных.Внешняя служба обновляет свой протокол безопасности, чтобы исключить TLS 1.0 и ниже.Я уже добавил следующее в Global.asax:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 |
                                       SecurityProtocolType.Tls11 |
                                       SecurityProtocolType.Tls;

Однако я хотел бы убедиться, что я подключаюсь к внешней службе по Tls 1.1 или выше.

Возможно ли этоувидеть протокол безопасности, используемый в соединении?Я подозреваю, что он хранится где-то в одном из свойств объектов запроса / ответа.

var request = (HttpWebRequest) WebRequest.Create(url);
request.Method = "GET";
request.ContentType = "application/json";
request.Headers["Device-Token"] = deviceId;
var response = request.GetResponse().GetResponseStream();

Кто-нибудь знает, где я могу найти эту информацию?Или есть лучший способ проверить используемый протокол безопасности?


РЕДАКТИРОВАТЬ

Чтобы придерживаться лучших практик (в соответствии с комментариями Jf Beaulac),код для настройки протокола соединения был изменен на:

ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12 | 
                                        SecurityProtocolType.Tls11;

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Я обнаружил, что PayPal также находится в процессе изменения своих настроек безопасности.

PayPal предоставляет конечную точку API (https://tlstest.paypal.com/) для тестирования протокола безопасности вашего приложения, чтобы убедиться, что он поддерживает TLS 1.2 иHTTP / 1.1.

Вот как я это проверял:

Приложение MVC

. / Global.asax.cs

...
protected void Application_Start()
{
    ...

    // Add Tls 1.1 and 1.2 to security protocol list (without removing defaults)
    ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls1.2 | SecurityProtocolType.Tls1.1
}
...


. / Controllers / TestConnection.cs

using System;
using System.IO;
using System.Net;
using System.Web.Http;

namespace MyMVCApplication.Controllers
{
    public class TestConnectionController : ApiController
    {
        public string Get()
        {
            var url = new Uri("https://tlstest.paypal.com/");
            var request = (HttpWebRequest) WebRequest.Create(url);
            request.Method = "GET";
            request.ContentType = "application/json";

            var response = request.GetResponse().GetResponseStream();
            if (response != null)
            {
                string output;
                using (var reader = new StreamReader(response))
                {
                    output = reader.ReadToEnd();
                }

                return output;
            }

            return null;
        }
    }
}



После запуска приложения вы можете подключиться к нему локально(Я сделал это с помощью PowerShell) и получил ответ от конечной точки PayPal.

PowerShell

$url = "http://localhost:60023/api/TestConnection"
Invoke-WebRequest -Uri $url -Headers @{Authorization = "Basic $credentials"} | ConvertFrom-Json

Если вы добавили ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12 в Application_Start () вGlobal.asax.cs, вы получите подтверждающее сообщение PalPal_Connection_OK

Если ваше соединение не поддерживает TLS 1.2 или HTTP / 1.1, вы получите ошибку 400.

Для получения дополнительной информации, пожалуйста, посетите https://www.paypal -notice.com / ru / TLS-1.2-and-HTTP1.1-Upgrade /

0 голосов
/ 25 мая 2018

Если вы просто хотите проверить, какой уровень фактически используется соединением, просто удалите нежелательные протоколы, когда вы установите значение SecurityManager.SecurityProtocol.Если соединение использует протоколы, которые вы исключили, возникнет исключение.

Обратите внимание, что следует избегать указания SecurityProtocol так, как вы это делаете в Global.asax, и это плохая практика.см. примечания в MSDN:

https://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.securityprotocol%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

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