AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
如何使用 AWS KMS 非對稱金鑰加密使用 OpenSSL 的檔案?
我想要使用 Key Management Service (AWS KMS) 金鑰來加密使用 OpenSSL 的檔案。該如何進行?
簡短描述
您無法使用 RSA 金鑰加密大型資料。例如,若要使用 RSAES_OAEP_SHA_256 來加密一組大小為 2048 位元的 RSA 金鑰對,您可以加密的最大容量是 190 位元。使用進階加密標準 (AES) 金鑰,您便可以使用加密區塊鏈結 (CBC) 分割資料。
解析度
請按照以下說明使用 CBC 加密和解密金鑰。
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,請確保您使用的是最新的 AWS CLI 版本。
建立 RSA 金鑰對、下載公開金鑰,並建立一個 AES 256 位元的金鑰
1. 使用 AWS 管理主控台,並按照建立 RSA 金鑰對的說明進行操作。
2. 使用類似下列內容的 AWS CLI 命令 get-public-key 來下載公開金鑰:
$ aws kms get-public-key --key-id arn:aws:kms:eu-west-1:123456789012:key/d74f5077-811b-4447-af65-71f5f64f37d3 --output text --query 'PublicKey' > RSAPublic.b64 && base64 -d RSAPublic.b64 > RSAPublic.bin
注意: --query 功能只會取得公開金鑰,然後將 base64 檔案解碼為 DER 金鑰。 3. 使用 OpenSSL rand 命令建立 AES 256 位元金鑰來產生隨機資料,然後輸出至類似以下的 key.bin 檔案:
$ openssl rand -base64 32 > key.bin
加密您的資料
1. 使用類似以下在 CBC 中加密的 OpenSSL enc 命令,加密使用 key.bin 檔案的資料:
$ openssl enc -aes-256-cbc -salt -pbkdf2 -in FILE_TO_ENCRYPT -out FILE_TO_ENCRYPT.enc -pass file:./key.bin
注意:
- -pbkdf2 命令僅適用於 OpenSSL 1.1.1。Amazon Linux 2 AMI 已安裝了不支援 -pbkdf2 命令的 OpenSSL 1.0.2。
- CBC 讓您能夠加密任何大小的檔案。
- 以您要加密的檔案名稱取代值 FILE_TO_ENCRYPT。
2. 使用 AWS KMS 公開金鑰加密您的 AES 256 位元金鑰 key.bin。這會驗證您的資料金鑰是否安全。只有具備 AWS KMS 私密金鑰存取權的使用者才能存取 key.bin 金鑰。
執行類似以下的 OpenSSL pkeyutl 命令:
$ openssl pkeyutl -in key.bin -out enc.key.bin -inkey RSAPublic.bin -keyform DER -pubin -encrypt -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256
注意: pkeyutl 命令使用的加密演算法支援 AWS KMS API (RSAES_OAEP_SHA_256) 進行解密。AWS KMS 公開金鑰 RSAPublic.bin 會加密 AES 256 金鑰,並建立一個名為 enc.key.bin 的新檔案。
3. 加密 key.bin 檔案,使用者便無法存取該檔案,除非使用者能使用類似以下的 AWS CLI 命令 rm 來解密 enc.key.bin 檔案:
$ rm key.bin && rm FILE_TO_ENCRYPT
**注意:**您也可以選擇刪除原本要加密的檔案,讓使用者無法存取該檔案。
您現在擁有以下內容:
- FILE_TO_ENCRYPT.enc 檔案中的加密資料。
- 已加密的 AES 256 位元 enc.key.bin 金鑰。
- AWS KMS 公開金鑰 RSAPublic.bin。
**注意:**擁有加密資料的使用者必須向您傳送這些檔案以進行解密。
解密傳送給您的檔案
若要擷取加密資料,請解密 AES 256 位元金鑰,然後使用該金鑰解密 FILE_TO_ENCRYPT.enc 資料檔案。
**注意:**您必須能夠存取 AWS KMS API,因為無法以純文字檢視 AWS KMS 私有金鑰。
1. 解密 AES 256 位元金鑰,並提交 enc.key.bin 檔案至使用類似以下 AWS CLI 命令 解密 的 AWS KMS API:
$ aws kms decrypt --key-id arn:aws:kms:eu-west-1:123456789012:key/d74f5077-811b-4447-af65-71f5f64f37d3 --ciphertext-blob fileb://enc.key.bin --encryption-algorithm RSAES_OAEP_SHA_256 --output text --query 'Plaintext' | base64 --decode > decryptedKey.bin
注意: --query 功能會選擇純文字,然後將 base64 值解碼為 decryptedKey.bin 檔案。 2. 使用 decryptedKey.bin 檔案執行 OpenSSL enc 命令,以輸出至類似如下的 DECRYPTED_FILE:
$ openssl enc -d -aes-256-cbc -pbkdf2 -in FILE_TO_ENCRYPT.enc -out DECRYPTED_FILE -pass file:./decryptedKey.bin
**注意:**以您要解密的檔案名稱取代值 DECRYPTED_FILE。
您可以比較 DECRYPTED_FILE 和 FILE_TO_ENCRYPT,以確保已順利完成加密和解密。
相關資訊
- 語言
- 中文 (繁體)

相關內容
- 已提問 2 年前
- 已提問 1 年前
- 已提問 3 年前
AWS 官方已更新 1 年前