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!