RTCPeerConnection: generateCertificate() 靜態方法

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流瀏覽器均已支援。

RTCPeerConnection 介面的 generateCertificate() 靜態函式會建立一個 X.509 證書和相應的私鑰,並返回一個 Promise,該 Promise 在生成新 RTCCertificate 物件後解析。

語法

js
RTCPeerConnection.generateCertificate(keygenAlgorithm)

引數

keygenAlgorithm

一個 Web Crypto API 演算法識別符號字串或物件。有關該物件的格式的詳細資訊,請參閱 SubtleCrypto.generateKey()

注意: generateCertificate() 是一個靜態方法,因此它始終在 RTCPeerConnection 介面本身上呼叫,而不是在其例項上呼叫。

返回值

一個 Promise,它解析為一個新的 RTCCertificate 物件,其中包含基於指定選項的新金鑰。

異常

NotSupportedError DOMException

如果 keygenAlgorithm 的規範化形式指定了瀏覽器不支援或不允許用於 RTCPeerConnection 的演算法或演算法設定,則會丟擲此錯誤。

可能會發生其他錯誤;例如,如果指定的 keygenAlgorithm 無法成功轉換為 RTCCertificateExpiration 字典,則在轉換過程中發生的錯誤將被丟擲。

描述

如果指定了字串,則它必須是一個相容 Web Crypto API 的演算法名稱字串。或者,您可以透過提供基於 Web Crypto API 的 Algorithm 類的子類之一的物件來提供演算法配置的特定詳細資訊。

標準配置

所有瀏覽器都必須支援以下兩種配置。瀏覽器可能具有與此不同的預設設定,但這些始終受支援。

RSASSA-PKCS1-v1_5

js
let stdRSACertificate = {
  name: "RSASSA-PKCS1-v1_5",
  modulusLength: 2048,
  publicExponent: new Uint8Array([1, 0, 1]),
  hash: "SHA-256",
};

ECDSA

js
let stdECDSACertificate = {
  name: "ECDSA",
  namedCurve: "P-256",
};

證書過期時間

預設情況下,新證書的 expires 設定為 2592000000 毫秒(即 30 天)。過期時間不能超過 31536000000 毫秒(即 365 天)。另外值得注意的是,瀏覽器可能會自行進一步限制證書的過期時間。

示例

指定演算法詳細資訊

此示例請求一個使用 SHA-256 雜湊和 2048 位模數的 RSASSA-PKCS1-v1_5 證書。

js
RTCPeerConnection.generateCertificate({
  name: "RSASSA-PKCS1-v1_5",
  hash: "SHA-256",
  modulusLength: 2048,
  publicExponent: new Uint8Array([1, 0, 1]),
}).then((cert) => {
  const pc = new RTCPeerConnection({ certificates: [cert] });
});

按名稱指定演算法

下面的示例透過指定一個字串來請求一個 ECDSA 證書。

js
RTCPeerConnection.generateCertificate("ECDSA");

規範

規範
WebRTC:瀏覽器中的即時通訊
# dom-rtcpeerconnection-generatecertificate

瀏覽器相容性

另見