Maison > développement back-end > Golang > Comment charger des clés RSA à partir de fichiers pour une signature JWT sécurisée ?

Comment charger des clés RSA à partir de fichiers pour une signature JWT sécurisée ?

Susan Sarandon
Libérer: 2024-11-08 18:47:02
original
798 Les gens l'ont consulté

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

Chargement de clés RSA à partir de fichiers pour une signature JWT sécurisée

La signature de JWT nécessite souvent l'utilisation de clés privées RSA pour l'authentification et la vérification de l'intégrité. Pour exploiter ces clés, il est crucial de comprendre le processus d'extraction de celles-ci à partir de fichiers.

Clés privées RSA codées PEM

Le format le plus courant pour stocker les clés privées RSA. Les clés sont un codage PEM, indiqué par les en-têtes et pieds de page "-----BEGIN RSA PRIVATE KEY-----" et "-----END RSA PRIVATE KEY-----". Pour charger une clé codée en PEM, vous pouvez suivre les étapes suivantes :

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)
}
Copier après la connexion

Clés privées RSA codées PKCS#8

PKCS#8 est un autre format populaire. pour stocker les clés privées RSA. Il est souvent utilisé conjointement avec le format PKCS#12 pour stocker les clés et les certificats dans un seul fichier. Pour charger une clé codée PKCS#8, suivez ces étapes :

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)
}
Copier après la connexion

Exemple d'utilisation

Une fois que vous avez chargé la clé privée RSA dans une structure, vous peut l'utiliser pour signer des JWT et vérifier les signatures. Par exemple :

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)
}
Copier après la connexion

En utilisant ces techniques, vous pouvez exploiter efficacement les clés privées RSA stockées dans des fichiers à des fins d'authentification et d'autorisation JWT.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal