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


410

আমার কাছে একগুচ্ছ। কিস্টোর ফাইল রয়েছে এবং নির্দিষ্ট সিএন এবং ওরফে একটি খুঁজে পাওয়া দরকার। কীটোল, জারসিগনার বা অন্য কোনও সরঞ্জাম দিয়ে এটি করার কোনও উপায় আছে? একটি নির্দিষ্ট এপিকে সাইন করতে নির্দিষ্ট কীস্টোরটি ব্যবহার করা হয়েছিল কিনা তা যাচাই করার জন্য আমি একটি উপায় খুঁজে পেয়েছি, তবে প্রতিটি ফাইলটিতে আমার নাম এবং শংসাপত্রের নামও পাওয়া দরকার।

উত্তর:


720

আপনার কীস্টোর ফাইলের (এবং উপনামের নাম) তালিকাভুক্ত করতে আপনি নিম্নলিখিত কমান্ডটি চালাতে পারেন:

keytool -v -list -keystore .keystore

আপনি যদি একটি নির্দিষ্ট উপন্যাস খুঁজছেন, আপনি কমান্ডে এটি নির্দিষ্ট করতে পারেন:

keytool -list -keystore .keystore -alias foo

যদি উপনামটি না পাওয়া যায় তবে এটি একটি ব্যতিক্রম প্রদর্শন করবে:

কীটোল ত্রুটি: java.lang. অনুগ্রহ: এলিয়াসের অস্তিত্ব নেই


1
হাই যদি আমি কী ওরফে পাসওয়ার্ডটি প্রদর্শন করতে পারি তবে যদি আমি কী ওরফেটির নামটি জানি এবং কীস্টোর শংসাপত্র এবং কীস্টোরের পাসওয়ার্ড পেয়েছি
প্রেতীক

11
পছন্দ করুন কীস্টোর বা কী পাসওয়ার্ডগুলি রাখার তেমন কোনও অর্থ হবে না যদি আপনি কেবল কমান্ড-লাইন সরঞ্জাম দিয়ে প্রদর্শন করতে পারেন।
মারকুইস লর্ন

2
আপনার কীস্টোর ফাইলটির বিষয়বস্তু তালিকাবদ্ধ করতে আপনি নীচের কমান্ডটি চালিয়ে যেতে পারেন: কীটল-তালিকা -কীস্টোর .কিস্টোর উপরের কমন্ডটি ওরফে নাম সরবরাহ করছে না
মনমোহন সোনি

1
@ মনমোহনসনি আমি -v যুক্তিটি অন্তর্ভুক্ত করার জন্য এটি আপডেট করেছি যা উফের প্রকাশ করে
স্টিভেন মার্ক ফোর্ড

10
আমি মনে করি /path/to/keystoreপরিবর্তে .keystoreপাঠক আরও স্পষ্ট হবে। যাইহোক এটি সঠিক উত্তর!
অ্যান্ড্রিয়া

261

সমস্ত বিবরণ পেতে আমাকে রোমান্টাজ উত্তরে -v বিকল্পটি যুক্ত করতে হয়েছিল:

keytool -v -list -keystore <FileName>.keystore

4
keytool -v-list -keystore <FileName> .jks
piyush singh

1
keytool -v-list -keystore cacerts
অঙ্কুর শ্রীবাস্তব

2
"যদি -vবিকল্পটি নির্দিষ্ট করা থাকে, তবে শংসাপত্রটি মানব-পঠনযোগ্য ফর্ম্যাটে মুদ্রিত হয় , অতিরিক্ত তথ্য যেমন মালিক, ইস্যুকারী, সিরিয়াল নম্বর এবং কোনও এক্সটেনশন সহ" " (দেখুন: জাভা এসই সরঞ্জামগুলির রেফারেন্স, প্রদর্শন ডেটা কমান্ড,
-তালিকা

64

আপনি জাভা কোড থেকে চালাতে পারেন।

