ডিফল্টভাবে সমস্ত জাভা অ্যাপ্লিকেশনগুলির জন্য উপলব্ধ জাভা কীস্টোরগুলিতে কীভাবে একটি স্বাক্ষরিত শংসাপত্রটি সঠিকভাবে আমদানি করবেন?


144

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

এখনও অবধি আমি এটিকে আমদানি করতে পেরেছি

keytool -import -trustcacerts -noprompt -storepass changeit -alias $REMHOST -file $REMHOST.pem
keytool -import -trustcacerts -noprompt -keystore cacerts -storepass changeit -alias $REMHOST -file $REMHOST.pem

তবুও, আমি যখন চালানোর চেষ্টা HTTPSClient.classকরি তখনও পাই:

javax.net.ssl.SSL.andLLandSandException: sun.security. লাডিয়েটার.ভিডিয়েটার ধারণা

আমি অগত্যা এই কোড উপর নির্ভর করতে হবে না। জিনিসগুলি Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider())প্রথম অংশে সম্পূর্ণ অপ্রয়োজনীয়। দ্বিতীয়টি কোনও শংসাপত্র যাচাই করে না। URLConnectionশুরু করার জন্য একটি সমতল দিয়ে চেষ্টা করুন । আপনি কি নিশ্চিতরূপে পরিবর্তিত করে থাকেন cacertsমধ্যে lib/securityআপনার JRE ইনস্টলেশন? আপনি কি trustmanagerডিবাগিং বিকল্পটি ব্যবহার করে দেখেছেন ?
ব্রুনো

উত্তর:


225

উইন্ডোজে সবচেয়ে সহজ উপায় হল প্রোগ্রামটির কর্টেল ব্যবহার করা ।

  1. পোর্টেল ডাউনলোড করুন এবং ইনস্টল করুন।
  2. প্রথমে 100% নিশ্চিত করুন যে আপনার প্রোগ্রামটি চালাতে কোন জেআরই বা জেডিকে ব্যবহার করা হচ্ছে তা আপনি জানেন। একটি 64 বিট উইন্ডোজ 7 এ বেশ কয়েকটি জেআরই থাকতে পারে। প্রক্রিয়া এক্সপ্লোরার এটিতে আপনাকে সহায়তা করতে পারে বা আপনি এটি ব্যবহার করতে পারেন:System.out.println(System.getProperty("java.home"));
  3. JAVA_Home \ lib \ সুরক্ষা \ সিসারেটস ফাইলটি অন্য ফোল্ডারে অনুলিপি করুন।
  4. পোর্টটেকলে ফাইল> ক্লিক করুন কীস্টোর ফাইল
  5. ক্যাসার্টস ফাইলটি নির্বাচন করুন
  6. এই পাসওয়ার্ডটি লিখুন: পরিবর্তন
  7. সরঞ্জামগুলি> বিশ্বস্ত শংসাপত্র আমদানি ক্লিক করুন
  8. Mycertificate.pem ফাইলটির জন্য ব্রাউজ করুন
  9. আমদানি ক্লিক করুন
  10. বিশ্বাসের পথ সম্পর্কে সতর্কতার জন্য ওকে ক্লিক করুন।
  11. যখন এটি শংসাপত্র সম্পর্কে বিশদ প্রদর্শন করে ঠিক আছে ক্লিক করুন।
  12. শংসাপত্রটিকে বিশ্বস্ত হিসাবে গ্রহণ করতে হ্যাঁ ক্লিক করুন।
  13. যখন এটি কোনও উপনামের জন্য জিজ্ঞাসা করে ঠিক আছে ক্লিক করুন এবং আবার এটি ওকে ক্লিক করুন যখন এটি বলে যে এটি শংসাপত্রটি আমদানি করেছে।
  14. সংরক্ষণ ক্লিক করুন। এটি ভুলবেন না বা পরিবর্তন বাতিল করা হয়।
  15. আপনি যেখানে এটি পেয়েছেন সেখানে ফাইলের ক্যাসার্টগুলি অনুলিপি করুন।

লিনাক্সে:

আপনি ওয়েব সার্ভার থেকে এসএসএল শংসাপত্রটি ডাউনলোড করতে পারেন যা ইতিমধ্যে এটি এর মতো ব্যবহার করছে:

$ echo -n | openssl s_client -connect www.example.com:443 | \
   sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/examplecert.crt

Certificateচ্ছিকভাবে শংসাপত্রের তথ্য যাচাই করুন:

$ openssl x509 -in /tmp/examplecert.crt -text

জাভা ক্যাসর্ট কীস্টোরে শংসাপত্রটি আমদানি করুন:

$ keytool -import -trustcacerts -keystore /opt/java/jre/lib/security/cacerts \
   -storepass changeit -noprompt -alias mycert -file /tmp/examplecert.crt

1
এ থেকে মূল ধারণাটি কর্টেল্কেল নয় বরং সঠিক কীস্টোরে শংসাপত্রগুলি আমদানি করা।
আলফাব্রভো

