Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Januar 2020 browserübergreifend verfügbar.
* Einige Teile dieser Funktion werden möglicherweise unterschiedlich gut unterstützt.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die importKey() Methode der SubtleCrypto Schnittstelle importiert einen Schlüssel: das heißt, sie nimmt als Eingabe einen Schlüssel in einem externen, portablen Format und gibt Ihnen ein CryptoKey Objekt, das Sie in der Web Crypto API verwenden können.
Die Funktion akzeptiert mehrere Importformate: siehe Unterstützte Formate für Details.
Ein String, der das Datenformat des zu importierenden Schlüssels beschreibt. Er kann eines der folgenden sein:
Ein ArrayBuffer, ein TypedArray, ein DataView oder ein JSONWebKey Objekt, das den Schlüssel im gegebenen Format enthält.
algorithmEin Objekt, das den zu importierenden Schlüsseltyp definiert und zusätzliche algorithmenspezifische Parameter bereitstellt.
Ein boolescher Wert, der anzeigt, ob es möglich sein wird, den Schlüssel mit SubtleCrypto.exportKey() oder SubtleCrypto.wrapKey() zu exportieren.
keyUsagesEin Array, das angibt, was mit dem Schlüssel gemacht werden kann. Mögliche Array-Werte sind:
Ein Promise, der mit dem importierten Schlüssel als CryptoKey Objekt erfüllt wird.
Das Promise wird abgelehnt, wenn eine der folgenden Ausnahmen auftritt:
SyntaxError DOMExceptionWird ausgelöst, wenn keyUsages leer ist, aber der nicht verpackte Schlüssel vom Typ secret oder private ist.
TypeErrorWird ausgelöst, wenn versucht wird, ein ungültiges Format zu verwenden oder wenn die keyData für dieses Format nicht geeignet sind.
Diese API unterstützt vier verschiedene Schlüsselimport/-exportformate: Raw, PKCS #8, SubjectPublicKeyInfo und JSON Web Key.
Sie können dieses Format verwenden, um AES- oder HMAC-Geheimschlüssel oder elliptische Kurven-Public-Schlüssel (ECDSA oder ECDH) zu importieren oder zu exportieren.
In diesem Format wird der Schlüssel als ein ArrayBuffer bereitgestellt, der die rohen Bytes des Schlüssels enthält.
Beachten Sie, dass beim Import von elliptischen Kurven-Public-Schlüsseln die Daten komprimierte elliptische Kurvenpunkte enthalten können.
Sie können dieses Format verwenden, um RSA- oder elliptische Kurven-Private-Schlüssel zu importieren oder zu exportieren.
Das PKCS #8 Format ist in RFC 5208 definiert, unter Verwendung der ASN.1 Notation:
PrivateKeyInfo ::= SEQUENCE { version Version, privateKeyAlgorithm PrivateKeyAlgorithmIdentifier, privateKey PrivateKey, attributes [0] IMPLICIT Attributes OPTIONAL }Die importKey() Methode erwartet, dieses Objekt als ein ArrayBuffer zu erhalten, das die DER-kodierte Form des PrivateKeyInfo enthält. DER ist ein Satz von Regeln zur Kodierung von ASN.1-Strukturen in eine binäre Form.
Sie werden dieses Objekt höchstwahrscheinlich im PEM-Format antreffen. Das PEM-Format ist eine Methode zur Kodierung binärer Daten in ASCII. Es besteht aus einem Header und einem Footer und enthält dazwischen die base64-kodierten Binärdaten. Ein PEM-kodiertes PrivateKeyInfo sieht so aus:
-----BEGIN PRIVATE KEY----- MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDAU9BD0jxDfF5OV380z 9VIEUN2W5kJDZ3hbuaDenCxLiAMsoquKTfFaou71eLdN0TShZANiAARMUhCee/cp xmjGc1roj0D0k6VlUqtA+JVCWigXcIAukOeTHCngZDKCrD4PkXDBvbciJdZKvO+l ml2FIkoovZh/8yeTKmjUMb804g6OmjUc9vVojCRV0YdaSmYkkJMJbLg= -----END PRIVATE KEY-----Um dies in ein Format zu bringen, das Sie importKey() übergeben können, müssen Sie zwei Dinge tun:
Siehe den Abschnitt Beispiele für konkretere Anleitungen.
Sie können dieses Format verwenden, um RSA- oder elliptische Kurven-Public-Schlüssel zu importieren oder zu exportieren.
SubjectPublicKey ist definiert in RFC 5280, Abschnitt 4.1 unter Verwendung der ASN.1 Notation:
SubjectPublicKeyInfo ::= SEQUENCE { algorithm AlgorithmIdentifier, subjectPublicKey BIT STRING }Wie PKCS #8 erwartet die importKey() Methode, dieses Objekt als ein ArrayBuffer zu erhalten, das die DER-kodierte Form des SubjectPublicKeyInfo enthält.
Auch hier werden Sie dieses Objekt höchstwahrscheinlich im PEM-Format antreffen. Ein PEM-kodiertes SubjectPublicKeyInfo sieht so aus:
-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3j+HgSHUnc7F6XzvEbD0 r3M5JNy+/kabiJVu8IU1ERAl3Osi38VgiMzjDBDOrFxVzNNzl+SXAHwXIV5BHiXL CQ6qhwYsDgH6OqgKIwiALra/wNH4UHxj1Or/iyAkjHRR/kGhUtjyVCjzvaQaDpJW 2G+syd1ui0B6kJov2CRUWiPwpff8hBfVWv8q9Yc2yD5hCnykVL0iAiyn+SDAk/rv 8dC5eIlzCI4efUCbyG4c9O88Qz7bS14DxSfaPTy8P/TWoihVVjLaDF743LgM/JLq CDPUBUA3HLsZUhKm3BbSkd7Q9Ngkjv3+yByo4/fL+fkYRa8j9Ypa2N0Iw53LFb3B gQIDAQAB -----END PUBLIC KEY-----Wie bei PKCS #8 müssen Sie, um dies in ein Format zu bringen, das Sie importKey() übergeben können, zwei Dinge tun:
Siehe den Abschnitt Beispiele für konkretere Anleitungen.
Sie können das JSON Web Key Format verwenden, um RSA- oder elliptische Kurven-Public- oder Private-Schlüssel sowie AES- und HMAC-Geheimschlüssel zu importieren oder zu exportieren.
Das JSON Web Key Format ist in RFC 7517 definiert. Es beschreibt eine Methode, um öffentliche, private und geheime Schlüssel als JSON-Objekte darzustellen.
Ein JSON Web Key sieht in etwa so aus (dies ist ein EC-Privatschlüssel):
Hinweis: Sie können die funktionierenden Beispiele ausprobieren auf GitHub.
Dieses Beispiel importiert einen AES-Schlüssel aus einem ArrayBuffer, der die zu verwendenden Roh-Bytes enthält. Sehen Sie den vollständigen Code auf GitHub.
Dieses Beispiel importiert einen RSA-Private-Signing-Schlüssel aus einem PEM-kodierten PKCS #8 Objekt. Sehen Sie den vollständigen Code auf GitHub.
Dieses Beispiel importiert einen RSA-Public-Encryption-Schlüssel aus einem PEM-kodierten SubjectPublicKeyInfo Objekt. Sehen Sie den vollständigen Code auf GitHub.
Dieser Code importiert einen ECDSA-Privatsignaturschlüssel auf der Grundlage eines JSON Web Key Objekts, das ihn darstellt. Sehen Sie den vollständigen Code auf GitHub.
| Web Cryptography Level 2 # SubtleCrypto-method-importKey |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.