কমান্ড লাইন থেকে একটি পাসফ্রেজ ব্যবহার করে একটি ওপেনএসএসএল কী কীভাবে তৈরি করা যায়?


107

প্রথম - আমি পাসফ্রেজ না দিলে কী হয়? কিছু ছদ্ম র্যান্ডম বাক্যাংশ ব্যবহার করা হয়? নৈমিত্তিক হ্যাকারদের উপসাগর করার জন্য আমি কেবল "যথেষ্ট ভাল" এমন কিছু সন্ধান করছি।

দ্বিতীয় - কমান্ড লাইনে পাসফ্রেজ সরবরাহ করে কমান্ড লাইনটি কী কী তৈরি করব?


অবশেষে আমি এই কমান্ডগুলি ব্যবহার করে এটি কার্যকর করেছিলাম (এক্সিকিউটিভ) ব্যবহার করে যা এটি সাধারণত ব্যবহার করা নিরাপদ নয় বলে মনে করা হয়, কোনও ফাইলে পাসফ্রেস দেওয়ার চেয়ে ভাল। আমি এই ঝুঁকিটি গ্রহণ করতে পারি কারণ আমি নিশ্চিত যে পিএইচপি কেবলমাত্র আমার পিসিতে কার্যকর করা হবে (যা উইন্ডো চালায় এবং পিএস কমান্ড নেই)।

openssl genrsa -aes128 -passout pass:foobar -out privkey.pem 2048
openssl rsa -in privkey.pem -passin pass:foobar -pubout -out privkey.pub

@Caf কে অনেক ধন্যবাদ, যাদের ছাড়া এটি সম্ভব হত না।

কেবল একটি আফসোস - এটি, আমি যতই গুগল করি না কেন, openssl_pkey_new()উইন্ডোজে এক্সপ্যাম্পের সাথে কারও কাজ করা মনে হয় না (যা কী জুড়ি উত্পন্ন করার উপযুক্ত উপায়)


4
কেন openssl_pkey_new()একটি মূল জুটি উত্পন্ন করার "সঠিক" উপায়?
জেক বার্গার

উইন্ডোজের (সাধারণত) নেই psতবে ভিস্তার যেহেতু এটি রয়েছেwmic process get commandline
dave_thompson_085

উত্তর:


210

আপনি যদি কোনও পাসফ্রেজ ব্যবহার না করেন, তবে ব্যক্তিগত কীটি কোনও প্রতিসম সাইফারের সাথে এনক্রিপ্ট করা হয় না - এটি আউটপুট সম্পূর্ণরূপে সুরক্ষিত নয়।

আপনি একটি কী-পেয়ার তৈরি করতে পারেন, অনুরোধ ব্যবহার করে কমান্ড-লাইনে পাসওয়ার্ড সরবরাহ করে (যেমন এই ক্ষেত্রে পাসওয়ার্ডটি রয়েছে foobar):

openssl genrsa -aes128 -passout pass:foobar 3072

তবে নোট করুন যে এই পাসফ্রেজটি সেই সময়ে মেশিনে চলমান অন্য কোনও প্রক্রিয়া দ্বারা ধরা পড়তে পারে, যেহেতু কমান্ড-লাইন আর্গুমেন্টগুলি সমস্ত প্রক্রিয়াতে সাধারণত দৃশ্যমান হয়।

একটি আরও ভাল বিকল্প হ'ল ফাইলের অনুমতি সহ সুরক্ষিত একটি অস্থায়ী ফাইলে পাসফ্রেজ লিখুন এবং তা উল্লেখ করুন:

openssl genrsa -aes128 -passout file:passphrase.txt 3072

অথবা স্ট্যান্ডার্ড ইনপুটটিতে পাসফ্রেজ সরবরাহ করুন:

openssl genrsa -aes128 -passout stdin 3072

আপনি file:বিকল্প সহ একটি নামক পাইপ বা একটি ফাইল বর্ণনাকারী ব্যবহার করতে পারেন ।


তারপরে ম্যাচিং করা পাবলিক কীটি পেতে, আপনাকে ব্যক্তিগত কী এনক্রিপ্ট করার জন্য ব্যবহৃত প্যারামিটারের openssl rsaসাথে একই পাসফ্রেজ সরবরাহ করতে হবে -passin:

openssl rsa -passin file:passphrase.txt -pubout

(এটি স্ট্যান্ডার্ড ইনপুটটিতে এনক্রিপ্ট করা ব্যক্তিগত কীটি প্রত্যাশা করে - আপনি এর পরিবর্তে এটি কোনও ফাইল থেকে এটি পড়তে পারেন -in <file>)।