এটি কাজ করেছিল, তবে আমার জাভা ছিল এক অন্য জায়গায়। আমার কীস্টোরটি / usr / lib / jvm / java-openjdk / jre / lib / security / cacerts এ অবস্থিত যা আমি জানতে পেরেছিলাম যে ps -ef | grep javaআমার জাভা / usr / lib / jvm / java-openjdk / এ অবস্থিত ওপেনডেডি থেকে চলছে me বিন / জাভা। এছাড়াও, যদি এটি কোনও ওয়েবঅ্যাপের জন্য পুনরায় আরম্ভ করার কথা মনে করে। সাহায্যের জন্য ধন্যবাদ!!
কোডজিলা

7
আমি কর্টেল ব্যবহার করিনি, তবে আমি পেয়েছি যে কীস্টোর এক্সপ্লোরার উইন্ডোজ, লিনাক্সের জন্য বেশ ভাল কাজ করে (এবং এটি
ওএসএক্সেও

সত্যিই খুব সহায়ক। 2 খুব গুরুত্বপূর্ণ বিষয় এখানে হাইলাইট করা। একটি হ'ল সঠিক কীস্টোরে আমদানি করা। এবং আর একটি হ'ল ওয়েবসভারের ক্ষেত্রে পুনরায় চালু করা নিশ্চিত করা।
sdm

6
2019-এ, আমরা লেটস এনক্রিপ্ট
ফেরিবিগ

41
    D:\Java\jdk1.5.0_10\bin\keytool -import -file "D:\Certificates\SDS services\Dev\dev-sdsservices-was8.infavig.com.cer" -keystore "D:\Java\jdk1.5.0_10\jre\lib\security\cacerts" -alias "sds certificate"

12
আপনাকে কীস্টোর পাসওয়ার্ডের জন্য অনুরোধ জানানো হবে, ডিফল্টটি হ'ল "চেঞ্জিট"
গিলবার্ট অ্যারেনাস ডাগার

34

আমি একটি ছোট স্ক্রিপ্ট লিখে শেষ করেছি যা কীস্টোরগুলিতে শংসাপত্র যুক্ত করে, তাই এটি ব্যবহার করা আরও সহজ।

আপনি https://github.com/ssbarnea/keytool-trust থেকে সর্বশেষতম সংস্করণটি পেতে পারেন

#!/bin/bash
# version 1.0
# https://github.com/ssbarnea/keytool-trust
REMHOST=$1
REMPORT=${2:-443}

KEYSTORE_PASS=changeit
KEYTOOL="sudo keytool"

# /etc/java-6-sun/security/cacerts

for CACERTS in  /usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts \
    /usr/lib/jvm/java-7-oracle/jre/lib/security/cacerts \
    "/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/security/cacerts" \
    "/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/MacOS/itms/java/lib/security/cacerts"
do

if [ -e "$CACERTS" ]
then
    echo --- Adding certs to $CACERTS

# FYI: the default keystore is located in ~/.keystore

if [ -z "$REMHOST" ]
    then
    echo "ERROR: Please specify the server name to import the certificatin from, eventually followed by the port number, if other than 443."
    exit 1
    fi

set -e

rm -f $REMHOST:$REMPORT.pem

if openssl s_client -connect $REMHOST:$REMPORT 1>/tmp/keytool_stdout 2>/tmp/output </dev/null
        then
        :
        else
        cat /tmp/keytool_stdout
        cat /tmp/output
        exit 1
        fi

if sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' </tmp/keytool_stdout > /tmp/$REMHOST:$REMPORT.pem
        then
        :
        else
        echo "ERROR: Unable to extract the certificate from $REMHOST:$REMPORT ($?)"
        cat /tmp/output
        fi

if $KEYTOOL -list -storepass ${KEYSTORE_PASS} -alias $REMHOST:$REMPORT >/dev/null
    then
    echo "Key of $REMHOST already found, skipping it."
    else
    $KEYTOOL -import -trustcacerts -noprompt -storepass ${KEYSTORE_PASS} -alias $REMHOST:$REMPORT -file /tmp/$REMHOST:$REMPORT.pem
    fi

if $KEYTOOL -list -storepass ${KEYSTORE_PASS} -alias $REMHOST:$REMPORT -keystore "$CACERTS" >/dev/null
    then
    echo "Key of $REMHOST already found in cacerts, skipping it."
    else
    $KEYTOOL -import -trustcacerts -noprompt -keystore "$CACERTS" -storepass ${KEYSTORE_PASS} -alias $REMHOST:$REMPORT -file /tmp/$REMHOST:$REMPORT.pem
    fi

fi

done

``


18

এটি আমার পক্ষে কাজ করেছে। :)

sudo keytool -importcert -file filename.cer -alias randomaliasname -keystore $ জাভাআহোম / জেআর / লিবিব / সুরক্ষা / ক্যাশেটারস-স্টোরপাস পরিবর্তন 

