RTCPeerConnection: generateCertificate() 静态方法

generateCertificate()RTCPeerConnection 接口的静态函数,用于创建 X.509 证书和相应的私钥,并返回一个 Promise,该 Promise 在证书生成后解析为新的 RTCCertificate 对象。

语法

js
RTCPeerConnection.generateCertificate(keygenAlgorithm)

参数

keygenAlgorithm

一个 Web Crypto API AlgorithmIdentifier 字符串或一个 Algorithm 子类对象,用于指定在创建证书密钥时使用的算法。

注意:generateCertificate() 是一个静态方法,因此它始终在 RTCPeerConnection 接口本身调用,而不是在其实例上调用。

返回值

一个解析为新的 RTCCertificate 对象的 Promise,该对象包含基于指定选项的新密钥。

异常

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

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