Autor Téma: Certifikát ako zdroj licenčných údajov  (Přečteno 950 krát)

Online Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4584
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Certifikát ako zdroj licenčných údajov
« Odpověď #15 kdy: 24-06-2019, 19:06:46 »
To pdf1957 - nech robím akékoľvek konverzie, okrem ansi a spol., tak stále dostávam rovnaký a žiaľ aj nesprávny výsledok.
To miroB
Citace
Teda unicodeString sa vopred prevedie na TBytes
V živote som nič také nerobil, takže netuším ako na to ??? 
Oni to všetko ženú, viac krát, cez Bytes a buffer.
Najviac ma zarazilo, že hneď prvý riadok v Decode je "FileToHexStr(@CertificateContent, @len, FCrtStr);". Ďalej pracujú len s CertificateContent.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Online Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4584
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Certifikát ako zdroj licenčných údajov
« Odpověď #16 kdy: 24-06-2019, 19:07:48 »
Asi napíšem na podporu s tým, aby ma neoblbovali zlou kódovou stránkou.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Online pf1957

  • Padawan
  • ******
  • Příspěvků: 2625
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:Certifikát ako zdroj licenčných údajov
« Odpověď #17 kdy: 24-06-2019, 21:24:23 »
To pdf1957 - nech robím akékoľvek konverzie, okrem ansi a spol., tak stále dostávam rovnaký a žiaľ aj nesprávny výsledok.
Tak se podivej, com mas v tom certifikatu. Me se nechce zabyvatr se nejakou divnou tridou, ale kdyz pri vytvareni certifikatu ten text napisu v UTF8 kodovani, tak ho taky v takovem kodovani v certifikatu vidim:

        X509v3 extensions:
            X509v3 Subject Alternative Name:
                DNS:6ščťžýáíé6-domain.com, DNS:www.your-new-domain.com

Coz znamena, ze treba OpenSSL si s nejakym kodovanim 2x hlavu nelame: AltNames by mely byt v kodovani IA5 (ASCII) a pokud obsahuji non-ASCII znaky, tak v kodovani ACE.

Online Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4584
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Certifikát ako zdroj licenčných údajov
« Odpověď #18 kdy: 24-06-2019, 21:53:21 »
Nie je tam nič čo by dávalo nejaký zmysel. Ale nie je tam vložené UTF8.
« Poslední změna: 24-06-2019, 21:55:50 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Online Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4584
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Certifikát ako zdroj licenčných údajov
« Odpověď #19 kdy: 24-06-2019, 21:59:48 »
Ani s UTF8
-----BEGIN CERTIFICATE-----
MIID/DCCAuSgAwIBAgIMDhNuAMHGqgDDLwwAMA0GCQAAAAAAAAAAAAUAMIGNMQsw
CQYDVQQGEwJTSzETMBEGA1UECBMKU3RhdGUgbmFtZTEWMBQGA1UEBxMNTG9jYWxp
dHkgbmFtZTEaMBgGA1UEChMRT3JnYW5pemF0aW9uIG5hbWUxHzAdBgNVBAsTFk9y
Z2FuaXphdGlvbiB1bml0IG5hbWUxFDASBgNVBAMTC0NvbW1vbiBuYW1lMB4XDTE5
MDYyNDE5NTc1N1oXDTIwMDYyNDE5NTc1N1owgY0xCzAJBgNVBAYTAlNLMRMwEQYD
VQQIEwpTdGF0ZSBuYW1lMRYwFAYDVQQHEw1Mb2NhbGl0eSBuYW1lMRowGAYDVQQK
ExFPcmdhbml6YXRpb24gbmFtZTEfMB0GA1UECxMWT3JnYW5pemF0aW9uIHVuaXQg
bmFtZTEUMBIGA1UEAxMLQ29tbW9uIG5hbWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB
DwAwggEKAoIBAQCkMWzmbs1vnon6eJm3PGgVuSSiSji4A4igxeY22QR629ua61G/
Ox56ZJ6Wq32uq0qCIfUd52V8+CNDiq1Ze7XWeW0J8OB211YAqSGPfpqzH6xvZqGr
sTTontgenC8HzXjoG9l0mJdviHrMmLzgtMMBytsNWtgXd++YYBMgxVjHsnzQU4tu
V+M82IU9KoPEo/AtgzwdQB3KSvBcryo+Iod9elh+R22QeHjFZtLd/UhjO/E2hemN
7gr01sLXigYiyby5/WIyZ8MDkU03CTPhvTtJUAo18AZ8sOvgFl7akyI0XhLT9NlL
tDghlf2dnvJvCI8Cuw/yV8Dqk4CyiuZKA59RAgMBAAGjWjBYMBIGA1UdDgQLBAkw
BwQFMAMBAQAwEAYDVR0jBAkwBwQFMAMBAQAwDAYDVR0TBAUwAwEBADAiBgNVHREE
GzAZghdOYW1lIDEg9L6aLeidni3y7+At/eHt6TANBgkAAAAAAAAAAAMFAAOCAQEA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAA==
 -----END CERTIFICATE-----
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Online pf1957

  • Padawan
  • ******
  • Příspěvků: 2625
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:Certifikát ako zdroj licenčných údajov
« Odpověď #20 kdy: 24-06-2019, 22:15:27 »
Ani s UTF8
No ano, certifikat je binarni struklura, tady zakodovana v Base64. Ty to nejakym nastrojem musis transformovat do textove podoby, napr. v openssl.exe prikaz
Kód: Delphi [Vybrat]
  1. openssl x509  -in cert.pem -out cert.txt -text -nameopt multiline,show_type
vytvori z neceho takoveho, co jsi poslal, toto (volba show_type zobrazi u kazdeho regulerni pole, jak je to pole zakodovano)
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            82:fd:95:45:03:16:38:a3
        Signature Algorithm: sha1WithRSAEncryption
        Issuer:
            countryName               = PRINTABLESTRING:CZ
            stateOrProvinceName       = T61STRING:\C4\8Cesk\C3\A1 republika
            localityName              = PRINTABLESTRING:Praha
            organizationName          = T61STRING:Pejsek&Ko\C4\8Di\C4\8Dka
            organizationalUnitName    = T61STRING:Peka\C5\99stv\C3\AD
            commonName                = T61STRING:Name 1 6\C5\A1\C4\8D\C5\A5\C5\BE\C3\BD\C3\A1\C3\AD\C3\A96
            emailAddress              = IA5STRING:info@pekarstvi.com
        Validity
            Not Before: Jun 24 17:58:21 2019 GMT
            Not After : Jun 23 17:58:21 2020 GMT
        Subject:
            countryName               = PRINTABLESTRING:CZ
            stateOrProvinceName       = T61STRING:\C4\8Cesk\C3\A1 republika
            localityName              = PRINTABLESTRING:Praha
            organizationName          = T61STRING:Pejsek&Ko\C4\8Di\C4\8Dka
            organizationalUnitName    = T61STRING:Peka\C5\99stv\C3\AD
            commonName                = T61STRING:Name 1 6\C5\A1\C4\8D\C5\A5\C5\BE\C3\BD\C3\A1\C3\AD\C3\A96
            emailAddress              = IA5STRING:info@pekarstvi.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (4096 bit)
                Modulus (4096 bit):
                    00:a7:16:30:20:f6:25:ce:f7:8e:39:62:ce:51:84:
                    84:2a:87:0a:70:a6:84:90:d6:21:73:4b:e6:a3:6c:
                    ...

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1453
  • Karma: 35
    • Pepak.net
Re:Certifikát ako zdroj licenčných údajov
« Odpověď #21 kdy: 25-06-2019, 05:40:53 »
No a v pf1957ově výpisu vidíme, že to je UTF8. Nebude nakonec problém spíš v tom, jak ty údaje čteš/vypisuješ, než v tom, jak je vytváříš/zapisuješ?

Online pf1957

  • Padawan
  • ******
  • Příspěvků: 2625
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:Certifikát ako zdroj licenčných údajov
« Odpověď #22 kdy: 25-06-2019, 06:27:43 »
No a v pf1957ově výpisu vidíme, že to je UTF8. Nebude nakonec problém spíš v tom, jak ty údaje čteš/vypisuješ, než v tom, jak je vytváříš/zapisuješ?
No k tomu se ho snazim dotlacit, aby presne zjistil a) co ma v tom certifikatu a b) co presne z nej dostane, ale skutecne na  raw urovni, nezkreslene zobrazovanim textu na urovni bubaku apod. - buhvi co je to za hodnoty, co Stano posila...


Jen doplnim, ze jsem mu to UTF8 predepsal pri vytvareni certifikatu a config soubor s temi testovanymi hodnotami jsem editoval PSPadem s nastavenym kodovanim UTF8 no BOM:
Kód: Delphi [Vybrat]
  1. openssl req -config test.cnf -x509 -nameopt utf8 -newkey rsa:4096 ...

Ale kdyz jsem zkusil vlozit UTF8 tam, kde certifikat chce IA5 napr. u pole emailaddress tj. DNS, tak OpenSSL certifikat nevytvorilo a skoncilo chybou. Tam bych to zrejme musel zakodoval jako ACE (https://en.wikipedia.org/wiki/Punycode).  U toho extension AlternateName je to take DNS, ale tam OpenSSL neprostestoval.

Takze stale je to otazka, co s tim stuff, co Stano pouziva, udela pri zapisu a cteni. A to je nejjednoduzsi se podivat bubakem na raw data pri trasovani, protoze z tech fragmentu se moc poznat neda. Pri zapisu to non-unicode to jednoduse vykopiruje obsah stringu do pameti, takze tam by to melo obsah zachovat v UTF8, ale otazka je, co s tou pameti dela dal a co se mu objevi v certifikatu, kdyz si ho necim necha vypsat, jako jsem to udelal ja.


Online Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4584
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Certifikát ako zdroj licenčných údajov
« Odpověď #23 kdy: 25-06-2019, 07:47:57 »
Prikladám certifikát aj s kľúčom. Plus nastavenia pri ich vytváraní. Nemám openssl a nemienim ho zbytočne inštalovať.
Kód: Delphi [Vybrat]
  1.   MyCertificate.BitSizeEncryptionAlgorithm := 2048;
  2.   MyCertificate.hashFunction := sha1;
  3.   MyCertificate.signatureAlgorithm := sa_sha224dsa;
  4.   MyCertificate.Unicode := noUni;
Musím si Vaše príspevky nechať prejsť hlavou. Snáď sa mi niečo podarí. To všetko je pre mňa pole neorané.
Citace
b) co presne z nej dostane, ale skutecne na  raw urovni,
Ten raw som v ich kóde videl viackrát.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Online Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4584
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Certifikát ako zdroj licenčných údajov
« Odpověď #24 kdy: 25-06-2019, 07:49:56 »
Citace
Nebude nakonec problém spíš v tom, jak ty údaje čteš/vypisuješ, než v tom, jak je vytváříš/zapisuješ?
Je to presne podľa ich dema/návodu. Ukladanie aj čítanie bez akejkoľvek konverzie.
Vytváranie i čítanie je jedným a tým istým komponentom.
« Poslední změna: 25-06-2019, 07:52:28 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Online pf1957

  • Padawan
  • ******
  • Příspěvků: 2625
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:Certifikát ako zdroj licenčných údajov
« Odpověď #25 kdy: 25-06-2019, 09:46:59 »
Prikladám certifikát aj s kľúčom.
Hm, to je divny kodovani:
            X509v3 Subject Alternative Name:
                DNS:τΎš-蝞-ςοΰ-ύανι

Podle tech pomlcek mezi trojicemi znaku bych usuzoval na nejaky pokus o ten punycode, ale to by tam musely byt jen znaky 'a'..'z' a '0'..'9'

Tohle mi nic nerika, ale to by mohlo byt videt z tech zdrojovek, jak si to tvurci pojmenovali ev. nekde v komentarich odkaz na RFC, podle ktereho to koduji, coz byva pravidlem, ze se do komentaru pise:
F4 BE 9A -
E8 9D 9E -
F2 EF E0 -
FD E1 ED
E9 LF


Ale nejsem zadnej velkej znalec kdejakeho kodovani. Treba to nekomu neco rekne.
V kazdem pripade bych od komponenty ocekaval, ze kdyz ma interface definovany pro typ UnicodeString, tak to co sama zapise a precte zpatky bude zase UnicodeString.

BTW, proc pouzivas zrovna AlternateName, ktere ma predstavovat korektnmi DNS, v pripade internacionalizace se specialnimi pozadavky na kodovani?

Protoze tam strkas zrejme neco, co se tyka jen tvoji aplikace a ostatnim do toho nic neni, tak to zkus prevest pred prirazenim AltName UnicodeString do Base64 -> tim se z toho stane ASCII, takze to by teoreticky mohlo projit. Je to sice pakarna, ale co jsem se dival, tak uz treba nsComment (pouzival jsem ja) jako extension je opravdu hooodne zastarale, takze to uz s tim asi budou problemy, i kdyz zatim si nikdo nestezoval ;)

Kód: Delphi [Vybrat]
  1.   b64 := TBase64Encoding.Create;
  2.   try
  3.     s1 := 'Name 1 6ščťžýáíé6';
  4.     s2 := b64.Encode(s1);
  5.     ...
  6.     s1 := b64.Decode(s2);
  7.   finally
  8.     b64.Free;
  9.   end;
  10.  


« Poslední změna: 25-06-2019, 10:02:34 od pf1957 »

Online Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4584
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Certifikát ako zdroj licenčných údajov
« Odpověď #26 kdy: 25-06-2019, 10:20:41 »
A je to. Naozaj veľké ďakujem.

Je zaujímavé, že ak mu dám uložiť celú abecedu, tak to padne na AV. Podľa všetkého až pri generovaní kľúča, lebo texty sú OK.
Kód: Delphi [Vybrat]
  1.   MyCertificate.AltName1 := b64.Encode('A-Á-Ä-B-C-Č-D-Ď-DZ-DŽ-E-É-F-G-H-Ch-I-Í-J-K-L-Ĺ-Ľ');
  2.   MyCertificate.AltName2 := b64.Encode('a-á-ä-b-c-č-d-ď-dz-dž-e-é-f-g-h-ch-i-í-j-k-l-ĺ-ľ');
  3.   MyCertificate.AltName3 := b64.Encode('M-N-Ň-O-Ó-Ô-P-Q-R-Ŕ-S-Š-T-Ť-U-Ú-V-W-X-Y-Ý-Z-Ž');
  4.   MyCertificate.AltName4 := b64.Encode('m-n-ň-o-ó-ô-p-q-r-ŕ-s-š-t-ť-u-ú-v-w-x-y-ý-z-ž');
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Online Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4584
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Certifikát ako zdroj licenčných údajov
« Odpověď #27 kdy: 25-06-2019, 10:27:27 »
Oprava: kľúč sa vytvorí. Chýba certifikát. Snáď na to v budúcnosti nenarazím. Je zaujímavé, že stačí zakomentovať hocktorý riadok a zbehne to.
« Poslední změna: 25-06-2019, 10:29:03 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Online pf1957

  • Padawan
  • ******
  • Příspěvků: 2625
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:Certifikát ako zdroj licenčných údajov
« Odpověď #28 kdy: 25-06-2019, 11:17:12 »
Oprava: kľúč sa vytvorí. Chýba certifikát. Snáď na to v budúcnosti nenarazím. Je zaujímavé, že stačí zakomentovať hocktorý riadok a zbehne to.
No to je docela pochopitelne, protoze zrejme prekrocis delku radku v certifikatu, jelikoz se vsechna ta alternativni jmena pisi do jednoho radku:

            X509v3 Subject Alternative Name:
                DNS:6ščťžýáíé6-domain.com, DNS:www.your-new-domain.com


Pri tomto kodovani tam nesmis strkat litanie, castecne to muzes udelat tak, ze si zvolis ruzna kodovani a pouzijes pro kazde jmeno individualne jine v zavislosti na tom, kolik divnych znaku bude text obsahovat:
- pri Base64 mas vzdy na kazde 3 byty 4 znaky na vystupu
- pri Quoted printable mas ASCII Znaky 1:1 a na kazdy ANSI znak 3, protoze je to koduje hexa jako =XX
takze by se dalo pouzit to, co je pri danem obsahu kratsi.

Ale vic krome nejake interni tabulky znaku podle cetnosti, ktera by byla ulozena interne v aplikaci a  ktera by se pouzila pro kompresi, jako do delaji zipatory (ale ty si tu tabulku sestavuji dynamicky), uz s tim asi nenadelas, protoze ani to divne pouzite kodovani na tom nebude lepe. Jeste je cesta to nestrkat do AltNames ale dop jineho extension.


Online pf1957

  • Padawan
  • ******
  • Příspěvků: 2625
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:Certifikát ako zdroj licenčných údajov
« Odpověď #29 kdy: 25-06-2019, 11:34:48 »
Je zaujímavé, že stačí zakomentovať hocktorý riadok a zbehne to.
Neco malo take muzes usetrit tim, ze to vsechno nastrkas do jednoho AltName a oddelis si to samo treba '|' (tedy pokud to vubec potrebujes oddelovat), protoze tahle ti to na kazdou polozku vlozi DNS: