জাভা কীস্টোরগুলিতে একটি .cer শংসাপত্র কীভাবে আমদানি করবেন?


226

জাভা ওয়েব সার্ভিস ক্লায়েন্টের বিকাশের সময় আমি একটি সমস্যার মধ্যে পড়েছিলাম। ওয়েবসওয়ারিসের জন্য প্রমাণীকরণ একটি ক্লায়েন্ট শংসাপত্র, একটি ব্যবহারকারীর নাম এবং একটি পাসওয়ার্ড ব্যবহার করছে। ওয়েবসার্চির পিছনে সংস্থা থেকে আমি যে ক্লায়েন্ট শংসাপত্র পেয়েছি তা .cerফর্ম্যাটে রয়েছে। আমি যখন কোনও পাঠ্য সম্পাদক ব্যবহার করে ফাইলটি পরিদর্শন করি তখন এটিতে নিম্নলিখিত বিষয়বস্তু রয়েছে:

-----BEGIN CERTIFICATE-----
[Some base64 encoded data]
-----END CERTIFICATE-----

আমি এই ফাইলটি ইন্টারনেট এক্সপ্লোরারে একটি শংসাপত্র হিসাবে আমদানি করতে পারি (কোনও পাসওয়ার্ড প্রবেশ না করেই!) এবং ওয়েবসওয়ারিসের সাথে প্রমাণীকরণের জন্য এটি ব্যবহার করতে পারি।

আমি প্রথম এবং শেষ লাইনটি প্রথমে ইউনিক্স নিউলাইনগুলিতে রূপান্তর করে এবং একটি বেস 64-ডিকোড চালিয়ে কী-স্টোরে এই শংসাপত্রটি আমদানি করতে সক্ষম হয়েছি। ফলস্বরূপ ফাইলটি একটি কীস্টোরে আমদানি করা যায় ( keytoolকমান্ডটি ব্যবহার করে )। আমি যখন কীস্টোরে এন্ট্রি তালিকাবদ্ধ করি তখন এই এন্ট্রিটি ধরণের হয় trustedCertEntry। এই প্রবেশের ধরণের কারণে (?) ওয়েবসওয়ার্সের সাথে প্রমাণীকরণের জন্য আমি এই শংসাপত্রটি ব্যবহার করতে পারি না। আমি ভাবতে শুরু করি যে প্রদত্ত শংসাপত্রটি একটি সর্বজনীন শংসাপত্র যা প্রমাণীকরণের জন্য ব্যবহৃত হচ্ছে ...

আমি খুঁজে পেয়েছি এমন একটি কার্যকারিতা হ'ল আইটিতে শংসাপত্রটি আমদানি করা এবং এটি .pfxফাইল হিসাবে রফতানি করা । এই ফাইলটি কীস্টোর হিসাবে লোড করা যেতে পারে এবং ওয়েব সার্ভিসের সাহায্যে প্রমাণীকরণ করতে ব্যবহার করা যেতে পারে। তবে আমি আশা করি না যে আমার ক্লায়েন্টরা যখনই নতুন শংসাপত্র গ্রহণ করবেন তারা এই পদক্ষেপগুলি সম্পাদন করবেন। সুতরাং আমি .cerসরাসরি জাভায় ফাইলটি লোড করতে চাই । কোন চিন্তা?

অতিরিক্ত তথ্য: ওয়েবসওয়ারিসের পিছনে সংস্থাটি আমাকে বলেছিল যে পিসি এবং ব্যবহারকারীর কাছ থেকে শংসাপত্রটি অনুরোধ করা উচিত (যা আইটি এবং ওয়েবসাইট ব্যবহার করে) পরে শংসাপত্রটি আমদানি করবে।

উত্তর:


