Preheat oven to 350 °F (175 °C).
Remove the ham’s fatty skin; score in a diamond pattern.
Combine marinade ingredients in a food processor until coarse.
Massage the marinade into the ham and let rest 30 minutes to overnight.
Tent with foil and roast ~10 minutes per pound.
Prepare glaze by simmering all glaze ingredients (except zest) for 40–45 minutes. Mash lightly and stir in orange zest.
After ~30 minutes of baking, baste ham every 10–15 minutes with pan juices.
At ~1 hr 15 min, increase oven to 400 °F (200 °C), remove foil, bake 15 minutes.
Broil at ~500 °F and spoon glaze onto ham in three layers (3–4 minutes each). Watch closely to avoid burning.
Rest the ham 15 minutes before slicing; serve with glaze on the side.