Cara menggunakan argumen kata sandi di melalui baris perintah untuk openssl untuk dekripsi

55

Jadi bukan praktik yang paling aman untuk memasukkan kata sandi melalui argumen baris perintah. Yang mengatakan, dokumentasi untuk openssl membingungkan saya tentang cara meneruskan argumen kata sandi ke perintah openssl.

Inilah yang saya coba lakukan

openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d

Ini kemudian meminta kunci sandi untuk dekripsi. Saya mencari dokumen openssl dan interweb untuk mencoba dan menemukan jawabannya jika saya hanya ingin memberikan kata sandi pada perintah tanpa mencoba untuk menggemakan kata sandi ke file. Saya mencoba menambahkan -pass:somepassworddan -pass somepasswordkeduanya dengan dan tanpa kutipan tidak berhasil.

Saya akhirnya menemukan jawabannya dan melihat di beberapa forum lain orang-orang memiliki pertanyaan serupa, jadi saya pikir saya akan memposting pertanyaan dan jawaban saya di sini untuk komunitas.

Catatan: Saya menggunakan openssl versi 0.9.8y

David Sulpy
sumber

Jawaban:

109

Dokumentasinya tidak begitu jelas bagi saya, tetapi ada jawabannya, tantangannya adalah tidak bisa melihat contoh.

Inilah cara melakukannya:

openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d -pass pass:somepassword

Perhatikan bahwa sintaks perintah baris perintah selalu -passdiikuti oleh spasi dan kemudian jenis frasa sandi yang Anda berikan, yaitu pass:untuk frasa sandi polos dan kemudian frasa sandi aktual setelah titik dua tanpa spasi.

Selain itu, dokumentasi menentukan Anda dapat memberikan sumber frasa sandi lainnya dengan melakukan hal berikut:

  • env:somevar untuk mendapatkan kata sandi dari variabel lingkungan
  • file:somepathname untuk mendapatkan kata sandi dari baris pertama file di lokasi pathname
  • fd:number untuk mendapatkan kata sandi dari nomor file deskriptor.
  • stdin untuk membaca dari input standar

Sekarang saya sudah menulis pertanyaan dan jawaban ini, semuanya tampak jelas. Tapi tentu butuh beberapa waktu untuk mencari tahu dan saya telah melihatnya mengambil waktu yang sama orang lain, jadi mudah-mudahan ini dapat mengurangi waktu itu dan menjawab lebih cepat untuk orang lain! :)

Dengan OpenSSL 1.0.1e parameter yang digunakan adalah -passinatau -passout. Jadi contoh ini adalah:

openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d -passin pass:somepassword

David Sulpy
sumber
Apa perbedaan antara menggunakan passin atau passout? - Ha! Cuma cari saja, stdin vs stdout tentunya!
dtmland
Perhatikan bahwa dokumentasi untuk opsi kata sandi yang berlaku untuk sebagian besar openssl perintah (bukan hanya enc) ada di halaman manual untuk openssl (1) juga di web di bawah 'OPSI'. Tapi saya tidak percaya bit terakhir Anda tentang-passin / out; perintah lain openssl seperti rsa dsa ec pkey pkcs8 pkcs12 req cajangan gunakan itu tetapi di setiap versi saya telah melihat termasuk 1.0.1e dibangun langsung dari encpenggunaan sumber hulu -passatau -k -kfileseperti yang didokumentasikan (pada halaman encmanual).
dave_thompson_085
Bagaimana dengan openssl dgstperintahnya? Bagaimana Anda memasukkan frasa sandi untuk itu di baris perintah?
frakman1
4
btw -passindigunakan untuk memberikan kata sandi untuk sertifikat input, dan -passoutuntuk sertifikat yang baru dihasilkan
drmad
7

Saya menggunakan -passindan -passoutmengatur kata sandi untuk kedua file dalam contoh:

openssl pkcs12 -in voip.p12 -out voip.pem -passin pass:123 -passout pass:321

di mana 123dan 321kata sandi

Mikhailo Karpenko
sumber
5

Pada saat ini Ubuntu 14.04 LTS hadir dengan openssl 1.0.1f-1ubuntu2.16

Dalam versi ini parameter yang digunakan adalah -k

Contoh:

openssl enc -aes-256-cbc -e -in some_file.unenc -out some_file.enc -k somepassword
Javier
sumber
1
dalam contoh Anda, -k adalah opsi yang tersedia untuk perintah openssl 'enc' (coba man enc) itu bukan opsi umum. Jika Anda melihat man opensslAnda akan melihat di bawah tajuk 'Pass Phrase Options', apa opsi umumnya; pass:password, env:var, file:pathname, fd:numberAtau stdin, seperti yang disebutkan dalam respon sebelumnya.
sibaz