प्रमाण पत्र आयात करने के बाद जावा Keytool त्रुटि, "keytool त्रुटि: java.io.FileNotFoundException और Access अस्वीकृत"


128

मैं HTTPS के माध्यम से एक जावा वेब एपीआई को जोड़ने की कोशिश कर रहा हूं; हालाँकि, एक अपवाद फेंका गया है:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException

मैंने इन चरणों का पालन किया, जो मैंने ऑनलाइन केटूल और एसएसएल प्रमाणित ट्यूटोरियल से सीखे:

  1. मैंने ब्राउज़र में HTTPS URL की प्रतिलिपि बनाई, SSL प्रमाणपत्र डाउनलोड किए और उन्हें इंटरनेट एक्सप्लोरर का उपयोग करके ब्राउज़र में इंस्टॉल किया।

  2. प्रमाणपत्रों को मेरे कंप्यूटर पर पथ पर निर्यात किया गया, प्रमाणपत्रों को सहेज लिया गया .cer

  3. Keytool के आयात विकल्प का उपयोग किया। नीचे दिए गए आदेश को बिना किसी त्रुटि के निष्पादित किया गया है।

    keytool -import -alias downloadedCertAlias -keystore C:\path\to\my\keystore\cacerts.file -file C:\path\of\exportedCert.cer
  4. मुझे कमांड प्रॉम्प्ट पर एक पासवर्ड के लिए कहा गया था, जो मैंने दर्ज किया था तब मैं प्रमाणित किया गया था।

  5. cmdखिड़की कुछ प्रमाण पत्र डेटा और हस्ताक्षर मुद्रित और मैं प्रश्न के साथ संकेत दिया गया था:

    इस प्रमाणपत्र पर भरोसा करें?

    मैंने हां में जवाब दिया।

  6. Cmd शीघ्र प्रदर्शित

    प्रमाणपत्र कीस्टोर में जोड़ा गया था

    हालाँकि उस संदेश के बाद, एक और अपवाद प्रदर्शित किया गया था:

    keytool error: java.io.FileNotFoundException: C:\Program files\...\cacerts <Access Denied>

अंत में जब मैंने कीस्टोर की जाँच की, तो एसएसएल सर्टिफिकेट नहीं जोड़ा गया था और मेरा आवेदन वही अपवाद देता है जो मुझे कनेक्ट करने का प्रयास करते समय पहले मिल रहा था:

(javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException)

क्या आप उस सटीक keytoolकमांड को पोस्ट कर सकते हैं जिसे आपने निष्पादित किया है, और यह आउटपुट है? यहाँ स्पष्ट मुद्दों में से कुछ -keystoreतर्क के टाइपो हैं , और तथ्य यह है कि कीटल को कुंजी को आयात करने में असमर्थ पाया गया था
एलेक्स

मेरा लिखने का मतलब था: keytool -import -alias downloadCertAlias ​​-keystore C: \ path \ to \ my \ keystore \ cacerts.file -file C: \ path \ of \ ExportCert .cer मैंने भी त्रुटियों के बिना निष्पादित कमांड का उल्लेख किया है, इसलिए स्पष्ट रूप से यह सिर्फ मेरे सवाल में वर्तनी की गलती है !!! वैसे भी धन्यवाद
cyber101

जवाबों:


267

यह तब हो सकता है जब आप व्यवस्थापक मोड में कमांड प्रॉम्प्ट नहीं चला रहे हैं। यदि आप विंडोज 7 का उपयोग कर रहे हैं, तो आप चलाने के लिए जा सकते हैं, cmd टाइप करें और Ctrl + Shift + एंटर दबाएं। यह एडमिनिस्ट्रेटर मोड में कमांड प्रॉम्प्ट खोलेगा। यदि नहीं, तो आप शुरू करने के लिए भी जा सकते हैं -> सभी प्रोग्राम -> सामान -> राइट क्लिक कमांड प्रॉम्प्ट और 'रन ऐज़ एडमिनिस्ट्रेटर' पर क्लिक करें।


9
मैक उपयोगकर्ताओं के लिए, एक साधारण sudo इस समस्या को ठीक करेगा।
सत्यवादी_

13
व्यवस्थापक के रूप में चलाना सही समाधान नहीं है। ज्यादातर कंपनियां एडमिन एक्सेस को लॉक कर रही हैं। इस कारण को ठीक करने के लिए बेहतर है कि क्यों प्रचलित को ऊंचा करने के बजाय पहुंच से इनकार किया गया है।
स्कोर्ड

cmd टाइप करें और Ctrl + Shift + एंटर करें और सफलतापूर्वक सर्टिफिकेट
जोड़े-

धन्यवाद। नियंत्रण-शिफ्ट सीएमडी ही एकमात्र तरीका था जिससे मैं कैसर्ट स्टोर को बदल सकता था।
माल्कॉम बोकेहॉफ

@Afshar बहुत बहुत धन्यवाद मैं काफी लंबे समय से इससे जूझ रहा था।
राजन चौहान

21

मुझे विंडोज के तहत एक ही समस्या थी और इसे cmd.exe को व्यवस्थापक के रूप में चलाकर हल किया जा सकता था (प्रारंभ मेनू में राइट-क्लिक करें, फिर "व्यवस्थापक के रूप में चलाएँ)।


19

स्थानीय कीस्टॉर में प्रमाण पत्र आयात करते समय मुझे यही समस्या थी। जब भी मैं keytool कमांड जारी करता हूं, मुझे निम्नलिखित त्रुटि मिली।

प्रमाणपत्र को कीस्टोर कीटल त्रुटि में जोड़ा गया था: java.io.FileNotFoundException: C: \ Program Files \ Java \ jdk1.8.0_151 \ jre \ lib \ Security (प्रवेश निषेध है)

मेरे लिए समाधान के बाद काम।

1) सुनिश्चित करें कि आप प्रशासक मोड में रस में कमांड प्रॉम्प्ट चला रहे हैं

