Another option...
1 gallon muriatic acid...$7.00
1 box of backing soda...dollar or two
black oxide solution from Caswell plating...$25
RPM from ECS Automotive...$35
Mix acid with water 50/50.(use eye and hand protection) Dip fasteners for an hour. Remove and lightly wire brush if some rust remains. Re-dip if still rusty. Once rust is gone, dip in baking soda and water to neutralise the acid. You should have a layer of baking soda on the bottom of the container so you know you've added enough.
Rince with water and dry with compressed air. Dip in black oxide solution then dip in water. For very light gray only dip for 2 seconds. For darker gray no more than 10 seconds. Play with dip times to get the desired color. Dry with compressed air.
Use heat gun or blow dryer to heat fasteners to 120 degrees and apply RPM.....let cool....DONE. The RPM will darken the look of the bolts. That's why the dip times are so short.
If you don't want to use acid or are refinishing a delicate part, use EvapoRust. It's $20 a gallon and loses its strength quickly. It is very nice stuff and I've used it a lot. The acid just works a lot faster and is cheap.
The factory fasteners weren't coated black oxide originaly. They were phosphated. You can buy phosphating kits but they involve heating the mixture. I've had good results with the Black Oxide. It's very fast and easy. No heating involved and you can get results that look like phosphate if you don't dip the part for an extended amount of time. If you do, it will turn very dark...not the correct light/meduim gray of phosphate.
Good luck!