MLB.com reported Keppinger, who was picked up to replace free agent Kevin Youkilis, will get paid $12 million.
The 32-year-old infielder hit .325 with nine home runs and 40 RBI in 115 games for Tampa Bay Rays this past season. He played third base, second base and first base for the Rays. He is a career .288 hitter who also has played for the New York Mets, Kansas City, Cincinnati, Houston and San Francisco.
"Jeff adds a valuable and different type of offensive player to our lineup," White Sox Vice President-General Manager Rick Hahn said. "Combined with his ability to play quality defense at multiple positions as well as his overall approach to the game, we are thrilled to add him to our mix."