317
  • আপনি যদি প্রমাণীকরণ করতে চান তবে আপনার ব্যক্তিগত কী প্রয়োজন - অন্য কোনও বিকল্প নেই।
  • একটি শংসাপত্র অতিরিক্ত সংখ্যার (যেমন কোম্পানির নাম, দেশ, ...) সমেত একটি সার্বজনীন কী যা কিছু শংসাপত্র কর্তৃপক্ষের দ্বারা স্বাক্ষরিত থাকে যা গ্যারান্টি দেয় যে সংযুক্ত বৈশিষ্ট্যগুলি সত্য।
  • .CERফাইলগুলি শংসাপত্র এবং ব্যক্তিগত কী নেই। প্রাইভেট কীটি .PFX keystoreসাধারণত একটি ফাইল সরবরাহ করা হয়। আপনি যদি সত্যই প্রমাণী হয়ে থাকেন কারণ আপনি ইতিমধ্যে ব্যক্তিগত কীটি আমদানি করেছিলেন।
  • আপনি সাধারণত .CERকোনও সমস্যা ছাড়াই শংসাপত্র আমদানি করতে পারেন

    keytool -importcert -file certificate.cer -keystore keystore.jks -alias "Alias" 

3
IE এর জন্য একটি প্লাগইন দ্বারা প্রাইভেট কী তৈরি হচ্ছে। এখনকার কেবলমাত্র সমাধান হ'ল আইইতে শংসাপত্রটি আমদানি করা এবং একটি .pfx ফাইল রফতানি করা।
জানু পিটার

5
.CER ফাইলগুলিতে সর্বজনীন কী রয়েছে। তাদের কাছে ব্যক্তিগত কী নেই। সম্পাদনার পরামর্শ দিন ..
কাইলএম 20'13

6
-লিয়ারা এখানে কি করে?
হপ

