Как вы проверяете цепочки сертификатов для конкретного центра сертификации? - PullRequest
0 голосов
/ 29 февраля 2012

В настоящее время у меня есть приложение, которое должно проверить, доверяет ли сертификат определенному ЦС.Проблема, с которой я столкнулся, заключается в том, что сертификат проблем может фактически принадлежать корневому ЦС, который перекрестно сертифицирован с ЦС, в отношении которого я хотел бы проверить ... поэтому я хочу убедиться, что правильно построил цепочку к перекрестному сертифицированному корневому ЦС.,Ниже приведен пример того, как может выглядеть цепочка доверия.

1) Root CA1 -> Inter CA1 -> John Doe Signed Cert
2) Bridge CA Root -> X-Cert Root CA1 -> Inter CA1 -> John Doe Signed Cert

Обе приведенные выше цепочки сертификатов действительны, но я хочу убедиться, что у меня построена цепочка № 2.

X509Certificate2 johnDoeCert = GetJohnDoeCert();
var chain = new X509Chain();
chain.Build(johnDoeCert);
chain.ChainElements[chain.ChainElements.Count - 1];     // I want to ensure this is Bridge CA Root

Любая помощь приветствуется.

Спасибо!

1 Ответ

0 голосов
/ 06 июля 2012

То, что вам нужно сделать, это сравнить информацию с чем-то, что вы знаете о целевом сертификате, в данном случае Bridge CA Root

Вы можете проверить имя эмитента на сертификате следующим образом:

string bridgeCAIssuerName = "CN=Bridge Root CA, OU=PKI..."; //Fill in with correct information
if(ch.ChainElements[ch.ChainElements.Count - 1].Certificate.IssueName.Name == bridgeCAIssuerName)
{
  //This happens if it was true
}

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

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