Bitcoin has challenged banks, the central authorities of money;
why not do the same to CAs, the centralized authorities of the Internet.
Namecoin does something close but we need a general way to map any domain name/email address to a public key (even a bitcoin address).
Please point me to any work done in this regard.
You can store anything in the data that a .bit domain name refers to, it's usually JSON with the nameserver encoded within. No reason you couldn't add another JSON field for a public key.
I've thought before that it might be useful to tie a Certificate (like X509) to a particular output in a blockchain, owned by the certificate issuer. Then if you want to revoke the certificate, you just have to spend the output. i.e. the certificate is only valid if it's corresponding output is unspent.