5
:( -> কীটোল ত্রুটি: java.lang.Exception: একটি X.509 শংসাপত্র নয় ইনপুট
necromancer

1
@ ওপরে একটি জাভা কীস্টোরটিতে এটি সনাক্ত করার জন্য প্রত্যেকে আলাদা আলাদা ওরফে একাধিক শংসাপত্র থাকতে পারে। আপনি এটি সনাক্ত করতে এবং / অথবা উপনামের নাম অনুসারে এটিকে পুনরুদ্ধার করতে রেফারেন্স হিসাবে ব্যবহার করতে পারেন।
লুজপ

85

আমদানি হচ্ছে .cerমধ্যে শংসাপত্র ফাইল ব্রাউজার থেকে ডাউনলোড করা (বিস্তারিত জানার জন্য URL এবং খনন খুলুন) cacerts মধ্যে কীস্টোর java_home\jre\lib\security, আমার জন্য কাজ যেমন attemps উল্টোদিকে তৈরী করা এবং আমার নিজের কীস্টোর ব্যবহার করতে।

  1. যাও তোমার java_home\jre\lib\security
  2. ( উইন্ডোজ ) cmdCTRL+ SHIFT+ ব্যবহার করে প্রশাসক কমান্ড লাইনটি খুলুনENTER
  3. শংসাপত্র আমদানি করতে কীটোল চালান:
    • (প্রতিস্থাপন yourAliasNameএবং path\to\certificate.cerযথাক্রমে)

 ..\..\bin\keytool -import -trustcacerts -keystore cacerts -storepass changeit -noprompt -alias yourAliasName -file path\to\certificate.cer

এইভাবে আপনাকে কোনও অতিরিক্ত জেভিএম বিকল্প নির্দিষ্ট করতে হবে না এবং শংসাপত্রটি জেআরই দ্বারা স্বীকৃত হওয়া উচিত।


পথ \ করার \ যা নিশ্চিতভাবে ঘটবে। আমার ফাইলটি যদি ডেস্কটপে থাকে তবে আমি কীভাবে এটির পথে যেতে পারি? সি: / ইউজার / ডেস্কটপ / অথবা ../../../../desktop/filename
জেসি

ম্যাকোস / লিনাক্সে এই কমান্ডটি সুডোর সাথে কাজ করে। ধন্যবাদ। তবে নোপ্রোম্ট পরম কী? আমি এটি ব্যবহার করি নি এবং এখনও সফল হয়েছি।
এভেজেনি মিশুস্তিন

নোট করুন যে জেডিকে বিকাশের জন্য ব্যবহার করার সময় সঠিক পথটি java_home\jdk_x.xx\jre\lib\security একটি নিখুঁত পাথের জন্য ব্যাকস্ল্যাশ ব্যবহার করুন, উদাহরণস্বরূপ "C:\myCert.crt"উদ্ধৃতি চিহ্নগুলি al চ্ছিক, যদি সেই পথটিতে শ্বেত স্পেস থাকে না।
jp-jee

ধন্যবাদ এক মিলিয়ন বার।
ভাইকিংস্টিভ

প্রশ্ন: প্রাইভেট কী কী? আলোচনা ক্লায়েন্ট শংসাপত্র সম্পর্কে। আমার বোধগম্যতা হল যে কোনও একটি ব্যক্তিগত কী দিয়ে একটি সিএসআর তৈরি করা দরকার, তারপরে দূরবর্তী ওয়েবসাইট সংস্থার কাছ থেকে একটি ক্লায়েন্ট শংসাপত্র গ্রহণ করুন এবং তারপরে ক্লায়েন্ট শংসাপত্রটি ব্যক্তিগত কীতে মেলে match আপনার উত্তরটিতে ব্যক্তিগত কী সম্পর্কে কোনও উল্লেখ করা হয়নি বলে মনে হচ্ছে। এমনি জিজ্ঞাসা করছি.
ব্যবহারকারী 2367418

51

একটি নতুন কীস্টোরের মধ্যে প্রোগ্রামারিকভাবে .cer ফাইল আমদানির জন্য আমি যে কোডটি ব্যবহার করছি তা এখানে।

import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
//VERY IMPORTANT.  SOME OF THESE EXIST IN MORE THAN ONE PACKAGE!
import java.security.GeneralSecurityException;
import java.security.KeyStore;
import java.security.cert.Certificate;
import java.security.cert.CertificateFactory;

//Put everything after here in your function.
KeyStore trustStore  = KeyStore.getInstance(KeyStore.getDefaultType());
trustStore.load(null);//Make an empty store
InputStream fis = /* insert your file path here */;
BufferedInputStream bis = new BufferedInputStream(fis);

CertificateFactory cf = CertificateFactory.getInstance("X.509");

while (bis.available() > 0) {
    Certificate cert = cf.generateCertificate(bis);
    trustStore.setCertificateEntry("fiddler"+bis.available(), cert);
}

20

আপনাকে শংসাপত্রের কোনও পরিবর্তন করতে হবে না। আপনি কি নিশ্চিত যে সঠিক আমদানি কমান্ডটি চালাচ্ছেন?

নিম্নলিখিতটি আমার পক্ষে কাজ করে:

keytool -import -alias joe -file mycert.cer -keystore mycerts -storepass changeit

যেখানে mycert.cer রয়েছে:

-----BEGIN CERTIFICATE-----
MIIFUTCCBDmgAwIBAgIHK4FgDiVqczANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE
BhMCVVMxEDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAY
...
RLJKd+SjxhLMD2pznKxC/Ztkkcoxaw9u0zVPOPrUtsE/X68Vmv6AEHJ+lWnUaWlf
zLpfMEvelFPYH4NT9mV5wuQ1Pgurf/ydBhPizc0uOCvd6UddJS5rPfVWnuFkgQOk
WmD+yvuojwsL38LPbtrC8SZgPKT3grnLwKu18nm3UN2isuciKPF2spNEFnmCUWDc
MMicbud3twMSO6Zbm3lx6CToNFzP
-----END CERTIFICATE-----

2
আমি যখন কীস্টোরে অশোধিত শংসাপত্রটি আমদানির চেষ্টা করি তখন আমি "কীটোল ত্রুটি: java.lang.Exception: ইনপুটটি X.509 শংসাপত্র নয়" পাই get আমি আমার পোস্টে যেভাবে বর্ণনা করেছি শংসাপত্রটি সংশোধন করার পরে, আপনার অনুরূপ আদেশের সাথে ত্রুটি ছাড়াই শংসাপত্রটি আমদানি করতে সক্ষম হয়েছি। তবে এটি বিশ্বস্তCertEntry হিসাবে আমদানি করা হয় এবং ওয়েব সার্ভিস অ্যাক্সেস করার সময় ব্যবহার করা হয় না।
জানু-পিটার 15

আপনি দয়া করে কমান্ডটি প্রশ্নের ব্যতিক্রম যুক্ত করতে পারেন? আপনি কি নিশ্চিত যে আপনি নিজের আমদানি কমান্ডে একটি উপনাম নির্দিষ্ট করছেন?
ডগবনে

আপনি যদি উইন্ডোজ ব্যবহার করে থাকেন তবে অ্যাডমিন হিসাবে
সেএমডি

9

একটি ওপেন সোর্স জিইউআই সরঞ্জামটি কীস্টোর- এক্সপ্লোরারআরগে উপলভ্য

কীস্টোর এক্সপ্লোরার

কীস্টোর এক্সপ্লোরার জাভা কমান্ড-লাইন ইউটিলিটিগুলি কীটোল এবং জারসিগনারের জন্য একটি ওপেন সোর্স জিইউআই প্রতিস্থাপন। কীস্টোর এক্সপ্লোরার একটি স্বজ্ঞাত গ্রাফিকাল ব্যবহারকারী ইন্টারফেসের মাধ্যমে তাদের কার্যকারিতা এবং আরও অনেক কিছু উপস্থাপন করে।

নিম্নলিখিত পর্দা সাহায্য করবে (তারা অফিসিয়াল সাইট থেকে)

কমান্ডটি চালিয়ে আপনি যে ডিফল্ট স্ক্রিনটি পান:

shantha@shantha:~$./Downloads/kse-521/kse.sh

এখানে চিত্র বর্ণনা লিখুন

আর ফিরে যেতে Examineএবং Examine a URLবিকল্প এবং তারপর ওয়েব URL আপনি আমদানি করতে চান তা দেব।

আপনি গুগল সাইট লিঙ্ক দিলে ফলাফল উইন্ডো নীচের মত হবে। এখানে চিত্র বর্ণনা লিখুন

এটি ব্যবহারের ক্ষেত্রে একটি এবং বাকীটি ব্যবহারকারীর আপ-আপ (সমস্ত ক্রেডিট কীস্টোর- এক্সপ্লোর.অর্গে যায় )


7

আপনার কাছে ইতিমধ্যে থাকা শংসাপত্রটি সম্ভবত সার্ভারের শংসাপত্র, বা সার্ভারের শংসাপত্রে স্বাক্ষর করতে ব্যবহৃত শংসাপত্র। আপনার এটির প্রয়োজন হবে যাতে আপনার ওয়েব পরিষেবা ক্লায়েন্ট সার্ভারটি প্রমাণীকরণ করতে পারে।

তবে অতিরিক্তভাবে যদি আপনাকে এসএসএলের সাথে ক্লায়েন্ট প্রমাণীকরণ করতে হয় তবে আপনার ওয়েব পরিষেবা ক্লায়েন্টকে প্রমাণীকরণ করার জন্য আপনাকে নিজের শংসাপত্র গ্রহণ করতে হবে। এর জন্য আপনাকে একটি শংসাপত্রের অনুরোধ তৈরি করতে হবে; প্রক্রিয়াটিতে আপনার নিজস্ব ব্যক্তিগত কী এবং সংশ্লিষ্ট পাবলিক কী তৈরি করা এবং শংসাপত্রের অনুরোধ নামক কোনও ফাইলে আপনার কিছু তথ্য (ইমেল, নাম, ডোমেন নাম ইত্যাদি) যুক্ত করে সেই সার্বজনীন কী সংযুক্ত করা হয়। তারপরে আপনি সেই শংসাপত্রের অনুরোধটি সেই সংস্থাকে পাঠিয়েছেন যা ইতিমধ্যে আপনাকে এর জন্য জিজ্ঞাসা করেছে, এবং তারা আপনার সার্টিফিকেট তৈরি করবে, আপনার সরকারী কীটি তাদের ব্যক্তিগত কী দিয়ে স্বাক্ষর করে এবং তারা আপনাকে আপনার শংসাপত্রের সাথে একটি এক্স 509 ফাইল ফেরত পাঠাবে, যা আপনি পারেন এখন আপনার কীস্টোর যুক্ত করুন, এবং আপনি ক্লায়েন্ট প্রমাণীকরণের প্রয়োজন এসএসএল ব্যবহার করে একটি ওয়েব পরিষেবাতে সংযোগ করতে প্রস্তুত।

আপনার শংসাপত্রের অনুরোধ উত্পন্ন করতে, "কীটোল-স্পারট্রিক-বালিয়াস-ফাইল -কাইপাস -কিস্টোর" ব্যবহার করুন। যে ফাইলটি এতে স্বাক্ষর করতে চলেছে তার ফলাফল ফাইলটি প্রেরণ করুন।

আপনি যখন আপনার শংসাপত্রটি ফিরে পেয়েছেন, তখন "কীটোল-ইমপোর্টারসেট-বালিয়াস -কাইপাস-কিস্টোর" চালান।

কীস্টোরটি সুরক্ষিত থাকলে (যা একটি ভাল ধারণা) উভয় ক্ষেত্রে আপনাকে স্টোরপাস ব্যবহার করতে হবে।


5

এখানে একটি স্ক্রিপ্ট যা আমি ব্যাচকে জাভা কীস্টোরের মধ্যে বর্তমান ডিরেক্টরিতে ক্র্যাট ফাইলগুলির একগুচ্ছ আমদানি করতে ব্যবহার করি। আপনার শংসাপত্রের মতো একই ফোল্ডারে এটি সংরক্ষণ করুন এবং এটির মতো চালান:

./import_all_certs.sh

import_all_certs.sh

KEYSTORE="$(/usr/libexec/java_home)/jre/lib/security/cacerts";

function running_as_root()
{
  if [ "$EUID" -ne 0 ]
    then echo "NO"
    exit
  fi

  echo "YES"
}

function import_certs_to_java_keystore
{
  for crt in *.crt; do 
    echo prepping $crt 
    keytool -import -file $crt -storepass changeit -noprompt --alias alias__${crt} -keystore $KEYSTORE
    echo 
  done
}

if [ "$(running_as_root)" == "YES" ]
then
  import_certs_to_java_keystore
else
  echo "This script needs to be run as root!"
fi

1

এটি আমার পক্ষে কীভাবে কাজ করেছে তা এখানে:

  1. টেক্সট সম্পাদকে নিম্নলিখিত বিন্যাসে শংসাপত্রের তথ্য .txt হিসাবে সংরক্ষণ করুন

    ----- শুরু করুন শংসাপত্র ----- [মাইক্রোসফ্ট দ্বারা সিরিয়ালীকৃত ডেটা] ----- শেষ শংসাপত্র -----

  2. ক্রোম ব্রাউজার খুলুন (এই ধাপটি অন্যান্য ব্রাউজারগুলির সাথেও কাজ করতে পারে) সেটিংস> উন্নত সেটিংস দেখান> HTTPS / SSL> শংসাপত্রগুলি পরিচালনা করুন পদক্ষেপ 1 এ .txt আমদানি করুন
  3. বেস--৪ এনকোডযুক্ত ফর্ম্যাটে সেই শংসাপত্রটি নির্বাচন করুন এবং রফতানি করুন। .Cer হিসাবে এটি সংরক্ষণ করুন
  4. এখন আপনি এটি আপনার জাভা কীস্টোরে আমদানি করতে কীটল বা পোর্টটেল ব্যবহার করতে পারেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.