Toon posts:

ssl en certificaten, graag wat uitleg

Pagina: 1
Acties:

  • Arjan
  • Registratie: Juni 2001
  • Niet online

Arjan

copyright is wrong

Topicstarter
Ik was mij aan het verdiepen in SSL om zodoende zelf beveiligde socket verbindingen op te kunnen zetten. Echter, ik heb moeite met goede uitleg te vinden. Ik vind sites die zeggen, "typ zus en zo in, dan werkt het" en aan het andere kant van het spectrum vind ik technische documentatie over het encrypten.
Ik ben echter opzoek naar meer globale uitleg.

Wat ik al denk te weten: ( graag aangeven waar ik verkeerd zit en hoe het dan wel zit )

Er zijn certificaten, deze worden gebruikt om 'chains' ( kettingen/ketens? ) op te zetten van vertrouwde instanties.
voorbeeld:
* ik vertrouw certificaten van jantje.
* pietje heeft zijn certificaat laten ondertekenen door jantje.
* wanneer ik pietje's certificaat te zien krijg, kan ik dit vertrouwen omdat jantje dit vertrouwd.

Deze certificaten kunnen gemaakt worden met software zoals openssl. Als ik een certificaat aanmaak, heb ik de (optie/verplichting?) dit certificaat te beveiligen met een wachtwoord. Hiermee voorkom je een situatie waarbij je certificaat in de verkeerde handen valt en deze kwaadwillende meteen allerlei certificaten gaat ondertekenen in jouw naam.

Ik lees op internet over root- en 'gewone' certificaten. Is er daadwerkelijk een verschil tussen beide? Of is dit slechts om aan te geven dat het een certificaat betreft dat zelf niet overlegd wordt met anderen, slechts om andere certificaten te ondertekenen?

Als je succesvol voorbij de certificaten bent gekomen weet je dat de connectie die je hebt gemaakt ook daadwerkelijk opgezet is met de 'persoon' die je wenst te bereiken. ( man-in-the-middle aanval is hiermee voorkomen ). Dan ga je communiceren en om je data niet open en bloot rond te sturen gebruik je en-/decryptie sleutels.

Public en private keys. De private key is prive bezit en mag nooit gedeeld worden. Data die versleuteld is met de private key kan alleen ontsleuteld worden dmv. de public key en andersom.
Is de private key daadwerkelijk anders dan de public key? Of zijn het gewoon elkaars tegenhangers en maakt het niet uit welke van de twee je als public gebruikt, zolang je het maar consistent doet?

Zolang ik kan garanderen dat mijn private key niet uitlekt kan ik altijd garanderen dat niemand meeluistert, je informatie is veilig, want packet-sniffers kunnen wel onderscheppen welke bytes je verzend, maar ze kunnen de gegevens niet decoderen om de informatie te achterhalen.


Daarnaast probeer ik de voorbeelden op http://www.rtfm.com/openssl-examples/ werkend te krijgen.
Deze voorbeelden zijn weliswaar verouderd, maar tenzij iemand betere weet lijkt het mij een prima startpunt.
In de originele broncode zitten 4 .pem bestanden meegeleverd die inmiddels verlopen zijn. Het is mij tot op heden niet gelukt om nieuwe certificaten/keys aan te maken omdat ik niet precies begrijp wat nu precies wat is. Op basis van de headers kom ik tot het volgende:
code:
1
2
3
4
client.h:#define KEYFILE "client.pem"
common.h:#define CA_LIST "root.pem"
server.h:#define KEYFILE "server.pem"
server.h:#define DHFILE "dh1024.pem"

client.pem -> KEYFILE -> dus waarschijnlijk een public/private key en omdat het de client betreft zal dit een public key zijn

root.pem -> CA_LIST -> een (root)certificaat?

server.pem -> KEYFILE -> de private key als tegenhanger van de public key in client.pem?

dh1024.pem -> DHFILE -> ???

wat ik geprobeerd heb:
http://www.madboa.com/geek/openssl leerde mij dat ik als volgt een certificaat en private key kon maken:
openssl req -x509 -nodes -days 3650 -newkey rsa:1024 -keyout server.pem -out root.pem

vervolgens een public key:
openssl rsa -in server.pem -pubout > client.pem


