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
Susan Sarandonoriginal
2024-11-08 18:47:02836parcourir

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

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

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

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!

Déclaration:
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