The former Sunderland custodian will form competition with England international Fraser Forster as Ronny Deila's squad begins to take shape at Parkhead
The 31-year-old goalkeeper has been without a club since being released by Premier League club Sunderland in May 2012.
A serious knee injury means Gordon has not played a competitive match since April of that year, although he did spend time training with Celtic's fierce rivals Rangers last season.
Gordon, capped 40 times by Scotland, will remain at Celtic until 2016, with the club having the option of a further 12 months.
"Celtic have signed goalkeeper Craig Gordon on a two-year contract with the club having the option of a third year," read a statement on the club's official website.
"The 31-year-old keeper, who formerly played with Hearts and Sunderland and who has 40 Scotland caps, will immediately jet out to Austria to join Ronny Deila and his new Celtic team-mates at their pre-season base."
Gordon began his career with Hearts, before Sunderland paid £9million for his services in August 2007 - a then British record fee for a goalkeeper.