RALEIGH, N.C.—A federal grand jury charged two-time presidential candidate John Edwards on Friday with soliciting and covering up the secret spending of more than $925,000 to hide his mistress and their baby during the peak of his 2008 campaign for the White House.