webRequest.getSecurityInfo()

Verwenden Sie diese Funktion, um detaillierte Informationen über die TLS-Verbindung zu erhalten, die mit einer bestimmten Anfrage verknüpft ist.

Sie übergeben dieser Funktion die requestId für die betreffende Anfrage sowie einige optionale zusätzliche Parameter. Sie gibt ein Promise zurück, das in ein SecurityInfo-Objekt aufgelöst wird.

Sie können diese Funktion nur innerhalb des webRequest.onHeadersReceived-Listeners aufrufen. Die requestId finden Sie im details-Objekt, das dem Listener übergeben wird.

Sie müssen außerdem die Option "blocking" an webRequest.onHeadersReceived.addListener() übergeben. Um diese API zu verwenden, benötigen Sie die "webRequestBlocking"-API-Berechtigung sowie die normalen Berechtigungen zur Verwendung von webRequest-Listenern (die "webRequest"-Berechtigung und die Host-Berechtigung für den Host).

Syntax

js
let gettingInfo = browser.webRequest.getSecurityInfo(
  requestId,       // string
  options          // optional object
)

Parameter

requestId

string. ID der Anfrage, für die Sie Sicherheitsinformationen wünschen. Diese erhalten Sie aus dem details-Objekt, das jedem webRequest-Ereignislistener übergeben wird.

options Optional

object. Ein Objekt, das eine dieser Eigenschaften enthalten kann:

certificateChain Optional

boolean. Wenn true, enthält das zurückgegebene SecurityInfo-Objekt die gesamte Zertifikatskette bis hin zur Vertrauenswurzel. Wenn false, enthält es nur das Serverzertifikat. Standardmäßig ist false.

rawDER Optional

boolean. Wenn true, enthält jedes CertificateInfo im SecurityInfo.certificates-Eigenschaft einen rawDER. Dieses enthält das DER-kodierte ASN.1, das die Zertifikatdaten umfasst.

Rückgabewert

Ein Promise, das in ein SecurityInfo-Objekt aufgelöst wird.

Browser-Kompatibilität

Beispiele

Dieses Beispiel hört auf alle HTTPS-Anfragen an "mozilla.org" oder dessen Subdomains und protokolliert den Namen des Subjektzertifikats:

js
async function logSubject(details) {
  try {
    let securityInfo = await browser.webRequest.getSecurityInfo(
      details.requestId,
      {},
    );
    console.log(details.url);
    if (securityInfo.state === "secure" || securityInfo.state === "weak") {
      console.log(securityInfo.certificates[0].subject);
    }
  } catch (error) {
    console.error(error);
  }
}

browser.webRequest.onHeadersReceived.addListener(
  logSubject,
  { urls: ["https://*.mozilla.org/*"] },
  ["blocking"],
);

Dieses Beispiel hört auf alle HTTPS-Anfragen an "mozilla.org" oder dessen Subdomains und protokolliert den Namen im zertifizierten Root-Zertifikat:

js
async function logRoot(details) {
  try {
    let securityInfo = await browser.webRequest.getSecurityInfo(
      details.requestId,
      { certificateChain: true },
    );
    console.log(details.url);
    if (securityInfo.state === "secure" || securityInfo.state === "weak") {
      console.log(
        securityInfo.certificates[securityInfo.certificates.length - 1].issuer,
      );
    }
  } catch (error) {
    console.error(error);
  }
}

browser.webRequest.onHeadersReceived.addListener(
  logRoot,
  { urls: ["https://*.mozilla.org/*"] },
  ["blocking"],
);

Beispielerweiterungen