পাসওয়ার্ড সহ এনক্রিপ্ট করা ব্যক্তিগত কী জুটির সাথে ফাইলগুলিতে একটি 3072-বিট প্রাইভেট এবং পাবলিক কী জুড়ি তৈরির উদাহরণ foobar:

openssl genrsa -aes128 -passout pass:foobar -out privkey.pem 3072
openssl rsa -in privkey.pem -passin pass:foobar -pubout -out privkey.pub

+1 দুর্দান্ত, এটি কাজ করে! ধন্যবাদ, আপনি যদি মাত্র এক কিশোর বয়সে আরও সাহায্য করতে পারেন তবে আপনি উত্তরটি পুরষ্কার পেয়ে যাবেন ... কেন এই কাজ করবে না? ওপেনএসএল আরএসএ-প্রাইভিকে.পিএম -পাবআউট-পাসআউট পাস: ফুবার
মাওগ বলেছেন মোনিকার

বা, এটি অন্য কোনও উপায়ে বলতে পারেন - কীভাবে আপনার আদেশ থেকে জনসাধারণ কী (যা খনি থেকে কিছুটা পৃথক)। আমার কেবল একটি ম্যাচড জুড়ি দরকার। এটি কেবল "যথেষ্ট ভাল" সুরক্ষা।
মাওগ বলছেন মনিকা

4
@ মগ: আপনার opensslকমান্ড সরবরাহকৃত ব্যক্তিগত কী সম্পর্কিত জনসাধারণের কী আউটপুট দিচ্ছে - পাবলিক কীগুলি এনক্রিপ্ট করা হয় না (সেগুলি গোপন নয়), সুতরাং এটি ব্যবহার করার -passoutকোনও অর্থ নেই। আপনি সম্ভবত -passinসেখানে ব্যবহার করতে চান , প্রথম পদক্ষেপে ব্যক্তিগত কী এনক্রিপ্ট করার জন্য ব্যবহৃত পাসফ্রেজ সরবরাহ করতে। আমি উত্তরেও কিছু যুক্ত করেছি।
ক্যাফে

@ ক্যাফ, দুর্দান্ত প্রতিক্রিয়ার জন্য ধন্যবাদ (আবার +1)। তবে ওপেনএসএসএল ব্যবহারের অনুমতি পাবার জন্য আমি স্পষ্টতই বোবা। আমি কোনও ফাইলে কীটি চাই এবং কোনও কারণে openssl genrsa 2048 -aes128 -passout pass:foobar -out privkey.pemতা করে না। আপনি কি দয়া করে আমাকে দুটি কমান্ড দিতে পারেন - একটি জনসাধারণের কী (একটি ফাইলের মধ্যেও) উত্পন্ন করার জন্য একটি দ্বিতীয়টিতে একটি ব্যক্তিগত কী তৈরি করা? এই জাতীয় উপদ্রব হওয়ার জন্য দুঃখিত, তবে আমি এটি নিয়ে ঘুরে বেড়াচ্ছি এবং কেবল এটি কাজ করতে পারি না :-(
মওগ

3
@ মগ: ওপেনএসএসএল পছন্দ করে না যদি পরম -outআসে তবে 2048- সত্যই, এটি কমান্ড লাইনের শেষ জিনিস (আমি আমার উত্তরটি আপডেট করেছি)। শেষ উদাহরণটি দেখুন, আমি মনে করি এটি আপনি চান। AES-128 হিসাবে, কেউ এই বিষয়গুলিতে আমার বিশ্বাস রাখে সে এটিএস -২6 over এর উপরে প্রস্তাব দেয়।
ক্যাফে

9

genrsaদ্বারা প্রতিস্থাপনgenpkey করা হয়েছে & যখন টার্মিনালে ম্যানুয়ালি চালানো হবে এটি একটি পাসওয়ার্ডের জন্য অনুরোধ করবে:

openssl genpkey -aes-256-cbc -algorithm RSA -out /etc/ssl/private/key.pem -pkeyopt rsa_keygen_bits:4096

তবে কোনও স্ক্রিপ্ট থেকে চালানোর সময় কমান্ডটি কোনও পাসওয়ার্ড জিজ্ঞাসা করবে না যাতে কোনও পাসওয়ার্ডটি কোনও shellস্ক্রিপ্টে কোনও ফাংশন ব্যবহার করে প্রক্রিয়া হিসাবে পাসওয়ার্ডটি দেখা যায় না :

get_passwd() {
    local passwd=
    echo -ne "Enter passwd for private key: ? "; read -s passwd
    openssl genpkey -aes-256-cbc -pass pass:$passwd -algorithm RSA -out $PRIV_KEY -pkeyopt rsa_keygen_bits:$PRIV_KEYSIZE
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.