# java keytool fehler (Linux)



## purzel (25. Dez 2010)

Hallo,

ich wollte mir gerade ein Archiv signieren (für Applets) Das erstellen mit 


```
keytool -genkey -alias Signer -dname "cn=Purzel,c=at"
Enter key store password: ***
Enter key password for <Signer>: ***
```

ging, aber folgendes ging nicht, ich hoffe es kann mir jemand helfen!


```
keytool -selfcert -validity 3650 -alias Signer -dname "cn=Purzel,c=at"
Enter key store password: ***
keytool error: java.lang.IllegalStateException: not encrypted
```

LG Purzel


----------



## tagedieb (26. Dez 2010)

Eventuel ist dein 
	
	
	
	





```
~/.keystore
```
 corrupt oder kann nicht mehr gelesen werden.

Loesche es und generiere nur dein Zertifikat mit -seftcert. Den Key wird dabei automatisch erzeugt und braucht nicht vorher generiert zu werden.


----------



## purzel (26. Dez 2010)

tagedieb hat gesagt.:


> Eventuel ist dein
> 
> 
> 
> ...



Wenn ich das mache bekomme ich nur folgenden Fehler:


```
keytool error: java.io.FileNotFoundException: ~/.keystore (Datei oder Verzeichnis nicht gefunden)
```

€dit: was mir noch aufgefallen ist, ist dass das File ~/.keystore leer ist! Ist das normal?

LG Purzel


----------



## tagedieb (26. Dez 2010)

Nein, wenn dein Keystore leer ist solle er eine Groesse von ca. 32 bytes haben.

Wenn du das .keystore file geloescht hast sollte beim generieren eines neuen Zertifikats ein neuer KeyStore angelegt werden. Du wirst nach einem Passwort gefragt.

Falls dies nicht funktioniert, solltes du mal die Schreibberechtigungen deines Accounts und deines Homedirectories ueberpruefen. Alternativ versuche mal den 
	
	
	
	





```
-keystore /path/to/your/.keystore
```
 Parameter zusaetzlich anzugeben um einen anderen Keystore anzulegen/zu verwenden.


----------



## purzel (26. Dez 2010)

tagedieb hat gesagt.:


> Nein, wenn dein Keystore leer ist solle er eine Groesse von ca. 32 bytes haben.
> 
> Wenn du das .keystore file geloescht hast sollte beim generieren eines neuen Zertifikats ein neuer KeyStore angelegt werden. Du wirst nach einem Passwort gefragt.
> 
> ...



Ok habe es mit dem -keystore probiert, da kommt eine Datei raus mit Inhalt (1,5 kb). Allerdings wird der Inhalt nach -selfcert gelöscht ???:L

Und wenn ich nur das Zertifikat anlege kommt wie oben beschrieben der Fehler ;(


----------



## tagedieb (26. Dez 2010)

Purzel hat gesagt.:
			
		

> Allerdings wird der Inhalt nach -selfcert gelöscht



Kannst du den Keystore immer noch auslesen 
	
	
	
	





```
keytool -list [-keystore /path/to/your/.keystore]
```
 ? Oder ist die Filegroesse 0 bytes?

Welche Java distribution/version verwendest du? SUN Java? OpenJava?

Eventuel ist dies ein Bug in deinem keytool. 

Ich kanns im moment nur mit meinem Windows System testen und damit funktionierts tadellos. Du kannst ja mal versuchen das Zertifikat auf einem andern System mit einem andern 
	
	
	
	





```
keytool
```
 zu generieren und dann kopierst du die Datei auf dein Linux System.


----------



## purzel (26. Dez 2010)

bei 
	
	
	
	





```
keytool -list
```
 kommt folgendes raus:


```
keytool -list
Enter key store password: ***
Key store type: gkr
Key store provider: GNU-CRYPTO

Key store contains 1 entry(ies)

Alias name: Signer
Creation timestamp: Sonntag, 26. Dezember 2010 - 14:06:07 Uhr GMT+01:00
Entry type: key-entry
Certificate fingerprint (MD5): 0A:84:74:DB:D3:1A:7B:41:68:10:B3:64:C0:07:9E:7C
```

Ich benutze Sun Java (jdk1.6.0_23)!

Habe leider kein anderes System mit dem ich das testen könnte...


----------



## tagedieb (26. Dez 2010)

Nanu, soweit sieht ja alles gut aus.

Wenn du nun auch das Certificat auslesen kannst sollte (trotz der Fehlermeldung) alles in Ordnung sein.


```
keytool -exportcert -alias Signer -rfc
```


```
Key store type: gkr
```
 kenne ich nicht. Falls du immer noch Probleme hast koenntest ja mal veruschen eine JKS Keystore zu verwenden. Den alten Keystore loeschen oder unter einem anderen namen einen neuen anlegen. Zusaetzlich 
	
	
	
	





```
-storetype JKS
```
 angeben,


----------



## purzel (26. Dez 2010)

```
keytool -exportcert -alias Signer -rfc
```


```
-exportcert
```
 kennt er nicht, aber 
	
	
	
	





```
-export
```
 geht! Da kommt dann sowas raus:


```
keytool -export -alias Signer -rfc
Enter key store password: ***
-----BEGIN CERTIFICATE-----
MIICcTCCAi+gAwIBAAIBATAJBgcqhkjOOAQDMB4xDzANBgNVBAMMBlB1cnplbDELMAkGA1UE
BgwCYXQwHhcNMTAxMjI2MTMwNjA3WhcNMTEwMzI2MTMwNjA3WjAeMQ8wDQYDVQQDDAZQdXJ6
ZWwxCzAJBgNVBAYMAmF0MIIBuDCCASwGByqGSM44BAEwggEfAoGBAP1/U4EddRIpUt9KnC7s
5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVCl
pJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iID
GZ3RSAHHAhUAl2BQjxUjC8yykrmCouuEC/BYHPUCgYEA9+GghdabPd7LvKtcNrhXuXmUr7v6
OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOu
HiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoD
gYUAAoGBAItLTdROL5ooaWQE/+tGSpybdZnRd33tnqGCSlZ3plbhzI6+4Jk9fPfQoAA0DbZT
jFtJ8JhqKdU1ah+vx8n41i8ICag2xIIQiv8A4k+XLJTNkXtwjvbi9ivkNO6fBpR38LO5iicT
VmU/vuReVoN0Sc00v1PU8pPegvdaLINe2rJpMAkGByqGSM44BAMDMQAwLgIVAIDOvkr44LPy
TQVDYQ3pYgyjiSDpAhUAliWJ99G4bQtM0YDJQFfULnV5kG0=

-----END CERTIFICATE-----
```

soweit so gut, aber beim key store typ jks kommt:


```
keytool error: java.security.KeyStoreException: JKS
```

???:L

*€dit:*

habe mir gerade eine andere Version vom jdk heruntergeladen, entpackt, installiert und danach noch mal die beiden vorgänge ausgeführt aus meinem ersten Post. Bis jetzt keine Fehler! - OK, auch die verifizierung hat geklappt, Applet läuft wunderbar mit Zertifikat und macht keine Probleme, Danke für den Tipp mit dem fehlerhaften JDK!


----------

