The San Francisco 49ers have signed safety Craig Dahl to a three-year contract, finding a replacement in the secondary after Dashon Goldson received a five-year deal from Tampa Bay.