Можно ли использовать.NET X509Store для получения сертификатов из удаленных хранилищ Linux?
Я пишу сервис для периодического обхода хранилищ сертификатов на удаленных серверах в производственном процессе с целью отслеживания используемых сертификатов, где и срока их действия в случае, если некоторые из них не были обновлены в соответствии с требованиями.
Обход серверов Windows работает как положено. Но я не уверен, что делать с магазинами Tomcat в (Ubuntu) Linux. Может ли объект X509Store ориентироваться на удаленные машины Linux? И как там отображаются концепции StoreName и StoreLocation? Как мне пройти аутентификацию? Я предполагаю, что он захочет, чтобы сессия SSH попыталась соединиться с магазинами. Да, я не знаю с чего начать.
using(var store = new X509Store($@"\\{serverName}\{storeName}", StoreLocation.LocalMachine))
{
store.Open(OpenFlags.ReadOnly);
foreach(var cert in store.Certificates)
{
var issuedTo = cert.GetNameInfo(X509NameType.SimpleName, false);
1 ответ
Нет. API X509Store в Linux пытается эмулировать поведение Windows для локального процесса, но у него нет удаленных возможностей.
В Windows реальная реализация X509Store - это API-интерфейсы CAPI CertStore*, которые имеют встроенную возможность взаимодействия между компьютерами (возможно, через WinRPC); но они принципиально часть ОС.
В Linux функциональность обеспечивается только библиотекой System.Security.Cryptography.X509Certificates, поэтому ничего не слушается удаленно.
В macOS, вероятно, ничего не слушают удаленно, но классы X509Store являются интерпретациями и проекциями API SecKeychain * и SecTrust * Security.framework, поэтому на более низком уровне может быть некоторый уровень удаленного взаимодействия.