4.10证书管理

RTCPeerConnection实例用于与对等方进行身份验证的证书使用RTCCertificate接口。这些对象可以由使用generateCertificate方法的应用程序显式生成,并且可以在构造新的RTCPeerConnection实例时在RTCConfiguration中提供。

此处提供的显式证书管理功能是可选的。如果应用程序在构造RTCPeerConnection时未提供证书配置选项,则必须由用户代理生成一组新证书。该集必须包括一个ECDSA证书,在P-256曲线上有一个私钥,一个签名带有SHA-256哈希。

  1. partial interface RTCPeerConnection {
  2. static Promise<RTCCertificate> generateCertificate(AlgorithmIdentifier keygenAlgorithm);
  3. };

方法

generateCertificate, static

generateCertificate函数使用户代理创建并存储X.509证书X509V3和相应的私钥。以RTCCertificate接口的形式提供信息句柄。返回的RTCCertificate可用于控制由RTCPeerConnection建立的DTLS会话中提供的证书。

keygenAlgorithm参数用于控制如何生成与证书关联的私钥。 keygenAlgorithm参数使用WebCrypto WebCryptoAPI AlgorithmIdentifier类型。 keygenAlgorithm值必须是window.crypto.subtle.generateKey的有效参数;也就是说,当根据WebCrypto算法规范化过程[WebCryptoAPI]进行规范化时,该值必须产生非错误结果,其中操作名称为generateKey,并且[[supportedAlgorithms]]值特定于RTCPeerConnection的证书生成。如果算法规范化过程产生错误,则必须拒绝对generateCertificate的调用。

生成的密钥生成的签名用于验证DTLS连接。所识别的算法(由标准化AlgorithmIdentifier的名称标识)必须是可用于产生签名的非对称算法。

此过程生成的证书还包含签名。此签名的有效性仅与兼容性原因相关。 RTCPeerConnection仅使用公钥和生成的证书指纹,但如果证书格式正确,则更有可能接受证书。浏览器选择用于签署证书的算法;如果需要哈希算法,浏览器应该选择SHA-256 FIPS-180-4

生成的证书不得包含可链接到用户或用户代理的信息。应该使用可分辨名称和序列号的随机值。

如果keygenAlgorithm参数标识用户代理不能或不会用于为RTCPeerConnection生成证书的算法,则用户代理必须拒绝使用类型为NotSupportedError的DOMException调用generateCertificate()。

用户代理必须支持以下值:{name:“RSASSA-PKCS1-v1_5”,modulusLength:2048,publicExponent:new Uint8Array([1,0,1]),hash:“SHA-256”},以及{name:“ECDSA”,namedCurve:“P-256”}。

NOTE

预计用户代理将具有它将接受的小的或甚至固定的值集。