2つの分散サービス間で認証方法を理解しようとしています。JWTトークンのプライベート/パブリックキー暗号化にX509証明書を使用する方法(作成する)
1人のホストが侵害されると、すべてのホストが侵害されるため、すべてのサービスホストに共有秘密を配布したくないです。
だから私のシナリオは次のとおりです。Aは、ホストBの公開鍵は
- ホストその秘密鍵を使ってjwtを受信し、それを解読します。
ホセ・JWTパッケージ: https://github.com/dvsekhvalnov/jose-jwt
は私には良いオプションのように思えます。 jwtの署名のほかに、私的/公開鍵を使った暗号化もサポートしています。次の符号化のための例とがあるページで
JWTをデコード:
エンコード:
var publicKey=new X509Certificate2("my-key.p12", "password").PublicKey.Key as RSACryptoServiceProvider;
string token = Jose.JWT.Encode(payload, publicKey, JweAlgorithm.RSA_OAEP, JweEncryption.A256GCM);
デコード:
var privateKey=new X509Certificate2("my-key.p12", "password", X509KeyStorageFlags.Exportable | X509KeyStorageFlags.MachineKeySet).PrivateKey as RSACryptoServiceProvider;
string json = Jose.JWT.Decode(token,privateKey);
今、ここに私が理解していないものです:
- どのように私は(JWTをエンコードするホスト/サービスA用)の公開鍵の情報が含まれていた.p12証明書ファイルを作成することができますか?
- ..公開鍵と秘密鍵情報(jwtをデコードするホスト/サービスB)の両方を含む.p12証明書ファイルを作成するにはどうすればよいですか?
私が行ったすべての研究から、私は、両方を含む.p12ファイルか、公開鍵だけを含む.p12ファイルのどちらかを作成できるという印象を受けます。しかし、2つの.p12ファイルを作成する方法はありません。一方は情報と公開鍵の両方を持ちます。私は何が欠けていますか?
ご回答ありがとうございます。