Sertifika içe aktarıldıktan sonra Java Keytool hatası, "keytool hatası: java.io.FileNotFoundException & Erişim Reddedildi"


129

HTTPS aracılığıyla bir Java Web API'ye bağlanmaya çalışıyorum; ancak bir istisna atılır:

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

Çevrimiçi anahtar araç ve SSL sertifika eğitimlerinden öğrendiğim şu adımları takip ettim:

  1. HTTPS URL'sini tarayıcıya kopyaladım, SSL sertifikalarını indirdim ve Internet Explorer kullanarak tarayıcıya yükledim.

  2. Sertifikaları bilgisayarımdaki bir yola aktardım, sertifikalar şu şekilde kaydedildi: .cer

  3. Keytool'un içe aktarma seçeneğini kullandı. Aşağıdaki komut hatasız yürütülmüştür.

    keytool -import -alias downloadedCertAlias -keystore C:\path\to\my\keystore\cacerts.file -file C:\path\of\exportedCert.cer
  4. Girdiğim komut isteminde bir parola girmem istendi, ardından kimlik doğrulaması yapıldı.

  5. cmdPencere Bazı sertifika verilerini & imzalar baskılı ve ben soruyla neden oldu:

    Bu sertifikaya güvenilsin mi?

    Evet dedim.

  6. Cmd istemi görüntülenir

    Anahtar deposuna sertifika eklendi

    Ancak bu mesajdan sonra başka bir istisna gösterildi:

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

Son olarak, anahtar deposunu kontrol ettiğimde, SSL sertifikası eklenmedi ve uygulamam, bağlanmaya çalışırken daha önce aldığım istisnayı veriyor:

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

tam olarak keytoolyürüttüğünüz komutu gönderebilir misiniz ve çıktı? Buradaki bariz sorunlardan bazıları -keystoreargümanın yazım hatası ve keytool'un anahtarı içe aktarmak için anahtar deposunu bulamadığı gerçeğidir
Alex

Yazmak istedim: keytool -import -alias downloadCertAlias ​​-keystore C: \ path \ to \ my \ keystore \ cacerts.file -file C: \ path \ of \ exportedCert.cer Ayrıca komutun hatasız olarak çalıştırıldığından da bahsetmiştim, çok açık ki bu sadece sorumdaki yazım hatası !!! Yine de teşekkürler
cyber101

Yanıtlar:


268

Bu, komut istemini yönetici modunda çalıştırmıyorsanız olabilir. Windows 7 kullanıyorsanız, koşmaya gidebilir, cmd yazabilir ve Ctrl + Shift + enter tuşlarına basabilirsiniz. Bu, komut istemini yönetici modunda açacaktır. Değilse, başlat -> tüm programlar -> aksesuarlar -> komut istemine sağ tıklayıp 'yönetici olarak çalıştır'a da gidebilirsiniz.


9
Mac kullanıcıları için, basit bir sudo bu sorunu çözecektir.
truthful_ness

13
yönetici olarak çalıştırmak doğru çözüm değildir. Çoğu şirket yönetici erişimini engelliyor. Öncelikleri yükseltmektense erişimin neden reddedildiğinin nedenini belirlemek daha iyidir.
skword

cmd yazın ve Ctrl + Shift + enter tuşlarına basın ve sertifikayı başarıyla ekledi
2017'de 5

Teşekkürler. control-shift CMD, cacerts deposunu değiştirebilmemin tek yoluydu.
Malcolm Boekhoff

@Afshar çok teşekkürler, bununla uzun süredir mücadele ediyorum.
Rajan Chauhan

21

Windows altında da aynı sorunu yaşadım ve yönetici olarak cmd.exe'yi çalıştırarak çözebilirdim (başlat menüsünde sağ tıklayın, ardından "Yönetici olarak çalıştır).


19

Sertifikayı yerel anahtar deposunda içe aktarırken de aynı sorunu yaşıyordum. Keytool komutunu her verdiğimde aşağıdaki hatayı aldım.

Anahtar deposu anahtar aracına sertifika eklendi: java.io.FileNotFoundException: C: \ Program Files \ Java \ jdk1.8.0_151 \ jre \ lib \ security (Erişim reddedildi)

Benim için aşağıdaki çözüm çalışması.

1) Rusça'da Yönetici modunda komut istemi çalıştırdığınızdan emin olun.

2) Mevcut dizininizi% JAVA_HOME% \ jre \ lib \ security olarak değiştirin

3) ardından aşağıdaki komutu verin

keytool -import -alias "mycertificatedemo" -file "C: \ Users \ name \ Downloads \ abc.crt" -keystore cacerts

3) şifre değişikliğini verin

4) y girin

5) başarılı bir "Sertifika anahtar deposuna eklendi" mesajını görürsünüz

"C **: \ Program Files \ Java \ jdk1.8.0_151 \ jre \ lib \ security **" gibi tam yolu verdiğim için " cacerts " ı yalnızca -keystore param değerini verdiğinizden emin olun .

Umarım bu işe yarar


1
Burada belirtildiği gibi, aslında varlık içinde güvenlik dizini ve sadece yerine, tam yolunu cert "cacerts" adını veren benim için çalıştı buydu.
YükselenTide

Mac'te ilk adımda kendimi süper kullanıcı yapmak için sudo -i kullandım ve adımları takip ettim ve işe yaradı. Düzeltme dosyasını bir metin dosyası olarak açtım ve adını (veya sertifikayla ilgili herhangi bir şeyi) aramak için f komutunu vererek sertifikamı buldum.
Chigozie A.

11

Anahtar deposunda yazma izinlerini kontrol edin.


2
Birisi bunu genişletebilirse, izinleri kontrol etmek hiçbir şeyi değiştirmez.
user3071284

tomcat dizinini salt okunur olarak ayarlamak bu istisnaya neden olur
svarog

Weite izni nasıl kontrol edilir?
Ahmad Arslan

3

Mac kullanıcıları için, sudo olduğundan emin olun ve istendiğinde önce yönetici şifrenizi verin ve bunu, siz gerçekten değiştirmediğiniz sürece genellikle "changeit" olması gereken anahtar deposu şifresi takip eder.


1

Windows8 kullanıyorsanız:

  1. Başlat düğmesine tıklayın
  2. Arama kutusuna yazın command prompt
  3. Sonuçtan sağ tıklayın command promptve tıklayın Run as administrator. Ardından keytool komutunu yürütün.

1

Bu sorunu çözmek için kendinize izinler verebilirsiniz.

Cacerts'a sağ tıklayın> özellikleri seçin> Securit sekmesini seçin> Tüm Grup ve kullanıcı adlarına tüm izinlere izin ver.

Bu benim için çalıştı.


0

Komut istemini Yönetici olarak bile çalıştırıyorum ancak aşağıdaki hata ile benim için çalışmadı.

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

Anahtar aracına giden yol Sistem yollarınızda değilse, anahtar aracını kullanmak için tam yolu kullanmanız gerekecektir.

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

Yani komut şöyle olmalı

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

benim için çalıştı.


0

Yönetici olarak cmd çalıştırsam bile bu hatayı aldım.

Temel neden şudur: Dosya VCS'den (subversion, perforce, vb.) Ve bu dosyanın özelliklerini kontrol ettiğimde, 'Öznitelikleri Salt Okunur .

Yani çözüm şudur:

  • (1) 'Salt Okunur' Özniteliğini devre dışı bırakın;
  • (2) VCS'den kontrol edin, dosyanın okuma ve yazma durumu altında olmasına izin verin.

-1

ÇÖZÜLDÜ

  1. CMD'yi yönetici olarak çalıştırmanız yeterlidir.
  2. Doğru güvenilir mağaza şifresini kullandığınızdan emin olun

-2

Başka bir diski veya yolu (C değil) depolayabilirsiniz EX: D \

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

görüntü açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.