Reduce subset sum to 3SAT
The trick to reducing any NP problem to SAT is 1) writing a subroutine that checks the polynomially-sized certificate, 2) converting that routine to a circuit, and 3) flattening the circuit to CNF using the usual methods.

For example, to convert integer factorization to SAT, you would write a routine that multiplies two $n$-bit multipliers producing a 2$n$-bit result.  Convert the routine to a circuit, then convert the circuit to CNF.  Then add simple declarative CNF clauses that force the $2n$ output variables of the circuit to match the bits of the integer that you want to factor.  The resulting CNF instance will be satisfiable only if a bit pattern for the two $n$-bit numbers exists that when multiplied together produces the 2$n$-bit number you want factored.  (If you want trivial solutions excluded then you also need to add two extra CNF clauses that demand the most significant $n$-1 bits of each multiplier are not all zero.)

Subset sum is a bit more intricate.  You need to write $n$ routines, each of which returns a particular one of the $n$ integers of the problem set or zero depending on the setting of a parameter bit.  These routines feed input into another routine you wrote that sums all $n$ of its inputs and outputs the result.  Convert all this into a circuit whose inputs are the parameter bits and whose outputs are the result of the addition routine.  Convert the circuit to CNF.  Add declarative CNF clauses that force the output variables of the adder routine to match the bits of $k$, the number a solution must sum to.  The resulting CNF instance will be satisfiable only if there exists a bit pattern of the parameter bits selecting a subset of the problem set that sums up to $k$.