RTCPeerConnection: generateCertificate() 静态方法
RTCPeerConnection 接口的 generateCertificate() 静态函数会创建一个 X.509 证书和相应的私钥,并返回一个 Promise,该 Promise 在生成新 RTCCertificate 对象后解析。
语法
RTCPeerConnection.generateCertificate(keygenAlgorithm)
参数
keygenAlgorithm-
一个 Web Crypto API 算法标识符字符串或对象。有关该对象的格式的详细信息,请参阅
SubtleCrypto.generateKey()。
注意: generateCertificate() 是一个静态方法,因此它始终在 RTCPeerConnection 接口本身上调用,而不是在其实例上调用。
返回值
一个 Promise,它解析为一个新的 RTCCertificate 对象,其中包含基于指定选项的新密钥。
异常
NotSupportedErrorDOMException-
如果
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 |
浏览器兼容性
加载中…