try {

        File file = new File(keystore location);
        InputStream is = new FileInputStream(file);
        KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
        String password = "password";
        keystore.load(is, password.toCharArray());


        Enumeration<String> enumeration = keystore.aliases();
        while(enumeration.hasMoreElements()) {
            String alias = enumeration.nextElement();
            System.out.println("alias name: " + alias);
            Certificate certificate = keystore.getCertificate(alias);
            System.out.println(certificate.toString());

        }

    } catch (java.security.cert.CertificateException e) {
        e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (KeyStoreException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }finally {
        if(null != is)
            try {
                is.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    }

শংসাপত্রের ক্লাসে কীস্টোর সম্পর্কিত সমস্ত তথ্য রয়েছে।

আপডেট - প্রাইভেট কী O

Key key = keyStore.getKey(alias, password.toCharArray());
String encodedKey = new Base64Encoder().encode(key.getEncoded());
System.out.println("key ? " + encodedKey);

@ প্রীতেক আশা করি আপনি এটি যা খুঁজছেন!


আমদানি java.io.File; আমদানি java.io.FileInputStream; আমদানি করুন java.io.FileNotFoundException; আমদানি java.io.IOException; আমদানি জাভা.সিকিউরিটি.সেট.সর্কেটেট; আমদানি জাভা.সিকিউরিটি.কি স্টোর; আমদানি করুন java.security.KeyStoreException; আমদানি করুন java.security.NoSuchAlgorithmException; আমদানি java.util.Eeumeration;
নিষিদ্ধ-জিওইনজিনিয়ারিং

1
@ রেনজিথ হ্যালো এই কোডটি ওরফে সম্পর্কিত পাসওয়ার্ড ব্যতীত সমস্ত কিছুই প্রদর্শন করে, আমি কীভাবে এটি প্রদর্শিত করতে পারি। দয়া করে আমাকে সাহায্য
Prateek

@ রেনজিথ java.security.UnrecoverableKeyExceptionএই ব্যতিক্রমটি ছুঁড়ে ফেলা হয়েছে যখন আমি এই কোডটি বাস্তবে চেষ্টা করি যখন আমি ওরফে পাসওয়ার্ডটি পুনরুদ্ধার করতে চাই
প্রেতীক

2
লুপের সময় আপনার উল্লিখিত
কোডগুলির

1
আমার বেস 64 এনকোডার ক্লাস নেই। আপনি দয়া করে বলতে পারেন এটিতে কোন জার ফাইল রয়েছে? বা এটি একটি জাভা ফাইল?
জ্যাক


17

বাশ-জাতীয় পরিবেশে আপনি এটি ব্যবহার করতে পারেন:

keytool -list -v -keystore cacerts.jks | grep 'Alias name:' | grep -i foo

এই আদেশটি 3 অংশ নিয়ে গঠিত। উপরে উল্লিখিত হিসাবে, 1 ম অংশটি সমস্ত বিশদ সহ সমস্ত বিশ্বস্ত শংসাপত্রের তালিকা তৈরি করবে এবং সেই কারণেই 2 য় অংশটি সেই বিবরণগুলির মধ্যে কেবলমাত্র উপনামের তথ্য ফিল্টার করতে আসে। এবং অবশেষে তৃতীয় অংশে আপনি একটি নির্দিষ্ট ওরফে (বা এর কোনও অংশ) অনুসন্ধান করতে পারেন। -I পালাক্রমে উপর কেস অবশ মোড। সুতরাং প্রদত্ত কমান্ডটি আরও তথ্যের জন্য 'foo', ফে foo, 123_FOO, fooBar, ইত্যাদি প্যাটার্নযুক্ত সমস্ত উপাত্ত সরবরাহ করবে man grep


12

এটি সমস্ত শংসাপত্র তালিকাবদ্ধ করবে:

keytool -list -keystore "$JAVA_HOME/jre/lib/security/cacerts"

এটি কেবল জেডিকে-র ট্রাস্ট স্টোরে সংরক্ষিত শংসাপত্রগুলি তালিকাভুক্ত করবে যা অনুরূপ তবে কীস্টোরের (যা সম্পর্কে জিজ্ঞাসা করা হয়েছিল) ভিন্ন উদ্দেশ্যে। এখানে একটি ভাল পার্থক্য রয়েছে: http://stackoverflow.com/questions/17935619/ কি- is-differences- between-cacerts- এবং-keystore
ডেভিড লেভি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.