安全な JWT 署名のためにファイルから RSA キーをロードする
JWT に署名するには、多くの場合、認証と整合性検証のために RSA 秘密キーの使用が必要になります。これらのキーを活用するには、ファイルからキーを抽出するプロセスを理解することが重要です。
PEM エンコードされた RSA 秘密キー
RSA プライベートを保存するための最も一般的な形式キーは PEM エンコーディングであり、「-----BEGIN RSA PRIVATE KEY-----」および「-----END RSA PRIVATE KEY-----」ヘッダーで示されます。フッター。 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 秘密キーを保存するため。これは、キーと証明書を 1 つのファイルに保存するために、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 中国語 Web サイトの他の関連記事を参照してください。