私はAWS Lambdaからキーペアを生成するときに奇妙なことに気付きました。コードを実行するたびに、同じキーが生成されます。私はラムダコンテナが呼び出されるたびに凍結されていることを認識しています。これはおそらく、基礎となるJCEクラスがメモリからロードされ、初期状態を維持する理由です。問題のコードは比較的簡単です:Lambdaは初期化後も同じ暗号鍵を生成するのはなぜですか?どのように修正するのですか?
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA", "BC");
keyPairGen.initialize(2048);
KeyPair keyPair = keyPairGen.generateKeyPair();
RSAPublicKey rsaPublicKey = (RSAPublicKey) keyPair.getPublic();
RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) keyPair.getPrivate();
return new RSAKey.Builder(rsaPublicKey).privateKey(rsaPrivateKey)
.keyID(kid).keyUse(KeyUse.SIGNATURE)
私はバニラプロバイダと弾む城の両方を試してみましたが、結果は同じである - ラムダは「暖かい」のときと同じキーのペア。コンテナが終了し、「コールド」状態から再起動されると、新しいキーセットが取得されます。
私もAWS Cognitoを使用しています。サービスはAPI GatewayとCloudFrontの両方で提供されています。
基本となるJCEクラスを "リフレッシュ"する方法はありますか?
は 'keyPairGen.initialize(2048年、新しいのSecureRandom()い) '助け? – Bohemian
残念ながら、それはしません。私はそれが私の認証セッションに関連していることに気付きました。そして、Cognitoからログアウトしてログインし直した後、生成された鍵ペアは異なります。何かがどこかにキャッシュされ、APIゲートウェイでキャッシングが確実にオフになっています。 – albogdano
これは間違いなくCloudFrontです! – albogdano