Нашему клиенту нужно, чтобы мы внедрили модуль шифрования Shield для Salesforce с функцией ключа «Принеси свой собственный».
Наш клиент также предоставил пример секретного арендатора, который будет интегрирован в Shield.Этот арендатор представляет собой цепочку из 32 или 64 символов (только буквы и цифры).
Salesforce предоставляет скрипт для генерации наших собственных файлов, если мы не хотим использовать собственные файлы.Вот сценарий:
#!/bin/sh
PLAINTEXT_SECRET_HASH_B64="plaintext_secret_hash.b64"
ENCRYPTED_SECRET_B64="encrypted_secret.b64"
PLAINTEXT_SECRET="plaintext_secret.bin"
PUBLIC_KEY_PEM="public_key.pem"
usage ()
{
echo 'Generates a random 256-bit value, hashes it, and encrypts it using a given certificate.'
echo ''
echo 'Usage : secretgen <downloaded.crt>'
exit
}
if [ -z "$1" ]
then
usage
fi
# generate a random value to use as the secret.
head -c 32 /dev/urandom | tr '\n' = > $PLAINTEXT_SECRET
# hash the plaintext secret and encode it with base64. Salesforce will use this for integrity checking.
openssl dgst -sha256 -binary $PLAINTEXT_SECRET | openssl base64 -out $PLAINTEXT_SECRET_HASH_B64
# extract the public key from the downloaded .crt file
openssl x509 -pubkey -noout -in $1 > $PUBLIC_KEY_PEM
# encrypt the secret using the public key and encode it with base64.
openssl rsautl -oaep -encrypt -pubin -inkey $PUBLIC_KEY_PEM -in $PLAINTEXT_SECRET | openssl base64 -out $ENCRYPTED_SECRET_B64
echo 'Generated files: '$ENCRYPTED_SECRET_B64' and '$PLAINTEXT_SECRET_HASH_B64'.'
echo 'Both of these should be uploaded to Salesforce.'
Дело в том, что я хотел бы напрямую использовать 32-символьную цепочку, предоставленную нашим клиентом, вместо цепочки, сгенерированной на этом шаге:
# generate a random value to use as the secret.
head -c 32 /dev/urandom | tr '\n' = > $PLAINTEXT_SECRET
Поэтому я попытался напрямую заменить сгенерированную цепочку на предоставленную, но она просто не работает и выдает сообщение об ошибке, когда все файлы загружены в Salesforce.Я не понимаю, почему 32-символьная цепочка, предоставленная клиентом, не будет работать, пока работает случайно сгенерированная 32-символьная цепочка.
Разве случайно сгенерированная цепочка не настолько случайна?(это похоже на сочетание букв, цифр и специальных символов, в то время как цепочка клиентов содержит только цифры и буквы).
Есть идеи?
Большое спасибо