Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: ZAJDAN 17. 03. 2020, 16:11:58

Název: Jak funguje Java KeyStore?
Přispěvatel: ZAJDAN 17. 03. 2020, 16:11:58
poprvé se setkávám s Java KeyStore .jks
1) mám to chápat jako peněženku na certifikáty?
2) vždy musí být peněženka zamčená heslem?
3) jaké datové typy souborů do toho mohu uložit? 
Název: Re:Java KeyStore
Přispěvatel: czipis 17. 03. 2020, 17:07:53
1) ano pouze na certifikaty a privatni klice
2) musi, ale casto se pouziva default heslo "changeit"
3) viz. 1
Název: Re:Java KeyStore
Přispěvatel: ZAJDAN 17. 03. 2020, 17:12:46
1) ano pouze na certifikaty a privatni klice
2) musi, ale casto se pouziva default heslo "changeit"
3) viz. 1
díky....je tedy možné to využít k uložení .ppk klíče pro SFTP?
Název: Re:Java KeyStore
Přispěvatel: Filip Jirsák 17. 03. 2020, 17:20:30
Je to úložiště certifikátů a privátních klíčů. Neukládají se do toho žádné soubory, jenom certifikáty, veřejné klíče a privátní klíče. Heslo chránící Java Keystore je určené jenom pro ověření integrity dat, k obsahu se ale dostanete i bez něj. Privátní klíče v úložišti jsou ale chráněné svým vlastním heslem. Často se to používá tak, že heslo pro keystore i heslo pro privátní klíče je to stejné, software se vás pak ani neptá na heslo znova.

.ppk je pokud vím formát, který používá Putty. Pokud z něj vyextrahujete klíče, můžete je uložit i do Java KeyStore. Ale proč byste to dělal? Putty s formátem JKS pracovat neumí.
Název: Re:Java KeyStore
Přispěvatel: ZAJDAN 17. 03. 2020, 17:41:42
.ppk je pokud vím formát, který používá Putty. Pokud z něj vyextrahujete klíče, můžete je uložit i do Java KeyStore. Ale proč byste to dělal? Putty s formátem JKS pracovat neumí.
díky za reakci...
- experimentuju s platformou co běží jako webová aplikace v Javě a je tam "adapter" pro spojení na SFTP
- SFTP na které se potřebuji spojit vyžaduje klíč
- v té webové platformě mohu pouze zadat ssl trustStoreURI
a tak řeším jak na to
Název: Re:Java KeyStore
Přispěvatel: Filip Jirsák 17. 03. 2020, 17:46:37
Truststore slouží k uložení důvěryhodných certifikátů (ne klíčů). Takže privátní klíče z .ppk to nebudou. Ovšem v jakém formátu to truststore má být, to z toho jasné není – může to být JKS (může obsahovat i jen důvěryhodné certifikáty, bez klíčů), ale klidně to může být i DER certifikát v binárním kódování nebo v BASE64. Novější Java aplikace už si obvykle umí poradit i s těmito formáty.
Název: Re:Java KeyStore
Přispěvatel: ZAJDAN 17. 03. 2020, 17:51:27
Truststore slouží k uložení důvěryhodných certifikátů (ne klíčů). Takže privátní klíče z .ppk to nebudou. Ovšem v jakém formátu to truststore má být, to z toho jasné není – může to být JKS (může obsahovat i jen důvěryhodné certifikáty, bez klíčů), ale klidně to může být i DER certifikát v binárním kódování nebo v BASE64. Novější Java aplikace už si obvykle umí poradit i s těmito formáty.
ano .jks
Chápu to nyní tedy tak, že tam mohu uložit jen certifikát(der, cer, p12) a né putty/sftp klíče.
I když bych ty klíče zkonvertoval na certifikát, tak se obávám, že tomu zase nebude rozumět SFTP server.
Název: Re:Java KeyStore
Přispěvatel: Filip Jirsák 17. 03. 2020, 18:01:19
Klíč na certifikát nezkonvertujete. Certifikát je veřejný klíč plus další údaje to celé podepsané. JKS ale může obsahovat i klíče (bez certifikátu).

Truststore slouží k uložení důvěryhodných certifikátů (ne klíčů).
Omlouvám se, tohle jsem napsal špatně. Trustore obsahuje to, čemu se má důvěřovat – tedy buď certifikát nebo veřejný klíč. Neobsahuje privátní klíč.

