Sorry to hear your DS is struggling with strangers. I'm sure you've done your best to give him the information he needs. I'd maybe have a chat and let him know that if he meets a stranger but you or his daddy are with him, he doesn't have to worry - you will look after him, it might help reduce his worries.
I didn't start off talking about strangers - we talked about what to do if DD was seperated from me in a shop etc. She was to stay still, I would come and look for her. She should tell someone she had lost her mummy, but look for a policeman, someone in the shop's uniform or another mummy with children.
She took this on board at about 3yo (actually had to put it into practise once and she handled it just as we'd discussed).
About a year later she wanted to know more about the sorts of people to talk to. I mentioned that most people are kind and helpful but that some people want to hurt children. I said that it is hard to spot the ones that want to hurt children, especially because there aren't very many so you will probably never meet one. DD seemed to accept this. We also talked about shouting out loud and saying, 'this is not my mummy, I don't know you, leave me alone' in a really big voice.
At bath times we have talked about her body being special and that no one has a right to touch her body if it makes her feel unhappy or uncomfortable. That if anyone does touch her, she should tell me and we will sort it out together as there is nothing we can't fix as a team.
DD is now 6yo, and I'll only add more detail if she asks, or if she is in more risky situations as she becomes more independent. I've tried to give her this info in little bitesize chunks and to leave it for a while if she seems uninterested or worried.