Write $C = \bigcup_{n=1}^\infty C_n$ as a union of countably many closed sets $C_n$. Since $C_n \subset C$ does not intersect $\overline D$, we can find an open set $U_n\supset C_n$, such that $\overline U_n \cap \overline D = \emptyset$ (by normality) for every $n$. Theses sets $U_n$ form a covering of $C$.
Similarly we can construct an open covering $\{V_n\}_{n\in \mathbb N}$ of $D$ such that the closures of the $V_n$ do not intersect $\overline C$.
One is tempted to choose $U = \bigcup_n U_n$ and $V = \bigcup_n V_n$, but these sets need not be disjoint. However we can use the following trick:
Define U'_n = U_n \setminus \bigcup_{i = 1}^n \overline V_n and V_n' = V_n \setminus \bigcup_{i = 1}^n \overline U_n. And now let U' = \bigcup_{n = 1}^\infty U'_n, \qquad V' = \bigcup_{n = 1}^\infty V_n'
I claim that these sets satisfy
- C \subset U', D \subset V'
- U' and V' are open
- U' \cap V' = \emptyset
The claim, I think, I can leave to you to verify.