2) अपनी वर्तमान निर्देशिका को% JAVA_HOME% \ jre \ lib \ Security में बदलें

3) फिर नीचे कमांड जारी करें

keytool -import -alias "mycertificatedemo" -file "C: \ Users \ name \ download \ abc.crt" -स्टिस्टोर कैसर्ट

3) पासवर्ड चेंज करें

4) वाई दर्ज करें

5) आप सफल पर निम्न संदेश देखेंगे "प्रमाणपत्र कीस्टोर में जोड़ा गया था"

सुनिश्चित करें कि आप " cacerts " को केवल -Stystore param value दे रहे हैं , क्योंकि मैं "C **: \ Program Files \ Java \ jdk1.8.0_151 \ jre \ lib \ Security **" जैसे पूर्ण पथ दे रहा था।

उम्मीद है कि यह काम करेगा


1
जैसा कि यहां बताया गया है, वास्तव में सुरक्षा निर्देशिका में होने के नाते और केवल पूर्ण पथ के बजाय प्रमाण पत्र के "कैसर्ट" नाम देने से मुझे क्या फायदा हुआ।
उदय

मैंने मैक पर पहले चरण में खुद को सुपरयुसर बनाने के लिए सुडो-आई का इस्तेमाल किया और चरणों का पालन किया और यह काम किया। मैंने एक टेक्स्ट फ़ाइल के रूप में कैरेट्स फ़ाइल खोली और अपने नाम (या प्रमाणपत्र से संबंधित कुछ और) की खोज करने के लिए कमांड एफ करके अपना प्रमाणपत्र पाया।
चिगोजी ए।

11

कीस्टोर पर लिखने की अनुमति जांचें।


2
अगर कोई भी इस पर विस्तार कर सकता है, तो बस अनुमतियों की जांच करने से कुछ भी नहीं बदलेगा।
14:30 बजे user3071284

केवल पढ़ने के लिए टॉमकट निर्देशिका की स्थापना इस अपवाद का कारण
svarog

वीट अनुमति को कैसे चबाएं?
अहमद अर्सलान

3

मैक उपयोगकर्ताओं के लिए sudo करना सुनिश्चित करें और जब संकेत दिया जाए कि पहले अपना एडमिनिस्ट्रेटर पासवर्ड दें और उसके बाद कीस्ट्रोर पासवर्ड दिया जाएगा जो आम तौर पर "चेंज" होना चाहिए जब तक कि आप वास्तव में इसे नहीं बदलते।


1

यदि आप windows8 का उपयोग कर रहे हैं:

  1. स्टार्ट बटन पर क्लिक करें
  2. खोज बॉक्स में, टाइप करें command prompt
  3. परिणाम से, राइट-क्लिक करें command promptऔर क्लिक करें Run as administrator। फिर keytool कमांड निष्पादित करें।

1

आप इस समस्या को ठीक करने के लिए खुद को अनुमति दे सकते हैं।

कैसर्ट पर राइट क्लिक करें> गुण चुनें> सेक्यूरिट टैब चुनें> सभी ग्रुप और यूजर नेम को सभी अनुमति दें।

इसने मेरे लिए काम किया।


0

मैं भी प्रशासक के रूप में कमांड प्रॉम्प्ट चलाता हूं, लेकिन यह नीचे की त्रुटि के साथ मेरे लिए काम नहीं करता था।

'keytool' is not recognized as an internal or external command,
 operable program or batch file.

यदि आपके सिस्टम पथ में keytool का पथ नहीं है, तो आपको keytool का उपयोग करने के लिए पूर्ण पथ का उपयोग करने की आवश्यकता होगी, जो है

C:\Program Files\Java\jre<version>\bin

तो, कमांड की तरह होना चाहिए

"C:\Program Files\Java\jre<version>\bin\keytool.exe" -importcert -alias certificateFileAlias -file CertificateFileName.cer -keystore cacerts

मेरे लिए काम किया।


0

मुझे यह त्रुटि मिली यहां तक ​​कि मैंने cmd को एक प्रशासक के रूप में चलाया।

मूल कारण यह है: फ़ाइल VCS (तोड़फोड़, कार्यबल, आदि) से है, और जब मैंने इस फ़ाइल के गुणों की जांच की, तो इसकी 'विशेषताएँ केवल-पढ़ें ' है ।

तो समाधान है:

  • (1) 'केवल पढ़ने के लिए' विशेषता को अक्षम करें;
  • (2) VCS से जांच लें, फ़ाइल को पढ़ने और लिखने की स्थिति के तहत बताएं।

-1

हल किया

  1. बस CMD को व्यवस्थापक के रूप में चलाएं।
  2. सुनिश्चित करें कि आपका सही ट्रस्टस्टोर पासवर्ड का उपयोग कर रहा है

-2

आप ओथर डिस्क या पथ (सी नहीं) को स्टोर कर सकते हैं

C:\Program Files\Java\jre1.8.0_101\bin>keytool -genkey -alias server -keyalg RSA -keysize 2048 -keystore D:\myserver.jks -dname "CN=myserver,OU=IT-WebDev, O=TIACHOP, L=HCM, ST=0753, C=VN" && keytool -certreq -alias server -file D:\myserver.csr -keystore D:\myserver.jks

यहाँ छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.