簡體   English   中英

在 AWS Elastic Beanstalk 中存儲外部 API 密鑰

[英]Storing external API key in AWS Elastic Beanstalk

我在 AWS 上存儲外部 API(我從中獲取一些關於我的 Spring 引導應用程序的數據)私鑰的問題。 它作為彈性豆莖環境屬性存儲在那里。 我在本地測試了下面的代碼,它可以工作,但是當我使用測試環境(AWS)時,屬性被正確加載,但是我收到一個錯誤:

Illegal base64 character a at a

私鑰只是:

-----BEGIN PRIVATE KEY-----
(...)
-----END PRIVATE KEY-----

每當我從文件或作為 spring 屬性加載它時,它工作得很好。 但是當它在 AWS 上作為 env 變量加載時,我得到了提到的錯誤。

@Component
@Slf4j
public class SfKeyLoaderImpl implements SfKeyLoader {

  @Value("${access-token-params.private-key}")
  private String privateKeyString;

  @Override
  public PrivateKey loadKey() {

    PrivateKey privateKey = null;

    try {
      String formattedKey = privateKeyString
          .replaceAll("\r\n", "")
          .replace("-----BEGIN PRIVATE KEY-----", "")
          .replace("-----END PRIVATE KEY-----", "")
          .replaceAll(" ", "");
      KeyFactory factory = KeyFactory.getInstance("RSA");
      PKCS8EncodedKeySpec privSpec = new PKCS8EncodedKeySpec(Base64.getDecoder().decode(formattedKey));
      privateKey = factory.generatePrivate(privSpec);

    } catch (Exception ex) {
      log.error("Error while loading key for salesforce jwt generation", ex);
    }

    return privateKey;
  }
}

引發錯誤的代碼部分:

  PKCS8EncodedKeySpec privSpec = new PKCS8EncodedKeySpec(Base64.getDecoder().decode(formattedKey));

兩天后我們發現.replaceAll("\r\n", "") 在 Windows 上就足夠了,我們遇到了問題,因為在 Linux 上也應該添加.replaceAll("\n", "")存儲在 AWS 上的私鑰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM