Jde nějak říct OpenSSL "použij moje vlastní heslo ze systému" pro rozšifrování?
Nejde, protože systém vaše heslo nezná. Systém zná pouze otisk (hash) vašeho hesla, ze kterého nejde heslo zpětně získat.
Teď se budu muset podívat, jestli mi přijímající strana může a umí dát certifikát a jak já ho použiju s cURL. Jedná se o REST API call: chci poslat event do ServiceNow skrz MID server, tudíž musím nějak říct co jsem, kdo jsem, aby se to se mnou bavilo. Certifikát je samozřejmě elegantnější řešení než basic authentication, jen jestli to budeme umět udělat a jak rychle.
Na 95 % protistrana nebude umět použít přihlášení privátním klíčem – není to úplně jednoduché na správu a provoz, musíte řešit certifikační autority, a hlavně je to ve webových prohlížečích implementováno uživatelsky dost nepřívětivě, takže se to moc nepoužívá. Maximálně někde v intranetech. Znám jedinou internetovou aplikaci, která podporuje i přihlášení privátním klíčem, a to je Informační systém datových schránek.
Takže vlastně takový český intranet…Navíc kdybyste použil přihlášení privátním klíčem, tak buď budete mít ten klíč uložený bez hesla – a každý, kdo se k tomu souboru dostane, ho může použít. Nebo ho budete mít uložený s heslem – a řešíte zase stejný problém.
Máte jenom dvě možnosti. Buď budete heslo při každém spuštění skriptu zadávat z venku – ručně, přihlásíte se a předáte přihlašovací údaje přes SSH agenta, přihlásí se nějaký váš automat, který heslo předá a bude ho mít uložený někde u vás bezpečně. Jenže pokud ten vzdálený počítač nemáte pod svou správou, může zákeřný správce pozměnit třeba váš skript a to tajemství, které předáváte (třeba heslo) získat.
Druhá možnost je, že se vykašlete na takovéhle zabezpečování, které stejně bezpečnost zvyšuje jen o malinko, a to heslo bude někde na počítači uložené v dešifrovatelné podobě. Pak máte v podstatě dvě možnosti – buď ho napíšete v otevřeném tvaru přímo do skriptu, nebo ho uložíte zašifrované do skriptu nebo lépe do vedlejšího souboru a heslo k dešifrování bude zase přímo v tom skriptu. Samozřejmě, kdo bude chtít a bude mít přístup k tomu skriptu, během chvilky to heslo získá. Ta ochrana je spíš symbolická, pokud někdo zobrazí ten skript, ať tam na první pohled nevidí to heslo (pokud by bylo jednoduché, může si ho zapamatovat i nechtěně). Nebo třeba skript někde bude nechtěně zobrazen při prezentaci apod. To symbolické zašifrování tedy slouží k tomu, aby to heslo neuniklo nechtěně, omylem – k získání hesla je potřeba určité, i když minimální, úsilí, jeho získání musí být záměr.
Ale na linuxovém systému se uživatel nemůže bránit útoku ze strany roota – prostě root to vaše heslo bude vždy moci získat, vy mu to různým schováváním můžete akorát více či méně zkomplikovat.
TL;DR: Pokud je to něco nedůležitého a nepředpokládám, že si ten skript bude někdo prohlížet nebo ho někam kopírovat nebo vystavovat, nechal bych heslo v otevřeném tvaru v tom skriptu. Jinak bych heslo uložil zašifrované do vedlejšího souboru a v samotném skriptu by bylo heslo k rozšifrování toho souboru.