Pkcs12 ধারক থেকে কী কী পাসওয়ার্ড সরানো যায়?


40
  1. আমি ক্রোমের এসএসএল / এক্সপোর্ট কমান্ড ব্যবহার করে শংসাপত্র বের করেছি।
  2. তারপরে এটি ওপেনভিপিএন-তে ইনপুট হিসাবে সরবরাহ করেছে - ওপেনভিপিএন-এর কনফিগারেশনে:
    pkcs12 "path/to/pkcs12_container"
  3. যখন openvpn ~/openvp_configএটি কল করা হয় তখন ব্যক্তিগত কী (যা Chrome ব্যবহার করে রফতানি করার সময় আমি প্রবেশ করলাম) এর জন্য একটি পাসওয়ার্ড চেয়েছিল:
    Enter Private Key Password:...
  4. আমি এই পাসওয়ার্ডের অনুরোধটি সরাতে চাই।

প্রশ্ন: কীভাবে পি কেসিএস 12 থেকে প্রাইভেট কী এর পাসওয়ার্ড সরিয়ে ফেলবেন?

অর্থাত্, পিকেসিএস 12 ফাইল তৈরি করুন যার পাসওয়ার্ডের প্রয়োজন নেই।

(মনে হচ্ছে আমি এক বছর আগেও কোনওভাবে ইতিমধ্যে এটি করেছি, এবং এখন এটি ভুলে গিয়েছি n


নিম্নলিখিত লিপিটি এটি করে (মূলত এটি শূন্য0 উত্তর): gist.github.com/5nizza/7ae9cff0d43f33818a33 ব্যবহার:./remove_pass_from_cert.sh YourCertName YourCertPass
আয়রাত

উত্তর:


48

এটি বিভিন্ন opensslকল দ্বারা অর্জন করা যেতে পারে ।

  • পাসওয়ার্ড আপনার বর্তমান পাসওয়ার্ড
  • আপনার রূপান্তর করতে চান এমন ফাইল হ'ল আপনার পি কে সি এস ফাইলে
  • NewPKCSWithoutPassphraseFile পাসফ্রেজ ছাড়াই PKCS12 এর জন্য লক্ষ্য ফাইল

প্রথমে শংসাপত্রটি বের করুন:

$ openssl pkcs12 -clcerts -nokeys -in "YourPKCSFile" \
      -out certificate.crt -password pass:PASSWORD -passin pass:PASSWORD

দ্বিতীয়ত, সিএ কী:

$ openssl pkcs12 -cacerts -nokeys -in "YourPKCSFile" \
      -out ca-cert.ca -password pass:PASSWORD -passin pass:PASSWORD

এখন, ব্যক্তিগত কী:

$ openssl pkcs12 -nocerts -in "YourPKCSFile" \
      -out private.key -password pass:PASSWORD -passin pass:PASSWORD \
      -passout pass:TemporaryPassword

এখন পাসফ্রেজটি সরান:

$ openssl rsa -in private.key -out "NewKeyFile.key" \
      -passin pass:TemporaryPassword

নতুন পিকেসিএস-ফাইলের জন্য জিনিসগুলি একসাথে রাখুন:

$ cat "NewKeyFile.key"  \
      "certificate.crt" \
      "ca-cert.ca" > PEM.pem

এবং নতুন ফাইল তৈরি করুন:

$ openssl pkcs12 -export -nodes -CAfile ca-cert.ca \
      -in PEM.pem -out "NewPKCSWithoutPassphraseFile"

এখন আপনার কাছে ব্যক্তিগত কী অংশে পাসফ্রেজ ছাড়াই একটি নতুন পিকেসিএস 12 কী ফাইল রয়েছে।


দুর্দান্ত উত্তর! ..কি ca-cert.ca?
আয়রত

@ আরাত: এটি আপনার কী এর সিএ শংসাপত্রের অংশ। - উত্তরে আমার একটি টাইপ আছে, সংশোধন হচ্ছে ... - আপনি চেষ্টা করার পরে উত্তরটি নির্ধারণ করতে এবং গ্রহণ করতে
নির্দ্বিধায়

2
-nodesযখন -exportব্যবহার করা হয় তখন তা উপেক্ষা করা হয়, এটি এই মামলার জন্য নথিভুক্ত করা হয়নি (ওপেনসেল ম্যান পৃষ্ঠাটি দেখুন, -nodesকেবলমাত্র পিকেসিএস # 12 থেকে পিইএম তে রফতানি করার সময় তালিকাভুক্ত)। আপনার শেষ কলটি আমাকে এখনও রফতানি পাসওয়ার্ডের জন্য অনুরোধ করে। এবং আমি যদি কেবলমাত্র ফিরতি আঘাত করি তবে আমি একটি পিকেসিএস # 12 ফাইল পাই যার পাসওয়ার্ডটি খালি স্ট্রিং এবং পাসওয়ার্ড ছাড়াই নয়। আমি তখন যখন openssl pkcs12 -in "NewPKCSWithoutPassphraseFile"এটি করি তখনও আমাকে আমদানি পাসওয়ার্ডের জন্য অনুরোধ জানায়। আমি কেবল রিটার্ন হিট করতে পারি এবং এটি কাজ করে তবে যদি কোনও পাসওয়ার্ড না থাকে তবে এটি প্রম্পটও করে না।
মক্কি

35

সবচেয়ে সহজ সমাধান আমি পেয়েছি হয়

অস্থায়ী পেম ফাইলটিতে রফতানি করুন

openssl pkcs12 -in protected.p12 -nodes -out temp.pem
#  -> Enter password

পেমকে পি 12 এ রূপান্তর করুন

openssl pkcs12 -export -in temp.pem  -out unprotected.p12
# -> Just press [return] twice for no password

অস্থায়ী শংসাপত্র সরান

rm temp.pem

আমি এই পদ্ধতির কোনও খারাপ দিক দেখছি না।
ম্যাট বেকম্যান

কিছু সরঞ্জামের জন্য একটি পাসওয়ার্ড প্রয়োজন। উদাহরণস্বরূপ keytool -v -list -storetype pkcs12 -keystore unprotected.p12একটি সতর্কতা নির্গত করবে এবং শংসাপত্রের তালিকা তৈরি করবে না। সুতরাং এটি ওপেনভিপিএন এর পক্ষে কাজ করতে পারে তবে অন্য কোনও কিছুর জন্য নয়।
mivk

@ মিভক আপনার মানে কি? কিছু সরঞ্জামের জন্য একটি পাসওয়ার্ড সুরক্ষিত কী প্রয়োজন?
কোয়েন

1
অবশ্যই, তবে প্রশ্নটি পাসওয়ার্ড অপসারণ সম্পর্কিত, অ্যাপ্লিকেশনগুলির ক্ষেত্রে নয় যা পাসওয়ার্ড সেট করার প্রয়োজন হয় about
কোয়েন

2
আপনার সমাধানটি পিকেসিএস # 12 ডাব্লু / ওএ পাসওয়ার্ড তৈরি করে না তবে একটি পাসওয়ার্ড সহ একটি "এমটিপি স্ট্রিং), যা একই নয়।
মক্কি

5

কোনও অস্থায়ী ফাইল ছাড়াই এটি সহজেই এক ধাপে করা যেতে পারে:

openssl pkcs12 -in "PKCSFile" -nodes | openssl pkcs12 -export -out "PKCSFile-Nopass"

পাসওয়ার্ড সহ আমদানি পাসওয়ার্ড প্রম্পটের উত্তর দিন। <সিআর> এর মাধ্যমে রফতানির পাসওয়ার্ড প্রম্পটের উত্তর দিন

সম্পন্ন.

নোট করুন যে এটি কোনও সংখ্যক মধ্যবর্তী শংসাপত্রগুলি পরিচালনা করে যা বান্ডলে থাকতে পারে ...

ফলস্বরূপ ফাইলটি যত্ন সহকারে যত্ন নেওয়ার পরামর্শ দিচ্ছি; উমাস্ককে প্রথমে ৩77 এ সেট করা ভাল ধারণা হবে (অ-ইউনিক্স: এর অর্থ কেবলমাত্র মালিক তৈরি করা ফাইলটিই পড়তে পারে supp) আমি মনে করি এটি যদি ২ টি পদক্ষেপ হয় তবে যদি আপনার ডিফল্ট উমাস্ক অনুমতিপ্রাপ্ত হয় ...


2

এখন, ব্যক্তিগত কী:

openssl pkcs12 -nocerts -in "YourPKCSFile" -out private.key -password pass:PASSWORD -passin pass:PASSWORD -passout pass:TemporaryPassword

এখন পাসফ্রেজটি সরান:

openssl rsa -in private.key -out "NewKeyFile.key" -passin pass:TemporaryPassword

2 টি পদক্ষেপ দ্বারা প্রতিস্থাপিত হতে পারে

openssl pkcs12 -nocerts -in "YourPKCSFile" -out private.key -nodes

0

এগুলির কোনওটিই আমার পক্ষে কাজ করেনি। শেষ পর্যন্ত আমি ডটনেট কোডে ফিরে গিয়েছিলাম যা প্রথমবার কাজ করেছিল।

class Script
{
    static public void Main(string[] args)
    {
                if (args.Length < 3 || args.Contains("/?"))
                {
                    MainHelp(args);
                    return;
                }
       string _infile = args[0],
                        _outfile = args[2];
                string _password = args[1], _outpassword = (args.Length > 3) ? args[3] : "";
                Console.WriteLine(String.Format("{0} -> {1} with ({2} -> {3})", _infile, _outfile, _password, _outpassword));
                System.Security.Cryptography.X509Certificates.X509Certificate2 cert = null;
                Console.WriteLine(String.Format("Load {0} with {2}", _infile, _outfile, _password, _outpassword));
                cert = new System.Security.Cryptography.X509Certificates.X509Certificate2(_infile, _password, X509KeyStorageFlags.Exportable);
                Console.WriteLine(String.Format("Export {1} with {3}", _infile, _outfile, _password, _outpassword));
                System.IO.File.WriteAllBytes(_outfile, cert.Export(System.Security.Cryptography.X509Certificates.X509ContentType.Pfx, _outpassword));
                Console.WriteLine(String.Format("Export complete", _infile, _outfile, _password, _outpassword));
    }

     static public void MainHelp(string[] args)
    {
            Console.WriteLine("Usage pfxremovepwd [inpfx] [inpwd] [outpfx] [optional outpwd]");
            return;
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.