RTCPeerConnection: generateCertificate() 静态方法
generateCertificate()
是 RTCPeerConnection
接口的静态函数,用于创建 X.509 证书和相应的私钥,并返回一个 Promise,该 Promise 在证书生成后解析为新的 RTCCertificate
对象。
语法
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
let stdRSACertificate = {
name: "RSASSA-PKCS1-v1_5",
modulusLength: 2048,
publicExponent: new Uint8Array([1, 0, 1]),
hash: "SHA-256",
};
ECDSA
let stdECDSACertificate = {
name: "ECDSA",
namedCurve: "P-256",
};
证书过期时间
默认情况下,新证书的 expires
属性设置为 2592000000 毫秒(30 天)。过期时间不能超过 31536000000 毫秒(365 天)。还需要注意的是,浏览器可以根据需要进一步限制证书的过期时间。
示例
指定算法详细信息
此示例请求使用 SHA-256 哈希和 2048 模长的新 RSASSA-PKCS1-v1_5 证书。
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 证书。
RTCPeerConnection.generateCertificate("ECDSA");
规范
规范 |
---|
WebRTC: 浏览器中的实时通信 # dom-rtcpeerconnection-generatecertificate |
浏览器兼容性
BCD 表格仅在浏览器中加载