[Open-source] Need a little debuging and hits...

Panagiotis Astithas pastith at gmail.com
Mon Jan 24 10:41:48 EET 2011


2011/1/24 <mickflemm at gmail.com>

> Εδώ και μερικές μέρες γράφω ένα ας πούμε frontend στην OpenSSL για να κάνω
> ποιο εύκολα ελέγχους για την ισχύ πιστοποιητικών x509. Βασικά μου τη σπάει
> το command line της OpenSSL και δε πολυβολεύει αν πχ. θες να τα κάνεις όλα
> με τη μία και απλά. Στόχος μου ήταν να μπορώ να περνάω κάπου το certificate
> του client/user/whatever και να τσεκάρω και το signature και το revocation
> status με CRL και OCSP, να έχω την ευελιξία να του περάσω ca certificates
> που δεν περιέχονται στο σύστημα (πχ. το class3 root certificate της CAcert)
> ή να το υποχρεώσω να τσεκάρει κάποια CRL ακόμα και όταν δεν υπάρχει ορισμένο
> distribution point στο certificate (π.χ. στα class3 signed certificates της
> CAcert υπάρχει το OCSP uri αλλά όχι το CRL distrtibution point -ενώ υπάρχει
> διαθέσιμη CRL-, αντίθετα σε όσα είναι signed με το class1 υπάρχουν και τα
> δύο) + να κάνει handle και local resources και network resources
> transparently.
>
> Έτσι έφτιαξα αυτό εδώ χρησιμοποιώντας OpenSSL + cURL με μερικά κολπάκια για
> να κάνω τη δεύτερη να παίζει όπως τη θέλω :P
> http://www.kernel.org/pub/linux/kernel/people/mickflemm/pkitest.tar.bz2
>
> Καταρχάς το έχω κάνει debug με ένα class3 revoked certificate και ένα
> class1 valid certificate και δουλεύει μια χαρά εδωπέρα, έχω όμως κάποιες
> αμφιβολίες και θέλω να το δείτε κι εσείς και να μου πείτε. Ποιο
> συγκεκριμένα:
>
> α) Φοβάμαι για memory leaks, γίνεται το χάος στην OpenSSL με τα macros της,
> ενώ στην αρχή είχα φτάσει σε σημείο να κάνω double free κλπ (paranoid mode),
> μετά το συμάζεψα κάπως και τώρα δε μου πετάει κάτι. Δεν κάθισα όμως να το
> κάνω profile και να δω ότι πραγματικά δεν αφήνει σκουπίδια στο διάβα του.
>
> β) Πιστεύω ότι υπάρχει κάποιο καλύτερο regexp για το URL από αυτό που του
> έχω βάλει.
>
> γ) Υποτίθεται ότι υπάρχουν certificates που δηλώνουν πολλά distribution
> points για τη CRL, μέχρι στιγμής δεν έχω πετύχει κάποιο, με της CAcert που
> έπαιξα έχει ένα distribution point και δε ζορίζεται ιδιαίτερα. Θέλω να δω αν
> η loop θα παίξει όπως πρέπει.
>
> δ) Θα μου άρεσε ένας καλύτερος τρόπος να διαχειρίζομαι το debug output και
> γενικότερα το output, ίσως κάποιος logger αλλά δεν το έχω ψάξει γενικότερα.
>
> ε) Θέλει cleanup, ότι δείτε σε code duplication, σπαστικά nested loops (έχω
> ένα που μου τη δίνει απίστευτα, αν έχετε καμιά καλύτερη ιδέα θα ήταν
> χρήσιμη) βαράτε.
>
> ζ) Δε ξέρω τι να κάνω με τα redirections, πχ η CAcert έχει αλλάξει την
> τοποθεσία της CRL από το distribution point που έχει στο certificate της και
> κάνει HTTP redirect στο καινούριο URL. Γενικώς μου τη δίνουν τα redirects
> και θα ήθελα να τα αποφύγω, για την ώρα επιτρέπω ένα redirection max και
> μετά η cURL θα ψοφήσει.
>
> η) Ένας τρόπος για να ελέγξω αν κάτι είναι URL αφού έχει περάσει το regexp
> είναι να προσπαθήσω να κάνω resolve το hostname και σε δεύτερη φάση να πάρω
> τα headers και να δω αν υπάρχει (αν πρόκειται γι' αρχείο) -το τελευταίο δεν
> το έχω υλοποιήσει ακόμα-. Έλα όμως που αν έχεις OpenDNS ή κάτι αντίστοιχο ο
> DNS server δεν επιστρέφει ποτέ fail και πρέπει να κάνω αναγκαστικά και το
> check της σύνδεσης ! Και όχι μόνο αυτό αλλά κάνει resolve σε ένα http server
> οπότε δεν καταλαβαίνεις διαφορά εύκολα, όχι αν δεν πας να κατεβάσεις αρχείο
> -πχ. τη CRL ή κάποιο certificate- για να δεις αν θα σου βγάλει not found ο
> server που θα σε πετάξει. Σκέφτηκα
> να βάλω με το χέρι τις IPs του OpenDNS αλλά είναι και λάθος αρχιτεκτονικά
> (ειδικά αν λάβεις υπόψη και το IPv6) και υπάρχουν και άλλοι resolvers που
> κάνουν το ίδιο. Για την ώρα θα αναλάβει η cURL να το κατεβάσει και αν είναι
> σκουπίδι θα μου επιστρέψει error οπότε είμαι οκ αλλά το ερώτημα παραμένει.
> Πώς κάνουμε validate ένα URL με σιγουριά ?
>
>
> Αυτά για την ώρα αν μου έρθει κάτι άλλο τα ξαναλέμε, πάω να τη πέσω
> επιτέλους γιατί είμαι λιώμα :P


Αν ψάχνεις για URL regexp, δε νομίζω να βρεις καλύτερο από αυτό:

http://daringfireball.net/2010/07/improved_regex_for_matching_urls

Επίσης, μην κακολογείς τα HTTP redirects, φαντάσου πόσο χρήσιμο θα ήταν ένα
file system χωρίς symlinks :-)

-- 
Panagiotis Astithas
http://astithas.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.hellug.gr/pipermail/hellug/attachments/20110124/cb8d9d12/attachment-0001.html>


More information about the Hellug mailing list