![]() |
![]()
| ![]() |
![]()
NAMECrypt::OpenSSL::CA::Resources - A bibliography of documentations and tools that I found helpful for implementing X509 PKIs in Perl over all these years. TUTORIALSFor a tutorial introduction to the concepts of PKI and X509, please refer to the appropriate Wikipedia articles (in particular <http://en.wikipedia.org/wiki/Public_key_infrastructure> and <http://en.wikipedia.org/wiki/X.509>). Have some giggles while uncovering the bleak truth about the state of affairs in PKI-world with Peter Gutmann's crypto tutorials at <http://www.cs.auckland.ac.nz/~pgut001/tutorial/index.html>, and especially the one that deals with X509 PKI at <http://www.cs.auckland.ac.nz/~pgut001/pubs/pkitutorial.pdf>. ALPHABET SOUPSee Crypt::OpenSSL::CA::AlphabetSoup IMPLEMENTATION GUIDELINESX509 Style GuideThe X509 Style Guide, also by Peter Gutmann (http://www.cs.auckland.ac.nz/~pgut001/pubs/x509guide.txt), although partly outdated (e.g. as regards Unicode support) is the single most helpful resource one needs to develop and deploy a full-fledged X509 PKI. SOFTWAREIDX-PKIA working, rugged implementation of "PKIX" in Crypt::OpenSSL::CA::AlphabetSoup that is GPL-licenced and covers all the bases, despite its being restricted from the "commercial" version. Definitely a reference implementation in the field (I know, since I helped write it!). <http://idx-pki.idealx.org/index.en.html> OpenSSLThe venerable, feature-rich but quirky and poorly documented cryptographic library that Crypt::OpenSSL::CA is built upon. Available on <http://www.openssl.org/> (and also on <https://www.openssl.org/>, of course). /usr/bin/openssl Of special interest is the "/usr/bin/openssl" command-line tool, that serves as a Swiss army knife of crypto debugging from making and parsing certificates to debugging SSL. Actually "/usr/bin/openssl" is powerful enough to serve as the sole foundation for a full-fledged PKI; this is almost what "IDX-PKI" does, but it is quirky (and therefore Crypt::OpenSSL::CA departs from that idea). Here are a few tricks that I know by heart from typing them so often:
Source code Any serious work towards contributing to Crypt::OpenSSL::CA requires promiscuity with OpenSSL's code base. I suggest reading and understanding "demos/mkcert.c" and "apps/ca.c" first, comparing and contrasting with the XS code in Crypt::OpenSSL::CA which does roughly the same thing in a simpler and more modular way. Seasoned programmers will find the OpenSSL man pages of some limited help, and the command "grep -r some_identifier /usr/include/openssl" to come in handy more often than not. "openssl.txt" There is a succint overview of OpenSSL's whole API in a file named "doc/openssl.txt", to be found either in OpenSSL's source or possibly in the documentation directory of your distribution's openssl package (YMMV). dumpasn1A tool to debug "ASN.1" in Crypt::OpenSSL::CA::AlphabetSoup data structures, more fault-tolerant than the "openssl asn1parse" command (see "OpenSSL"). Available on "Peter Gutmann's site" and as a Debian package. INTERNET SITESPeter Gutmann's site<http://www.cs.auckland.ac.nz/~pgut001/> contains more crypto- and security-related stuff, and is always a pleasure to waste office time reading from. alvestrand.nooid.elibel.tm.fr<http://www.alvestrand.no/objectid/> and <http://oid.elibel.tm.fr/> are both databases of "OID" in Crypt::OpenSSL::CA::AlphabetSoups that together contain pretty much all OIDs known to mankind. The latter sports a search engine. STANDARDSThe RFCs and other standards describing PKIX (the X509 PKI) are, in suggested reading order:
|