For cleaning, I use straight kerosene that I can buy in bulk. By the way I understand WD-40 is simply kerosene with perfume. It's handy to have the spray can for some uses though.
For lube, I soak the chain in motor oil in a pan overnight, then I let it drip dry overnight, then wipe clean.
I always like to have an extra chain ready to go so I can do the chain maintenance on the side without taking the bike off the road any length of time.