Мне нужен хороший способ внедрения сертификата или открытого ключа в универсальном приложении Windows 10. Весь код находится в C#, и все соединения HTTPS, поэтому что-то для класса Windows.Web.Http.HttpClient
было бы замечательно. Есть ли простой класс/библиотека или, по крайней мере, пошаговое руководство, как реализовать этот материал, который можно сделать безопасно кем-либо, кто не знает тайных деталей сертификатов X.509 и т. Д.?Сертификат, прикрепленный к Windows 10 Универсальное приложение
Некоторые вещи, которые я нашел, говорят об использовании собственного кода или сторонних библиотек, таких как OpenSSL (очень сложно!). Самое лучшее, что я нашел, это this question о pinning в WP8.0, который включает в себя образец кода, который должен работать на WP8.1, и, надеюсь, также Win10, но это отвратительно и запутанно, и я не уверен, как требовать что сертификат сервера является одним из закрепленных при отправке запроса с конфиденциальной информацией. Проверка заранее не кажется безопасной из-за времени проверки/времени использования (TOCTOU) атак (если только функция HttpRequestMessage
. TransportInformation
не открывает соединение, а затем держит ее открытой, чтобы у человека не было шанса набрать человека - в-середине позиции на новом соединении). В идеале был бы способ фильтрации HttpClient, поэтому он будет подключаться только к серверам с прикрепленными сертификатами, но самое близкое, что я могу найти к этому, делает точно противоположное (игнорируйте некоторые ошибки сертификата, о которых говорилось около here) через свойство HttpBaseProtocolFilter.IgnorableServerCertificateErrors
, который, как представляется, не имеет возможности ограничить действительные сертификаты.
У кого-нибудь есть хорошее решение здесь? Если подход HttpRequestMessage.TransportInformation
(с пользовательским сертификатом проверки подлинности) является единственным вариантом, безопасно ли против атак TOCTOU проверять это свойство перед отправкой запроса?
Привет, У меня такие же проблемы, как и вы, вам повезло, как это сделать? – toroveneno