4

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

  1. উইন্ডোজ এক্সপ্লোরার খুলুন এবং ক্যা্যাসার্টস ফাইলে নেভিগেট করুন, এটি স্যাক্সেস সাবফোল্ডারে যেখানে এক্স কোর ক্লায়েন্ট ইনস্টল আছে সেখানে অবস্থিত। ডিফল্ট অবস্থানটি সি: \ প্রোগ্রাম ফাইলগুলি \ এসিএল সফ্টওয়্যার \ এক্স কোর ক্লায়েন্ট re জেরে \ লিবিব \ সুরক্ষা
  2. কোনও পরিবর্তন করার আগে ফাইলটির একটি ব্যাকআপ কপি তৈরি করুন।
  3. আপনি যে শংসাপত্র কর্তৃপক্ষটি ব্যবহার করছেন তা থেকে প্রাপ্ত শংসাপত্রগুলির উপর নির্ভর করে আপনাকে ক্যাসের্টস ফাইলে একটি মধ্যবর্তী শংসাপত্র এবং / অথবা রুট শংসাপত্র আমদানির প্রয়োজন হতে পারে। শংসাপত্রগুলি আমদানি করতে নিম্নলিখিত সিনট্যাক্সটি ব্যবহার করুন: কীটোল-ইম্পোর্ট-বালিয়াস-কিস্টোর-স্ট্রাস্টসেসার্টস-ফাইল
  4. আপনি যদি উভয় শংসাপত্র আমদানি করে থাকেন তবে প্রতিটি শংসাপত্রের জন্য নির্দিষ্ট করা উপনামটি অনন্য হওয়া উচিত।
  5. কীস্টোরের জন্য "পাসওয়ার্ড" প্রম্পটে পাসওয়ার্ড টাইপ করুন এবং এন্টার টিপুন। ক্যাসার্টস ফাইলের জন্য ডিফল্ট জাভা পাসওয়ার্ড হ'ল "পরিবর্তন"। "এই শংসাপত্রের উপর বিশ্বাস করুন" এ 'y' টাইপ করুন? প্রম্পট করুন এবং এন্টার টিপুন।

এই আদেশটি ব্যবহার করুন: -> কীটোল-আমদানি-বালিয়াস <বালিয়াস> -কিস্টোর <কেসার্টস_ফায়াল> -টাসটক্যাসার্টস -ফিল <সার্টিফিকেট_ফিলনাম>
ভারত দারাখ

1

সাধারণ কমান্ড 'কীটল' উইন্ডোজ এবং / অথবা সাইগউইনের সাথেও কাজ করে।

আপনি যদি সাইগউইনটি এখানে ব্যবহার করছেন তবে আমি "এস বোথার" উত্তরটির নীচ থেকে যে পরিবর্তিত আদেশটি ব্যবহার করেছি:

  1. নিশ্চিত হয়ে নিন যে আপনি জেডিকে ব্যবহার করছেন সেই অভ্যন্তরের জেআরই সনাক্ত করুন
  2. প্রশাসক হিসাবে আপনার প্রম্পট / সাইগউইন শুরু করুন
  3. সেই জেডিকে যেমন বিন সিডির / সিগড্রাইভ / সি / প্রোগ্রামের বাইন ডিরেক্টরিতে যান d ফাইল / জাভা / jdk1.8.0_121 / জেআর / বিন
  4. এর ভিতর থেকে কীটল কমান্ডটি কার্যকর করুন, যেখানে আপনি আপনার নতুন সার্টের শেষে একটি পথ সরবরাহ করেন, এর মতো:

    ./keytool.exe -import -trustcacerts -keystore ../lib/security/cacerts  -storepass changeit -noprompt -alias myownaliasformysystem -file "D:\Stuff\saved-certs\ca.cert"

লক্ষ্য করুন, কারণ এটি যদি সাইগউইনের অধীনে থাকে তবে আপনি একটি নন-সাইগউইন প্রোগ্রামকে একটি পথ দিচ্ছেন, সুতরাং পথটি ডস-এর মতো এবং উদ্ধৃতিতে।


0

চেষ্টা করতে পারেন

keytool -import -trustcacerts -noprompt -keystore <full path to cacerts> -storepass changeit -alias $REMHOST -file $REMHOST.pem

আমার সৎতার সাথে কোনও ধারণা নেই যে এটি আপনার শংসাপত্রটি কোথায় রাখে যদি আপনি কেবল লিখেন তবে cacertsএটি একটি পুরো পথ দিন


0

জাভা লিনাক্সে শংসাপত্র ইনস্টল করুন

/ opt / jdk (সংস্করণ) / বিন / কীটোল -Import -alias নাম - ফাইল ফাইলের শংসাপত্র


0
fist get the certificate from the provider
create a file ends wirth .cer and pase the certificate

copy the text file or  past   it  somewhere you can access it 
then use the cmd prompt as an admin and cd to the bin of the jdk,
the cammand that will be used is the:  keytool 

change the  password of the keystore with :

keytool  -storepasswd -keystore "path of the key store from c\ and down"

the password is : changeit 
 then you will be asked to enter the new password twice 

then type the following :

keytool -importcert -file  "C:\Program Files\Java\jdk-13.0.2\lib\security\certificateFile.cer"   -alias chooseAname -keystore  "C:\Program Files\Java\jdk-13.0.2\lib\security\cacerts"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.