Voorbeeldscript voor het genereren van BYOK-geheimen voor zoeken en voor database-encryptie
We hebben een script geleverd om u te helpen uw BYOK-materiaal te uploaden voor Zoeken en voor Database-encryptie. Hiermee wordt een uploadbare DEK voor Zoeken of een uploadbaar belanghebbendengeheim voor Database-encryptie gemaakt. Het script genereert een willekeurig getal als uw geheim en gebruikt de openbare sleutel van het certificaat om het geheim te versleutelen.
Vereiste editions
| Beschikbaar in zowel Salesforce Classic (niet in alle organisaties beschikbaar) als Lightning Experience. |
| Beschikbaar in: Enterprise, Performance en Unlimited Edition met de Salesforce Shield of Shield Platform Encryption licenties. |
| Gratis beschikbaar in Developer Edition. |
U moet een BYOK-compatibel certificaat maken en een sessietoken genereren voordat u dit script kunt gebruiken. Voor Database Encryption en zoekindex Encryption hebt u alleen een certificaat met eigen ondertekening nodig.
Het script maakt één bestand met de naam payload.bin dat klaar is om te uploaden voor gebruik als BYOK voor zoekindex of database-encryptie. Het wordt verpakt en gecodeerd volgens de vereisten voor BYOK sleutelmateriaal van dit type. Het maakt een DEK voor zoekindex encryptie en een belanghebbendengeheim voor database-encryptie.
- Maak een bestand met daarin het script en sla het op in dezelfde directory als het certificaat- en sessietokenbestand dat u eerder hebt gedownload.
-
Zorg ervoor dat het script uitvoerbaar is met
chmod 775.Standaard worden de tijdelijke bestanden niet verwijderd. Maak de opmerking over de laatste regel van het script ongedaan om deze automatisch te laten verwijderen. -
Voer het script uit met de certificaatnaam en het sessietokenbestand. Als u bijvoorbeeld uw script de naam
2025_search_secretgen.shhebt gegeven en uw certificaatbestand de naam2025_search.crtheeft, voert u het volgende uit: ./2025_search_secretgen.sh 2025_search.crt. -
Het script genereert één bestand met de naam payload.bin.
Upload payload.bin en het sessietokenbestand voor uw certificaat met eigen ondertekening dat u eerder hebt gemaakt.
Inhoud van 2025_search_secretgen.sh. U kunt dit script uitvoeren op Linux- of MacO-systemen.
Dit script genereert een veilige sleutel voor Salesforce Shield Platform-encryptie met behulp van een proces met de naam Bring Your Own Key (BYOK). Het begint met het extraheren van een openbare sleutel uit een Salesforce-certificaat. Vervolgens maakt het twee willekeurige AES-sleutels: een tijdelijke sleutel en een "klant"-sleutel. De tijdelijke sleutel wordt versleuteld met behulp van de openbare sleutel en een sterk encryptieschema (RSA-OAEP met SHA-512). Deze versleutelde tijdelijke sleutel wordt vervolgens gebruikt om de klantsleutel te verpakken met behulp van een ander encryptieschema (AES Key Wrap with Padding). Ten slotte combineert het script de versleutelde tijdelijke sleutel en de ingepakte klantsleutel tot één payload en codeert deze in base64-indeling. Deze payload kan vervolgens worden geüpload naar Salesforce om gevoelige gegevens veilig te versleutelen.
#!/bin/bash
set -euo pipefail
CERT_IN="$1"
OPENSSL="openssl"
# Extract public key from X.509 certificate
$OPENSSL x509 -in "$CERT_IN" -pubkey -noout > byok_public_key.pem
# Generate a random temporary AES key (256 bits)
$OPENSSL rand -out temp_aes_key.bin 32
# Encrypt the temp AES key using RSA-OAEP with SHA-512
$OPENSSL pkeyutl -encrypt \
-pubin \
-inkey byok_public_key.pem \
-in temp_aes_key.bin \
-out temp_key_wrapped.bin \
-pkeyopt rsa_padding_mode:oaep \
-pkeyopt rsa_oaep_md:sha512 \
-pkeyopt rsa_mgf1_md:sha512
# Generate the actual target AES key to be wrapped
$OPENSSL rand -out target_aes_key.bin 32
# Convert temp AES key to hex format for the -K parameter
KEY_HEX=$(hexdump -v -e '/1 "%02x"' < temp_aes_key.bin)
# AES Key Wrap with Padding using OpenSSL 3.x
$OPENSSL enc -id-aes256-wrap-pad \
-iv A65959A6 \
-K "$KEY_HEX" \
-in target_aes_key.bin \
-out target_key_wrapped.bin
# Combine both parts into final payload
cat temp_key_wrapped.bin target_key_wrapped.bin > payload.bin
# Cleanup
rm "$CERT_IN" byok_public_key.pem temp_aes_key.bin target_aes_key.bin temp_key_wrapped.bin target_key_wrapped.bin

