put on/wear a hair shirt - definition and synonyms

phrase
  1. to behave in a way that shows you feel very sorry and guilty about something you have done wrong
See also main entry: hair shirt