echter, als ik vervolgens de bijbehorende wserver executable start, dan klaagt deze:
Can't read certificate file
18029:error:0906D06C:PEM routines:PEM_read_bio:no start line:/SourceCache/OpenSSL098/OpenSSL098-35.1/src/crypto/pem/pem_lib.c:648:Expecting: TRUSTED CERTIFICATE
18029:error:140DC009:SSL routines:SSL_CTX_use_certificate_chain_file:PEM lib:/SourceCache/OpenSSL098/OpenSSL098-35.1/src/ssl/ssl_rsa.c:729:


Aangezien ik geen idee heb of mijn aannames over server.pem/client.pem/root.pem wel juist waren heb ik geen idee wat ik verkeerd doe. Hopelijk kunnen jullie mij wegwijs maken.

alvast bedankt! :)

oprecht vertrouwen wordt nooit geschaad


  • Equator
  • Registratie: April 2001
  • Nu online

Equator

Crew Council

#whisky #barista

PKI uitleg:Die DH verwijst waarschijnlijk naar Diffie Hellman. Dat is een asynchroon sleutel uitwisselingsmethode.

openssl rsa -in server.pem -pubout > client.pem

Dit klopt niet. wat -pubout doet is de publieke sleutel als output geven. Dat kan je dan niet gebruiken als "client" certificaat.

Client.pem/Server.pem zijn beide certificaten (met private sleutel/ en ondertekende publieke sleutel)
root.pem is het certificaat waarmee de ondertekening plaats vindt.
Wat die DHFILE moet zijn durf ik niet te zeggen.

Ik zou me eens concentreren op Apache met SSL. Daarvan zijn genoeg voorbeelden te vinden.

Vragen/opmerkingen
Privacy is something you can sell, but you can't buy back!


  • Arjan
  • Registratie: Juni 2001
  • Niet online

Arjan

copyright is wrong

Topicstarter
Ik ga je blog zeker uitgebreid doorlezen, ziet er zeer goed uit!

Nu ik weet wat client/server/root moet zijn kan ik dat ook nog een keer proberen.
Klopt het dat een root certificaat in weze hetzelfde is als elk ander certificaat?

oprecht vertrouwen wordt nooit geschaad


  • Paul
  • Registratie: September 2000
  • Laatst online: 16:36
In principe wel; een beveiligd stuk tekst dat zegt wie of wat het is, dat je vanwege die beveiliging bereid bent te vertrouwen :)

Het grootste verschil is dat je een root-CA wel vertrouwt om andere certificates mee te signen, maar als Pietje certificates aan Klaasje uit gaat geven die hij signed met het certificate dat hij van Jantje heeft gehad dan vertrouw je het niet, omdat je Pietje niet vertrouwt goed te controleren of Klaasje wel Klaasje is.

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


  • Equator
  • Registratie: April 2001
  • Nu online

Equator

Crew Council

#whisky #barista

In technische termen:
Een root Certificaaat is altijd self-signed.
Een ander certificaat is (meestal) ondertekend door een root certificaat. Vaak zit er echter een zogeheten intermediate certificaat tussen. Zoiets heet een certificate chain / keten.

Vragen/opmerkingen
Privacy is something you can sell, but you can't buy back!


  • Arjan
  • Registratie: Juni 2001
  • Niet online

Arjan

copyright is wrong

Topicstarter
misschien dat jullie mij kunnen helpen met het identificeren van de bestanden root.pem / server.pem en client.pem
Ik ben er inmiddels in geslaagd zelf certificaten te signen, maar ik kan nog niks maken wat qua structuur op de originele bestanden lijkt.

