Извлечение деталей SSL-сертификатов с использованием JavaScript / OpenSSL - PullRequest
0 голосов
/ 06 ноября 2011

Я создаю надстройку Firefox, которая должна извлекать сведения о полученных сертификатах SSL, например, имя CA , страны CA (центра сертификации). Я хочу знать, возможно ли извлечь вышеуказанные данные с помощью JavaScript или мне нужно использовать OpenSSL и тем самым связать их обоих?

Есть ли лучшие решения?

1 Ответ

1 голос
/ 24 ноября 2011

В диалоговом окне «Информация о странице» в Firefox уже отображается информация о сертификате, поэтому неплохо бы взглянуть на , как это реализовано . Подведем итог:

  • Элемент <browser> или <tabbrowser> (gBrowser в окне Firefox) имеет свойство securityUI .
  • Значение этого свойства реализует nsISSLStatusProvider интерфейс, который позволяет вам получить nsISSLStatus .
  • Оттуда вы можете получить nsIX509Cert , который имеет всю необходимую информацию.

Пример кода:

var status = gBrowser.securityUI
                     .QueryInterface(Components.interfaces.nsISSLStatusProvider)
                     .SSLStatus;
if (status && !status.isUntrusted)
{
  // This shows: OU=Equifax Secure Certificate Authority,O=Equifax,C=US
  alert(status.serverCert.issuerName);

  // This shows: Equifax Secure Certificate Authority
  alert(status.serverCert.issuerOrganizationUnit);
}

Обратите внимание, что интерфейс не позволяет извлекать страну эмитента, вам придется проанализировать status.serverCert.issuerName value самостоятельно. Кроме того, таким способом вы получаете информацию только о непосредственном эмитенте, а не о корневом СА. Чтобы добраться до корневого ЦС, вам нужно использовать свойство status.serverCert.issuer и пройтись по цепочке.

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