>백엔드 개발 >Golang >보안 JWT 서명을 위해 파일에서 RSA 키를 로드하는 방법은 무엇입니까?

보안 JWT 서명을 위해 파일에서 RSA 키를 로드하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-08 18:47:02797검색

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

보안 JWT 서명을 위해 파일에서 RSA 키 로드

JWT에 서명하려면 인증 및 무결성 확인을 위해 RSA 개인 키를 사용해야 하는 경우가 많습니다. 이러한 키를 활용하려면 파일에서 키를 추출하는 프로세스를 이해하는 것이 중요합니다.

PEM 인코딩 RSA 개인 키

RSA 개인 저장을 위한 가장 일반적인 형식 키는 "-----BEGIN RSA PRIVATE KEY-----" 및 "-----END RSA PRIVATE KEY-----" 머리글과 바닥글로 표시되는 PEM 인코딩입니다. PEM 인코딩 키를 로드하려면 다음 단계를 사용할 수 있습니다.

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 인코딩 RSA 개인 키

PKCS#8은 또 다른 인기 있는 형식입니다. RSA 개인 키를 저장하기 위한 것입니다. 키와 인증서를 단일 파일에 저장하기 위해 PKCS#12 형식과 함께 사용되는 경우가 많습니다. PKCS#8로 인코딩된 키를 로드하려면 다음 단계를 따르세요.

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

사용 예

RSA 개인 키를 구조에 로드한 후에는 이를 사용하여 JWT에 서명하고 서명을 확인할 수 있습니다. 예를 들면 다음과 같습니다.

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

이러한 기술을 활용하면 JWT 인증 및 권한 부여 목적으로 파일에 저장된 RSA 개인 키를 효과적으로 활용할 수 있습니다.

위 내용은 보안 JWT 서명을 위해 파일에서 RSA 키를 로드하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.