server.pem:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,5772A2A7BE34B611
knip
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIICGDCCAYECAgEBMA0GCSqGSIb3DQEBBAUAMFcxCzAJBgNVBAYTAlVTMRMwEQYD
VQQKEwpSVEZNLCBJbmMuMRkwFwYDVQQLExBXaWRnZXRzIERpdmlzaW9uMRgwFgYD
VQQDEw9UZXN0IENBMjAwMTA1MTcwHhcNMDEwNTE3MTYxMDU5WhcNMDQwMzA2MTYx
MDU5WjBRMQswCQYDVQQGEwJVUzETMBEGA1UEChMKUlRGTSwgSW5jLjEZMBcGA1UE
CxMQV2lkZ2V0cyBEaXZpc2lvbjESMBAGA1UEAxMJbG9jYWxob3N0MIGfMA0GCSqG
SIb3DQEBAQUAA4GNADCBiQKBgQCiWhMjNOPlPLNW4DJFBiL2fFEIkHuRor0pKw25
J0ZYHW93lHQ4yxA6afQr99ayRjMY0D26pH41f0qjDgO4OXskBsaYOFzapSZtQMbT
97OCZ7aHtK8z0ZGNW/cslu+1oOLomgRxJomIFgW1RyUUkQP1n0hemtUdCLOLlO7Q
CPqZLQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAIumUwl1OoWuyN2xfoBHYAs+lRLY
KmFLoI5+iMcGxWIsksmA+b0FLRAN43wmhPnums8eXgYbDCrKLv2xWcvKDP3mps7m
AMivwtu/eFpYz6J8Mo1fsV4Ys08A/uPXkT23jyKo2hMu8mywkqXCXYF2e+7pEeBr
dsbmkWK5NgoMl8eM
-----END CERTIFICATE-----


client.pem
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,6D3B09E4CA5421FF

knip
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIICFTCCAX4CAgECMA0GCSqGSIb3DQEBBAUAMFcxCzAJBgNVBAYTAlVTMRMwEQYD
VQQKEwpSVEZNLCBJbmMuMRkwFwYDVQQLExBXaWRnZXRzIERpdmlzaW9uMRgwFgYD
VQQDEw9UZXN0IENBMjAwMTA1MTcwHhcNMDEwNTE3MTYxMTM2WhcNMDQwMzA2MTYx
MTM2WjBOMQswCQYDVQQGEwJVUzETMBEGA1UEChMKUlRGTSwgSW5jLjEZMBcGA1UE
CxMQV2lkZ2V0cyBEaXZpc2lvbjEPMA0GA1UEAxMGY2xpZW50MIGfMA0GCSqGSIb3
DQEBAQUAA4GNADCBiQKBgQCHNWSoNh6msUwYGGd7TYQDsdSG0ao6QXaYjk+78ZyM
QeZUBu2dZFjG4wnzkKwrD4rp/J5PLR9AdxR72lb9AavEOKL2UDHJGsscZkGVw/bz
ZbxrKF2rvdpZSvKP1OhV1MOds/WTpRm1gcmVSoV5vLOMqVjzjHoxQ/+1zpjzMxWL
0wIDAQABMA0GCSqGSIb3DQEBBAUAA4GBACTJhRR5tv8A7dc5+zmKR1Q/i8qE3Mrn
mp/MOXHfX+ifJ/w+twoc/yd4En+7pr+hGsiTofct1JOZDW9Akq/ZGu1+NpVRT7Cw
53EdMwpi7ArwZAsLIUBsKA7QmLTbdwjU5S7WlZ24eygZHyqZrK4Few+JuzlFkkoI
FIDCfinyz24m
-----END CERTIFICATE-----


root.pem
-----BEGIN CERTIFICATE-----
MIICIjCCAYugAwIBAgIBADANBgkqhkiG9w0BAQQFADBXMQswCQYDVQQGEwJVUzET
MBEGA1UEChMKUlRGTSwgSW5jLjEZMBcGA1UECxMQV2lkZ2V0cyBEaXZpc2lvbjEY
MBYGA1UEAxMPVGVzdCBDQTIwMDEwNTE3MB4XDTAxMDUxNzE2MDExNFoXDTA2MTIy
NTE2MDExNFowVzELMAkGA1UEBhMCVVMxEzARBgNVBAoTClJURk0sIEluYy4xGTAX
BgNVBAsTEFdpZGdldHMgRGl2aXNpb24xGDAWBgNVBAMTD1Rlc3QgQ0EyMDAxMDUx
NzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAmkX40warmH0+lnwD9YjsJhRz
ZX6qXadFry0y2trZ6gMs8Mv33IKPwOu8TE7V+3PESEtjI2wr8juV9OkbIPOm+td5
M8+6vXyIW+JBo3ch99i0QMTf5/jTgsW+3IjV8yEdiGcZFp2NWKLRvZPq2VRbuF7R
1pvgcaRuBJ0wGOohwnsCAwEAATANBgkqhkiG9w0BAQQFAAOBgQCUB8zMKIlX5io8
TalbzH9Qke7BcvFAL+wp/5w1ToVsWkNrINSWKv6bl/jcqOD3aPhK7qhaeOU8ZWKL
PoPPCnRl9Wo+1JtsOO3qIgJP79Bl9ooLGahixF2v/gea5qNISjQvwYllLSa//APP
6kXHngO0RIRbiTBYHSkAzm6hDdsvVA==
-----END CERTIFICATE-----


