Heim  >  Artikel  >  Backend-Entwicklung  >  Wie lade ich RSA-Schlüssel aus Dateien für sichere JWT-Signierung?

Wie lade ich RSA-Schlüssel aus Dateien für sichere JWT-Signierung?

Susan Sarandon
Susan SarandonOriginal
2024-11-08 18:47:02758Durchsuche

How to Load RSA Keys from Files for Secure JWT Signing?

Laden von RSA-Schlüsseln aus Dateien für die sichere JWT-Signierung

Das Signieren von JWTs erfordert häufig die Verwendung privater RSA-Schlüssel zur Authentifizierung und Integritätsüberprüfung. Um diese Schlüssel nutzen zu können, ist es wichtig, den Prozess des Extrahierens aus Dateien zu verstehen.

PEM-kodierte private RSA-Schlüssel

Das gebräuchlichste Format zum Speichern privater RSA-Schlüssel Bei den Schlüsseln handelt es sich um PEM-Codierung, gekennzeichnet durch die Kopf- und Fußzeilen „-----BEGIN RSA PRIVATE KEY-----“ und „-----END RSA PRIVATE KEY-----“. Um einen PEM-codierten Schlüssel zu laden, können Sie die folgenden Schritte ausführen:

import (
    "crypto/x509"
    "encoding/pem"
)

func LoadPEMKey(file string) (*x509.PrivateKey, error) {
    pemBytes, err := os.ReadFile(file)
    if err != nil {
        return nil, err
    }

    block, _ := pem.Decode(pemBytes)
    return x509.ParsePKCS1PrivateKey(block.Bytes)
}

PKCS#8-codierte RSA-Privatschlüssel

PKCS#8 ist ein weiteres beliebtes Format zum Speichern privater RSA-Schlüssel. Es wird häufig in Verbindung mit dem PKCS#12-Format zum Speichern von Schlüsseln und Zertifikaten in einer einzigen Datei verwendet. Um einen PKCS#8-codierten Schlüssel zu laden, befolgen Sie diese Schritte:

import (
    "crypto/rsa"
    "crypto/x509"
    "encoding/pem"
)

func LoadPKCS8Key(file string) (*rsa.PrivateKey, error) {
    pemBytes, err := os.ReadFile(file)
    if err != nil {
        return nil, err
    }

    block, _ := pem.Decode(pemBytes)
    return x509.ParsePKCS8PrivateKey(block.Bytes)
}

Beispielverwendung

Sobald Sie den privaten RSA-Schlüssel in eine Struktur geladen haben, können Sie kann damit JWTs signieren und Signaturen überprüfen. Zum Beispiel:

import (
    "crypto/rsa"
    "crypto/x509"
    "encoding/json"

    "github.com/golang-jwt/jwt/v4"
)

func SignJWT(keyFile string, claims map[string]interface{}) (string, error) {
    key, err := LoadPEMKey(keyFile)
    if err != nil {
        return "", err
    }

    token := jwt.NewWithClaims(jwt.SigningMethodRS512, jwt.MapClaims(claims))
    return token.SignedString(key)
}

Durch den Einsatz dieser Techniken können Sie in Dateien gespeicherte private RSA-Schlüssel effektiv für JWT-Authentifizierungs- und Autorisierungszwecke nutzen.

Das obige ist der detaillierte Inhalt vonWie lade ich RSA-Schlüssel aus Dateien für sichere JWT-Signierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn