আমি কীভাবে কোনও এসএস-কীজেন পাবলিক কীকে এমন ফর্ম্যাটে রূপান্তর করব যা ওপেনসেল PEM_read_bio_RSA_PUBKEY () ফাংশনটি গ্রাস করবে?


49

ওপেনসেল PEM_read_bio_RSA_PUBKEY()ফাংশনটি গ্রাস করতে পারে এমন একটি সার্বজনিক কী উত্পন্ন করতে আমার একটি সমস্যা হচ্ছে । আমি ত্রুটি পেতে থাকি।

স্পষ্টতই আমি ssh-keygen <>.pubকী ফাইলটিতে ASCII স্ট্রিংটি সহজেই ব্যবহার করতে পারি না কারণ এটি SSH ফাইল ফর্ম্যাটে বা আমি সম্ভবত SubjectPublicKeyInfoকাঠামোয়।

এখানে মূল জেন কোডটি রয়েছে: ssh-keygen -t rsa -b 1024 -C "Test Key"

আমি ওয়েবে পিএইচপি তে একটি রূপান্তরকারী পেয়েছি যা পাবলিক কী এর বিষয়বস্তুকে বেস 64 পিইএম এএসসিআইআই স্ট্রিং ফর্ম্যাটে রূপান্তর করবে। তবে ফাংশনটি এখনও এটি পছন্দ করে না।

ওপেনসেল ডকুমেন্টেশনে বলা হয়েছে:

  1. "RSA_PUBKEY () ফাংশন যা একটি EVP_PKEY কাঠামো ব্যবহার করে সর্বজনীন কী প্রক্রিয়াকরণ করে"
  2. "RSA_PUBKEY ফাংশনগুলি আরএসএ কাঠামো ব্যবহার করে একটি আরএসএ পাবলিক কী প্রক্রিয়া করেও"

আমি কীভাবে আমার ওপেনএসএসএইচ পাবলিক কীটিকে যে কোনও ফর্ম্যাটে খুলতে পারি যে ওপেনএসএসএল কার্যটি গ্রাস করবে?


এটি সন্ধান করা হয়েছে:
ওপেনসেল

ব্যক্তিগত কী তৈরি করুন: ওপেনসেল জেনার্সা-আউট টেস্ট.প্রিয়.কি 2048; একই ফর্ম্যাটে আউটপুট পাবলিক কী (পিইএম?): ওপেনএসএল আরএসএ-টেস্ট.পরিভ.কি -পাবআউট-আউট টেস্ট.পব.কি
পিটপি

ক্রস-সংশ্লিষ্ট security.stackexchange.com/questions/32768/...
dave_thompson_085

উত্তর:


56

ঠিক আছে!

তাই আমি এই চিন্তাভাবনায় চলে গেলাম "সহজ, আমি এটি পেয়েছি।" এমনকি আমি যা ভাবি তার থেকে আরও অনেক বেশি রয়েছে Turn

সুতরাং প্রথম সমস্যাটি হ'ল (ওপেনএসএসএল (ম্যান 3 পেম) এর ম্যান পেজ অনুসারে) ওপেনএসএসএল আশা করছে যে আরএসএ কীটি পিকেসিএস # 1 ফর্ম্যাটে থাকবে। স্পষ্টতই ssh-keygen এর সাথে কাজ করছে তা নয়। আপনার কাছে দুটি বিকল্প রয়েছে (চারপাশে অনুসন্ধান করা থেকে)।

আপনার যদি ওপেনএসএইচ বনাম ৫..6 বা তার পরে (আমি আমার ল্যাপটপে নেই), আপনি এটি চালাতে পারেন:

ssh-keygen -f key.pub -e -m pem

এটি করার দীর্ঘতর পদ্ধতি হ'ল আপনার এসএসএইচ কীটি বিভিন্ন উপাদানগুলির মধ্যে বিচ্ছিন্ন করা ( ব্লগ এন্ট্রি আমি ওপেনএসএসএইচকে "মালিকানাধীন" বলে অভিযুক্ত করে এর মধ্যে কিছু খুঁজে পেয়েছি, আমি এটিকে "অনন্য" বলতে পছন্দ করি) এবং তারপরে একটি এএসএন 1 লাইব্রেরি ব্যবহার করি চারপাশে জিনিস অদলবদল করতে।

ভাগ্যক্রমে আপনার জন্য, কেউ এই কোডটি লিখেছিল:

https://gist.github.com/1024558


9
ssh-keygenপদ্ধতি লিনাক্স কাজ করতে কিন্তু মনে হয় না ম্যাক OS X
ঢাকনা

3
Idাকনা, এসএসএইচ সংস্করণ সম্পর্কে উত্তরে নোটটি দেখুন। ওএস এক্স ওপেনএসএইচ-এর সাম্প্রতিক সংস্করণটি পাঠায় না। কমান্ড চালান ssh -V
ব্রায়ান রেডবার্ড

3
কাজ করে না OpenSSH_6.2p2। কাজ করে OpenSSH_6.6p1
ওল্ড প্রো

-mআমার জন্য কাজ করে না ... চারপাশের কাজ কী?
pstanton

2
ম্যাক আমার জন্য কাজ করে!
গ্রেগ হর্নবি

18

ধরে নিই আপনার কাছে এসএসএইচ প্রাইভেট কী রয়েছে id_rsa, আপনি এটির থেকে সর্বজনীন কীটি বের করতে পারেন:

openssl rsa -in id_rsa -pubout -out id_rsa.pub.pem

আমি বুঝতে পারি যে ওপি একটি পাবলিক কী রূপান্তর করার বিষয়ে জিজ্ঞাসা করেছিল, তাই এটি প্রশ্নের পুরোপুরি উত্তর দেয় না, তবে আমি ভেবেছিলাম এটি যে কোনওভাবেই কার্যকর হবে।

আরও খেয়াল করুন যে এই কমান্ডটি একটি পিইএম পাবলিক কী বিন্যাসে ফলাফল দেয় যা সাধারণত ওপেনএসএসএল প্রত্যাশা করে। অন্যদিকে, ব্রায়ানের উত্তর, আরএসএপাবলিককি ফর্ম্যাটে একটি ফাইলের ফলাফল দেয় যা ওপেনএসএসএল দ্বারা প্রত্যাশিত স্বাভাবিক ফর্ম্যাট নয় (যদিও পরবর্তী সংস্করণগুলি সম্ভবত -RSAPublicKey_inপতাকাটির মাধ্যমে পড়তে পারে )। রূপান্তর করতে আপনি এটি করতে পারেন:

openssl rsa -RSAPublicKey_in -in id_rsa.rsapub.pem -pubout -out id_rsa.pub.pem

ধন্যবাদ, প্রাইভেট কী থেকে আগত আমার জন্য কৌশলটি করেছে।
শন দেউবেরি

openssl rsa -in id_rsa.pem -pubout -out id_rsa.pub.pemএছাড়াও কাজ করে (অর্থাত্ ইনপুটটি পেমে বিন্যাসের ব্যক্তিগত কী)। ভাল উত্তর.
জনি ওয়াং

1
আপডেট করুন: ব্রায়ান এর উত্তর সংশোধন করা হয়েছে -m pkcs8যা ভুল নাম ব্যবহার OpenSSH- র ভাবেন সত্ত্বেও নেই X.509 'pubkey' উত্পাদন। এছাড়াও, ২০১৪-০১-এ ওপেনএসএসএইচ .5.৫ থেকে যদি নির্মাতা -oআরও ভাল সুরক্ষার জন্য 'নতুন ফর্ম্যাট' নির্দিষ্ট করে থাকেন তবে এই পদ্ধতিটি কার্যকর হবে না এবং ২০১-0-০৮-এ 8.৮ থেকে 'নতুন ফর্ম্যাট' এখন ডিফল্ট, ঠিক আছে।
dave_thompson_085

11

আপনি যে ফর্ম্যাটটি চান তা ssh-keygenকল করে PKCS8। সুতরাং নিম্নলিখিত কমান্ড পছন্দসই আউটপুট উত্পাদন করবে:

ssh-keygen -f key.pub -e -m pkcs8

থেকে ssh-keygenমানুষ পৃষ্ঠা:

-m key_format
         Specify a key format for the -i (import) or -e (export) conversion 
         options.  The supported key formats are: 
         ``RFC4716'' (RFC 4716/SSH2 public or private key), 
         ``PKCS8'' (PEM PKCS8 public key) or 
         ``PEM'' (PEM public key).  
         The default conversion format is ``RFC4716''.

এটি আসলে লিনাক্স এবং ম্যাকোস উভয় ক্ষেত্রেই কাজ করে।
জে টেলর

ওপেনএসএসএল ওপেনএসএল আরএসএ -র কী -পাবআউট-আউট কী.পাব.ওপেনসেল.পি.সি.সি.এস
মোহনান্দ

6

নীচে অমল চৌধুরী র পদ্ধতির অনুরূপ, এটি আমার পক্ষে কাজ করেছিল। আমি আমার এসএফটিপি ক্লায়েন্ট (সাইবারডুক) এর জন্য তৈরি করা ssh পাবলিক কী থেকে একটি পেম ফাইল তৈরি করা দরকার।

openssl rsa -in ~/.ssh/id_rsa -outform pem > id_rsa.pem

এটি আসলে কাজ করে বলে মনে হচ্ছে না।
বাইরের 2344

5
এটি কেবলমাত্র ব্যক্তিগত আরএসএ কী-এর জন্য কাজ করে না জনসাধারণের কী ওপি জিজ্ঞাসা করছে না। তাই ভুল উত্তর।
ডেভি

3
প্রকৃতপক্ষে, id_rsaইতিমধ্যে সঠিক ফর্ম্যাটে রয়েছে, আপনি নিজের দ্বারা এটি পরীক্ষা করে দেখতে পারেন, ফলাফলটি id_rsa.pem100% অভিন্ন।
মিরো ক্রপাসেক

-2

অন্য সাইট থেকে এটি করার আরেকটি উপায়। আপনার অন্য পদ্ধতির প্রয়োজন হলে এটি পোস্ট করা। খুব ভাল কাজ করে। http://www.chatur.com.np/2011/01/convert-openssh-rsa-key-to-pem-format.html

openssl dsa -in ~/.ssh/id_dsa -outform pem > id_dsa.pem

এই পদ্ধতিটি আসলে কাজ করে বলে মনে হচ্ছে না।
শান

7
id_rsaজনসাধারণের কী নয়। ভুল উত্তর.
আহমেট আল্প বালকান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.