RTCPeerConnection: phương thức tĩnh generateCertificate()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.

Hàm tĩnh generateCertificate() của giao diện RTCPeerConnection tạo một chứng chỉ X.509 và khóa riêng tương ứng, rồi trả về một promise được giải quyết với RTCCertificate mới sau khi quá trình tạo hoàn tất.

Cú pháp

js
RTCPeerConnection.generateCertificate(keygenAlgorithm)

Tham số

keygenAlgorithm

Một chuỗi định danh thuật toán của Web Crypto API hoặc một đối tượng. Xem SubtleCrypto.generateKey() để biết chi tiết định dạng của đối tượng.

Note: generateCertificate() là phương thức tĩnh, vì vậy nó luôn được gọi trên chính giao diện RTCPeerConnection, không phải trên một thể hiện.

Giá trị trả về

Một promise được giải quyết thành một đối tượng RTCCertificate mới chứa khóa mới dựa trên các tùy chọn được chỉ định.

Ngoại lệ

NotSupportedError DOMException

Ném ra nếu dạng chuẩn hóa của keygenAlgorithm chỉ định một thuật toán hoặc cấu hình thuật toán mà trình duyệt không hỗ trợ, hoặc trình duyệt không cho phép dùng với RTCPeerConnection.

Các lỗi khác cũng có thể xảy ra; ví dụ, nếu keygenAlgorithm được chỉ định không thể chuyển thành công thành từ điển RTCCertificateExpiration, lỗi xảy ra trong quá trình chuyển đổi đó sẽ được ném ra.

Mô tả

Nếu chỉ định một chuỗi, nó phải là chuỗi tên thuật toán tương thích với Web Crypto API. Ngoài ra, bạn có thể cung cấp chi tiết cụ thể cho cấu hình thuật toán bằng cách truyền một đối tượng dựa trên một trong các lớp con của lớp Algorithm của Web Crypto API.

Cấu hình chuẩn

Tất cả trình duyệt đều phải hỗ trợ hai cấu hình sau. Hoàn toàn có thể thiết lập mặc định của trình duyệt khác đi, nhưng hai cấu hình này luôn được hỗ trợ.

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",
};

Thời hạn hết hạn của chứng chỉ

Theo mặc định, chứng chỉ mới được cấu hình với expires bằng 2.592.000.000 mili giây, tức 30 ngày. Thời hạn hết hạn không thể vượt quá 31.536.000.000 mili giây, tức 365 ngày. Cũng cần lưu ý rằng trình duyệt có thể tiếp tục giới hạn thời hạn hết hạn của chứng chỉ nếu chúng muốn.

Ví dụ

Chỉ định chi tiết thuật toán

Ví dụ này yêu cầu một chứng chỉ RSASSA-PKCS1-v1_5 mới với hash SHA-256 và độ dài modulus 2048.

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] });
});

Chỉ định thuật toán bằng tên

Ví dụ dưới đây chỉ định một chuỗi yêu cầu chứng chỉ ECDSA.

js
RTCPeerConnection.generateCertificate("ECDSA");

Thông số kỹ thuật

Specification
WebRTC: Real-Time Communication in Browsers
# dom-rtcpeerconnection-generatecertificate

Tương thích trình duyệt

Xem thêm