In a medium saucepan, combine the whole milk, heavy cream, sugar, cornstarch, salt, vanilla extract, cinnamon stick, lemon zest, and orange zest. Whisk until smooth and well combined.
Place the saucepan over medium heat and cook, stirring constantly, until the mixture begins to thicken and just starts to simmer. Remove from heat.
In a separate bowl, whisk the egg yolks until they are light and frothy. Gradually add a small amount of the hot milk mixture to the egg yolks, whisking constantly to temper the eggs.
Slowly pour the tempered egg yolk mixture back into the saucepan, whisking continuously.
Return the saucepan to low heat and cook for an additional 2-3 minutes, stirring constantly, until the custard is thick enough to coat the back of a spoon. Remove from heat and strain through a fine mesh sieve into a bowl to remove any lumps and the cinnamon stick and zest.
Cover the surface of the custard with plastic wrap to prevent a skin from forming and refrigerate for at least 4 hours or until set.
Once chilled, spoon the custard into serving dishes. To caramelize the top, sprinkle a thin layer of sugar over each custard and use a kitchen torch to melt and caramelize the sugar until golden brown. If you don’t have a torch, place the custards under a broiler for a few minutes, watching closely to avoid burning.