Terms of Johnson's deal were not announced by the team.
The 26-year-old Johnson started 22 games over four seasons in San Francisco, which drafted him in the fourth round out of NC State in 2014. That included 16 starts last season, though Johnson's struggles in coverage led to a benching in a December win over the Houston Texans.
The Seahawks had a void at cornerback after releasing Richard Sherman last month (he later signed with the 49ers). With DeShawn Shead also gone (signed with the Detroit Lions) and Byron Maxwell still unsigned, the Seahawks were thin on cornerbacks with starting experience outside of second-year pro Shaquill Griffin and nickelback Justin Coleman.
At 6 feet 2 and 200 pounds, Johnson has prototypical size for an outside cornerback in Seattle's defense. Under former Seahawks assistant and current 49ers defensive coordinator Robert Saleh, San Francisco has run a defense that's similar to Seattle's.
In 63 career games, Johnson has two interceptions -- including a 50-yard pick-six last year -- and 21 passes defended.