ik denk hieruit op te maken dat client.pem / server.pem ondertekende certificaten zijn en root.pem de private sleutel waarmee ze ondertekend zijn.
Echter, als ik zelf een CSR maak en dit onderteken met mijn eigen root certificaat, dan ziet het gegenereerde certificaat er zo uit:
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1048577 (0x100001)
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=NL, ST=Utrecht, L=De Meern, O=Houben, CN=Arjan Houben
        Validity
            Not Before: Oct 21 20:09:20 2011 GMT
            Not After : Oct 20 20:09:20 2012 GMT
        Subject: C=NL, ST=Utrecht, O=Houben, CN=Arjan
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (1024 bit)
                Modulus:
                    00:bf:a0:49:62:52:15:99:f2:25:2d:9b:84:cf:c7:
                    7e:90:7f:03:b9:e3:56:d0:5a:f5:9b:6e:98:b0:a5:
...
                    41:36:56:17:47:74:c8:54:fe:eb:44:87:66:56:82:
                    c3:40:d3:f4:fd:78:99:17:cd:96:12:f3:df:65:25:
                    4e:3f:b6:31:68:5f:e2:75:cb
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                10:C3:2F:74:DC:9C:FE:4F:B7:97:00:36:03:F2:F8:A9:BD:0D:8A:A6
            X509v3 Authority Key Identifier: 
                keyid:BB:10:1F:EF:13:F1:67:B0:3F:AC:22:87:B7:67:AF:D7:1B:55:57:D8

    Signature Algorithm: sha1WithRSAEncryption
        51:02:8f:9c:93:5e:aa:41:4f:dc:e4:cb:4a:a8:2c:09:c9:2b:
        79:1c:1c:8b:44:54:13:66:02:8e:5d:94:47:f6:7a:0a:99:24:
...
        cd:a2:a7:71:4b:ab:3f:a4:97:aa:43:96:fc:ac:08:ae:18:ac:
        25:ca:a8:12:d1:17:59:5b:bf:2e:f7:8a:06:44:1c:db:cb:24:
        4b:77
-----BEGIN CERTIFICATE-----
MIICjTCCAfagAwIBAgIDEAABMA0GCSqGSIb3DQEBBQUAMFoxCzAJBgNVBAYTAk5M
MRAwDgYDVQQIDAdVdHJlY2h0MREwDwYDVQQHDAhEZSBNZWVybjEPMA0GA1UECgwG
SG91YmVuMRUwEwYDVQQDDAxBcmphbiBIb3ViZW4wHhcNMTExMDIxMjAwOTIwWhcN
...
ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFBDDL3TcnP5Pt5cANgPy+Km9DYqmMB8G
A1UdIwQYMBaAFLsQH+8T8WewP6wih7dnr9cbVVfYMA0GCSqGSIb3DQEBBQUAA4GB
AFECj5yTXqpBT9zky0qoLAnJK3kcHItEVBNmAo5dlEf2egqZJEGfZdBYlWbNDlwu
+Kb9QqvNnPSgW75aG6i9d89Lbg50mDgFca0U1OkKS4uOMiDfwEm5jzToIs2ip3FL
qz+kl6pDlvysCK4YrCXKqBLRF1lbvy73igZEHNvLJEt3
-----END CERTIFICATE-----

[Voor 13% gewijzigd door iisschots op 21-10-2011 23:14]

oprecht vertrouwen wordt nooit geschaad


  • iisschots
  • Registratie: November 2002
  • Laatst online: 27-05 16:55
Lijkt het je verstandig je private keys op het internet te plaatsen?

Heb ze voor de zekerheid maar even weggeknipt.

[Voor 26% gewijzigd door iisschots op 21-10-2011 23:14]

Hackerspace in Friesland | www.frack.nl | Bezig met opzetten, help mee!


  • Nactive
  • Registratie: Juni 2011
  • Niet online
iisschots schreef op vrijdag 21 oktober 2011 @ 23:12:
Lijkt het je verstandig je private keys op het internet te plaatsen?

Heb ze voor de zekerheid maar even weggeknipt.
Hij zal wel nieuwe private keys aanmaken met openssl nadien veronderstel ik :)

  • Arjan
  • Registratie: Juni 2001
  • Niet online

Arjan

copyright is wrong

Topicstarter
iisschots schreef op vrijdag 21 oktober 2011 @ 23:12:
Lijkt het je verstandig je private keys op het internet te plaatsen?

Heb ze voor de zekerheid maar even weggeknipt.
Dat lijkt me niet verstandig, mijn eigen keys ( die ik overigens niet ga inzetten, maar dat terzijde ) missen enkele regels ( zie de puntjes ) en de gepostte complete keys zijn te downloaden via http://www.rtfm.com/openssl-examples/ en reeds verlopen

oprecht vertrouwen wordt nooit geschaad


  • Rukapul
  • Registratie: Februari 2000
  • Laatst online: 16:01
Arjan schreef op vrijdag 21 oktober 2011 @ 22:31:
Ik ben er inmiddels in geslaagd zelf certificaten te signen, maar ik kan nog niks maken wat qua structuur op de originele bestanden lijkt.

server.pem:

client.pem

root.pem

ik denk hieruit op te maken dat client.pem / server.pem ondertekende certificaten zijn en root.pem de private sleutel waarmee ze ondertekend zijn.
Echter, als ik zelf een CSR maak en dit onderteken met mijn eigen root certificaat, dan ziet het gegenereerde certificaat er zo uit:
Als het je er om gaat om te zien wat er in het certificaat of keyfile staat dan is het een kwestie van de juiste commando's invoeren, onder andere: openssl asn1parse --inform pem -in etc en openssl x509 --inform pem etc. :)

X509 gebruikt namelijk ASN1 om de data structuur te beschrijven. Hiervoor zijn weer verschillende encodings zoals PEM en DER voor beschikbaar. Om wat begrijpelijks op je scherm te krijgen zul je dus soms enkele conversie danwel presentatiestappen moeten doorlopen :)

  • Equator
  • Registratie: April 2001
  • Nu online

Equator

Crew Council

#whisky #barista

Als ik je certificaten ga bekijken zie ik een aantal zaken:

  • Geen van je certificaten is geldig, (zie de geldig van-tot vermelding.)
  • Je server certificaat is uitgegeven aan "localhost", dat behoort een FQDN te zijn
  • Dit geld ook voor je "client" certificaat.
Nu heb ik je root CA niet in mijn trusted store geplaatst, dus verder heb ik het niet kunnen controleren, maar zowel het server certificaat als het client certificaat lijkt ondertekend te zijn door de root. Dat is goed.

Om tot deze info te komen heb ik het
-----BEGIN CERTIFICATE-----
MIICjTCCAfagAwIBAgIDEAABMA0GCSqGSIb3DQEBBQUAMFoxCzAJBgNVBAYTAk5M
MRAwDgYDVQQIDAdVdHJlY2h0MREwDwYDVQQHDAhEZSBNZWVybjEPMA0GA1UECgwG
SG91YmVuMRUwEwYDVQQDDAxBcmphbiBIb3ViZW4wHhcNMTExMDIxMjAwOTIwWhcN
...
ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFBDDL3TcnP5Pt5cANgPy+Km9DYqmMB8G
A1UdIwQYMBaAFLsQH+8T8WewP6wih7dnr9cbVVfYMA0GCSqGSIb3DQEBBQUAA4GB
AFECj5yTXqpBT9zky0qoLAnJK3kcHItEVBNmAo5dlEf2egqZJEGfZdBYlWbNDlwu
+Kb9QqvNnPSgW75aG6i9d89Lbg50mDgFca0U1OkKS4uOMiDfwEm5jzToIs2ip3FL
qz+kl6pDlvysCK4YrCXKqBLRF1lbvy73igZEHNvLJEt3
-----END CERTIFICATE-----

gekopieerd naar een *.cer bestand, en deze gewoon gedubbelklikt in WIndows

Overigens zijn de .pem bestanden die jij liet zien gecombineerde bestanden. Hierin zit zowel je private key, als je certificaat (je ondertekende publieke sleutel)
Als het goed is zit er ook nog een password op de private key.

Vragen/opmerkingen
Privacy is something you can sell, but you can't buy back!

Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee