Bash-script – объединить два файла в определенной строкеLinux

Ответить
Гость
 Bash-script – объединить два файла в определенной строке

Сообщение Гость »


Я борюсь с двумя файлами: один содержит мою цепочку сертификатов Base64, а другой - закрытый ключ, и я хочу объединить их, чтобы закрытый ключ добавлялся после первого появления
< предварительно>

Код: Выделить всё

-----END CERTIFICATE-----
. I have no clue how to do it in bash.
Would be great to get help with it. Thank you!
Certificate chain file

Код: Выделить всё

-----BEGIN CERTIFICATE-----
... (certificate for your server)...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
... (the intermediate certificate)...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
... (the root certificate for the CA)...
-----END CERTIFICATE----
private key file

Код: Выделить всё

-----BEGIN PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,CFCECC7976725DE5

-----END PRIVATE KEY-----
final merged file

Код: Выделить всё

-----BEGIN CERTIFICATE-----
... (certificate for your server)...
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,CFCECC7976725DE5

-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
... (the intermediate certificate)...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
... (the root certificate for the CA)...
-----END CERTIFICATE----
script snippet:

Код: Выделить всё

get_new_certificate() {

curl --get "$venafi_url$venafi_get_cert_endpoint?Format=Base64&IncludeChain=true&RootFirstOrder=false" --insecure --data-urlencode "CertificateDN=$certificate_identifier" \
-H "accept: application/json" \
-H "Authorization: Bearer $auth_token" \
-o "$certificate_path"

# Extract the private key block
#private_key=$( awk '/-----BEGIN PRIVATE KEY-----/,/-----END PRIVATE KEY-----/' "$PRIVATE_KEY_PATH" | tr '\n' '\f')
private_key=$( cat "$PRIVATE_KEY_PATH")
# Combine the certificates and private key in the desired order
#sed -i -z "0,/-----END CERTIFICATE-----/s/ $private_key"  "$certificate_path" |  tr '\f' '\n'
#awk '/-----END CERTIFICATE-----/ {print; print "'"$private_key"'"; next}1' "$cert_chain_files > "updated_combined.pem
#cat $certificate_path
sed -i.bak -e "/-----END CERTIFICATE-----/r $private_key" -e "/-----END CERTIFICATE-----/d" $certificate_path

echo "Got new Certificate"
}


Источник: https://stackoverflow.com/questions/781 ... cific-line
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»