Cách sử dụng đối số mật khẩu trong dòng lệnh để openssl để giải mã


54

Vì vậy, đây không phải là cách thực hành an toàn nhất để truyền mật khẩu thông qua đối số dòng lệnh. Điều đó nói rằng, tài liệu về openssl làm tôi bối rối về cách chuyển một đối số mật khẩu cho lệnh openssl.

Đây là những gì tôi đang cố gắng làm

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

Điều này sau đó nhắc cho khóa pass để giải mã. Tôi đã tìm kiếm các tài liệu openssl và các interwebs để thử và tìm câu trả lời nếu tôi chỉ đơn giản muốn cung cấp mật khẩu cho lệnh mà không cố gắng lặp lại mật khẩu cho tệp. Tôi đã cố gắng thêm -pass:somepassword-pass somepasswordcả có và không có dấu ngoặc kép đều vô ích.

Cuối cùng tôi đã tìm ra câu trả lời và thấy trong một số diễn đàn khác mọi người có câu hỏi tương tự, vì vậy tôi nghĩ rằng tôi sẽ đăng câu hỏi và câu trả lời của mình ở đây cho cộng đồng.

lưu ý: Tôi đang sử dụng phiên bản openssl 0.9.8y

Câu trả lời:


108

Tài liệu này không rõ ràng đối với tôi, nhưng nó đã có câu trả lời, thách thức là không thể xem ví dụ.

Đây là cách thực hiện:

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

Lưu ý rằng cú pháp lệnh dòng lệnh luôn được -passtheo sau bởi khoảng pass:trắng và sau đó là loại cụm mật khẩu bạn đang cung cấp, nghĩa là đối với cụm mật khẩu đơn giản và sau đó là cụm mật khẩu thực tế sau dấu hai chấm không có dấu cách.

Ngoài ra, tài liệu chỉ định bạn có thể cung cấp các nguồn cụm mật khẩu khác bằng cách thực hiện như sau:

  • env:somevar để lấy mật khẩu từ một biến môi trường
  • file:somepathname để lấy mật khẩu từ dòng đầu tiên của tệp tại vị trí pathname
  • fd:number để lấy mật khẩu từ số mô tả tập tin.
  • stdin để đọc từ đầu vào tiêu chuẩn

Bây giờ tôi đã viết câu hỏi và câu trả lời này, tất cả dường như rõ ràng. Nhưng chắc chắn phải mất một thời gian để tìm ra và tôi đã thấy người khác mất thời gian tương tự, vì vậy hy vọng điều này có thể cắt giảm thời gian đó và trả lời nhanh hơn cho những người khác! :)

Với OpenSSL 1.0.1e, tham số sử dụng là -passinhoặc -passout. Vì vậy, ví dụ này sẽ là:

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


Sự khác biệt giữa việc sử dụng passin hoặc passout là gì? - Hà! Chỉ cần nhìn lên, tất nhiên stdin vs stdout!
dtmland

Lưu ý rằng tài liệu cho các tùy chọn mật khẩu áp dụng cho hầu hết openssl các lệnh (không chỉ enc) nằm trong trang man cho openssl (1) cũng trên web dưới 'TÙY CHỌN'. Nhưng tôi không tin chút cuối cùng của bạn về -passin / out; các openssl lệnh khác như rsa dsa ec pkey pkcs8 pkcs12 req casử dụng những lệnh đó nhưng trong mọi phiên bản tôi đã thấy bao gồm 1.0.1e được xây dựng trực tiếp từ việc encsử dụng nguồn ngược dòng -passhoặc -k -kfilenhư được ghi lại (trên enctrang chủ).
dave_thndry_085

Làm thế nào về openssl dgstlệnh? Làm thế nào để bạn nhập cụm mật khẩu cho dòng đó?
frakman1

4
btw -passinđược sử dụng để cung cấp mật khẩu cho chứng chỉ đầu vào và -passoutdành cho chứng chỉ được tạo mới
drmad

7

Tôi đã sử dụng -passin-passoutđể đặt mật khẩu cho cả hai tệp trong ví dụ:

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

mật khẩu ở đâu 123321


5

Tại thời điểm này, Ubuntu 14.04 LTS đi kèm với openssl 1.0.1f-1ubfox2.16

Trong phiên bản này, tham số sử dụng là -k

Thí dụ:

openssl enc -aes-256-cbc -e -in some_file.unenc -out some_file.enc -k somepassword

1
trong ví dụ của bạn, -k là một tùy chọn khả dụng cho lệnh openssl 'enc' (thử man enc) nó không phải là một tùy chọn chung. Nếu bạn nhìn vào man opensslbạn sẽ thấy dưới tiêu đề 'Đạt cụm từ tùy chọn', các tùy chọn chung là gì; pass:password, env:var, file:pathname, fd:numberHoặc stdin, như đã đề cập trong một phản ứng trước đó.
sibaz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.