Ta vaše aplikace je SFTP klient? Pak by v trustore měl být veřejný klíč serveru. Ale je mi to trochu divné. Klasické OpenSSH ale místo uložení celého klíče používá jen jeho otisk (to je to, co je uložené v souboru .ssh/known_hosts). Co přesně je to za aplikaci?
Název: Re:Java KeyStore
Přispěvatel: ZAJDAN 17. 03. 2020, 18:11:17
.....
ano máte pravdu...mám i publickey a přes WINSCP se tak spojuji
teď to stejné potřebuji v té Java web plikaci (SAP integrační framework), kde ten adapter na SFTP umožňuje zadat uri k .jks
Název: Re:Jak funguje Java KeyStore?
Přispěvatel: Filip Jirsák 17. 03. 2020, 18:37:31
Při použití SFTP byste měl kontrolovat veřejný klíč serveru – při použití OpenSSH se to dělá pomocí otisku veřejného klíče, dá se kontrolovat i celý klíč. Veřejný klíč může být uložený v trustore. Dále záleží na způsobu přihlášení – můžete se přihlašovat heslem, ale také se můžete přihlašovat privátním klíčem. OpenSSH používá soubor nejčastěji pojmenovaný id_rsa (nebo podobně podle použitého algoritmu, Putty ukládá klíče do souboru s příponou .ppk. V Javě by privátní klíč byl uložen v Java KeyStore.
Název: Re:Jak funguje Java KeyStore?
Přispěvatel: ZAJDAN 17. 03. 2020, 18:57:43
Při použití SFTP byste měl kontrolovat veřejný klíč serveru – při použití OpenSSH se to dělá pomocí otisku veřejného klíče, dá se kontrolovat i celý klíč. ...
ve WinSCP(zde vše valí jak má) v sekci SSH -> Authentication - > Private key file:
mám cestu do složky s privatním klíčem .ppk  , ves tejne složce mám i publickey(rsa)

takže bych měl do keystore vložit tento rsa publickey?
Název: Re:Jak funguje Java KeyStore?
Přispěvatel: ZAJDAN 17. 03. 2020, 19:09:54
napadá mě, že bych mohl ppk převést do pem a ten pak společně s publickey(rsa) zavřít do jks
Název: Re:Jak funguje Java KeyStore?
Přispěvatel: Filip Jirsák 17. 03. 2020, 20:05:07
Private key je privátní klíč pro přihlášení. Ten nemůže být v truststore ale v keystore. Nejde o to náhodně převádět mezi sebou různé formáty souborů, ale musíte vědět, co (jaký obsah) kam patří. Tj. zjistěte, jak se má ověřovat server (zda podle veřejného klíče nebo jeho otisku), a jakým způsobem se budete přihlašovat (zda heslem nebo privátním klíčem).
Název: Re:Jak funguje Java KeyStore?
Přispěvatel: ZAJDAN 17. 03. 2020, 20:28:54
Private key je privátní klíč pro přihlášení. Ten nemůže být v truststore ale v keystore. Nejde o to náhodně převádět mezi sebou různé formáty souborů, ale musíte vědět, co (jaký obsah) kam patří. Tj. zjistěte, jak se má ověřovat server (zda podle veřejného klíče nebo jeho otisku), a jakým způsobem se budete přihlašovat (zda heslem nebo privátním klíčem).
v PuttyKeyGen jsem vygeneroval Public a Private keys.
PublicKey jsem umístil na SFTP server
U sebe na klientovi jsem do jedno složky umístil Private i Public a Private namapoval v konfiguraci WInSCP(SSH Authentication)
z čehož usuzuji že aby winscp navázalo spojení potřebuje v tom adresáři oba klíče
Název: Re:Jak funguje Java KeyStore?
Přispěvatel: Filip Jirsák 17. 03. 2020, 21:00:43
Nikoli, tohle je privátní klíč, který se používá pro autentizaci klienta. Ve WinSCP nastavujete právě cestu k souboru s privátním klíčem. WinSCP veřejný klíč v tom druhém souboru k ničemu nepotřebuje.

Pomocí puttygen vyexportujte ten privátní klíč ve formátu OpenSSH, dostanete soubor s obsahem:
Kód: [Vybrat]
-----BEGIN RSA PRIVATE KEY-----

-----END RSA PRIVATE KEY-----
Předpokládám, že tenhle soubor by vám měl pro připojení z té aplikace stačit. Nevím o žádné knihovně SSH pro Javu, která by pro autentizaci klíčem používala Java KeyStore a ne OpenSSH formát.
Název: Re:Jak funguje Java KeyStore?
Přispěvatel: ZAJDAN 17. 03. 2020, 21:23:17
Předpokládám, že tenhle soubor by vám měl pro připojení z té aplikace stačit. Nevím o žádné knihovně SSH pro Javu, která by pro autentizaci klíčem používala Java KeyStore a ne OpenSSH formát.
Moc děkuji za Vaši ochotu mi pomoct.
Každopádně v té web Java aplikaci je na SFTP adaptéru mimo standardní user, pass, etc...pro klíče pouze možnost:
ssl trustStoreURI  a   ssl trustStorePassword
a tam se mi nedaří tento soubor dostat, lze tam vložit pouze certifikaty. Našel jsem link, kde někdo řeší podobný problém:
https://stackoverflow.com/questions/31385944/how-to-add-ssh-identity-file-keypair-to-jks-keystore (https://stackoverflow.com/questions/31385944/how-to-add-ssh-identity-file-keypair-to-jks-keystore)
Název: Re:Jak funguje Java KeyStore?
Přispěvatel: Filip Jirsák 17. 03. 2020, 22:50:33
Pokud to nemají špatně pojmenované, pak to slouží k něčemu jinému. Asi je tedy možnost používat pouze přihlášení jménem a heslem. Truststore slouží pro uložení certifikátů, kterým důvěřujete – v tomto případě by to tedy mohl být jen veřejný klíč SSH serveru. Privátní klíč do truststore nepatří.
Název: Re:Jak funguje Java KeyStore?
Přispěvatel: ZAJDAN 17. 03. 2020, 23:39:45
Pokud to nemají špatně pojmenované, pak to slouží k něčemu jinému. Asi je tedy možnost používat pouze přihlášení jménem a heslem. Truststore slouží pro uložení certifikátů, kterým důvěřujete – v tomto případě by to tedy mohl být jen veřejný klíč SSH serveru. Privátní klíč do truststore nepatří.
taky mi to celou dobu nšmakovalo ...SFTP a SSL ..to jsem nikdy neviděl
teď jsem si všiml, že tam na tom adapteru je ještě možnost to přepnout na FTPS tak to SSL bude jen pro tento případ

moc díky
Název: Re:Jak funguje Java KeyStore?
Přispěvatel: Standa Blábol 18. 03. 2020, 08:28:07
JKS je jiz dloho nedoporucovany format, primo Oracle doporucuje pouzivat "industry standard" PKCS12.

Jinak pokud mas potiz s tim zadat cestu k JKS truststore, muzes ty svoje veci nacpat naprasaka do defaultni Java truststore, default heslo je "changeit"

A jeste je moznost, najdi si spoustec a pridej k jave commadline parametr -D se specifikaci techto properties:
javax.net.ssl.keyStore = /etc/myapp/keyStore
javax.net.ssl.keyStorePassword = 123456

Treba to zabere, spravna cesta je ale kontaktovat podporu tech SAP matlaku, jak to teda mysleli.
Název: Re:Jak funguje Java KeyStore?
Přispěvatel: Filip Jirsák 18. 03. 2020, 08:48:51
JKS je jiz dloho nedoporucovany format, primo Oracle doporucuje pouzivat "industry standard" PKCS12.
To je ale doporučení pro autory aplikací. Pokud aplikace očekává keystore nebo truststore ve formátu JKS, uživatel s tím nic neudělá.

Jinak pokud mas potiz s tim zadat cestu k JKS truststore, muzes ty svoje veci nacpat naprasaka do defaultni Java truststore, default heslo je "changeit"
Což ale bude fungovat jedině v případě, kdy aplikace výchozí truststore používá.
Název: Re:Jak funguje Java KeyStore?
Přispěvatel: ZAJDAN 18. 03. 2020, 14:41:52
Což ale bude fungovat jedině v případě, kdy aplikace výchozí truststore používá.
v mém případě nepoužívá
Název: Re:Jak funguje Java KeyStore?
Přispěvatel: Vít Šesták (v6ak) 21. 03. 2020, 09:20:59
JKS s prázdným heslem: Teoreticky to možné je, otázka je, jak to pobere která aplikace. Tuším, že to bere i hodnotu null pro JKS bez hesla. https://stackoverflow.com/q/23629246/228114

Private key je privátní klíč pro přihlášení. Ten nemůže být v truststore ale v keystore. Nejde o to náhodně převádět mezi sebou různé formáty souborů, ale musíte vědět, co (jaký obsah) kam patří.

+1

Navíc některé formáty (třeba zmíněný JKS) mohou obsahovat obojí. To pak ale tuplem znamená, že se nelze orientovat jen podle formátu.


Jinak pokud mas potiz s tim zadat cestu k JKS truststore, muzes ty svoje veci nacpat naprasaka do defaultni Java truststore, default heslo je "changeit"

To bych moc nedoporučoval, tím ovlivníte truststore i dalších aplikací. A s trochou nešikovnosti důvěřujete další certifikační „autoritě“.

A jeste je moznost, najdi si spoustec a pridej k jave commadline parametr -D se specifikaci techto properties:
javax.net.ssl.keyStore = /etc/myapp/keyStore
javax.net.ssl.keyStorePassword = 123456

* Asi spíš myslíte trustStore než keyStore, že?
* Přijde mi to jako menší zlo než globální trustStore, ale i tak to může mít vliv i na místech, kde nechcete. Záleží na situaci.