Jak funguje Java KeyStore?

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Jak funguje Java KeyStore?
« kdy: 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? 
« Poslední změna: 17. 03. 2020, 17:56:03 od Petr Krčmář »
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.


czipis

  • ***
  • 225
    • Zobrazit profil
    • E-mail
Re:Java KeyStore
« Odpověď #1 kdy: 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

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Re:Java KeyStore
« Odpověď #2 kdy: 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?
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

Re:Java KeyStore
« Odpověď #3 kdy: 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í.

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Re:Java KeyStore
« Odpověď #4 kdy: 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
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.


Re:Java KeyStore
« Odpověď #5 kdy: 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.

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Re:Java KeyStore
« Odpověď #6 kdy: 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.
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

Re:Java KeyStore
« Odpověď #7 kdy: 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?

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Re:Java KeyStore
« Odpověď #8 kdy: 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
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

Re:Jak funguje Java KeyStore?
« Odpověď #9 kdy: 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.

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Re:Jak funguje Java KeyStore?
« Odpověď #10 kdy: 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?
« Poslední změna: 17. 03. 2020, 18:59:25 od ZAJDAN »
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Re:Jak funguje Java KeyStore?
« Odpověď #11 kdy: 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
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

Re:Jak funguje Java KeyStore?
« Odpověď #12 kdy: 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).

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Re:Jak funguje Java KeyStore?
« Odpověď #13 kdy: 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
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

Re:Jak funguje Java KeyStore?
« Odpověď #14 kdy: 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.