The Prime Minister said there was "deep public cynicism" about military action against President Assad's regime.
But he insisted it was needed to maintain the "international taboo" over chemical weapons.
Cameron: This is no Iraq
Cameron was addressing MPs after Parliament was recalled to debate the Syrian crisis, as intelligence officials said Assad was "highly likely" to have been responsible, and the government's lawyers gave the move the green light.
Facing opposition from Labour and his own backbenchers, Cameron admitted "there is no 100% certainty about who is responsible" for the Damascus attack but told MPs "you have to make a judgment".
In a dig at Labour, which proposed an alternative motion to the government, Cameron said: "The well of public opinion was well and truly poisoned by the Iraq episode."
The Prime Minister insisted Syria was no Iraq, and stressed that no decision had been taken on military action, saying this would require a further Parliamentary vote.
He insisted his stance was not because he wanted to get involved in the Syrian conflict, saying it was about maintaining the "international taboo" over chemical weapons.
Discussing the Joint Intelligence Committee's assessment of Assad's culpability for the chemical attacks, he said: "The most likely possibility is that he has been testing the boundaries."
Cameron acknowledged "we can't make a judgement about the mind of this brutal dictator".
Labour leader Ed Miliband said debating war was "one of the most solemn duties that this House possesses".
He did not rule out military action, but stressed: "Evidence should precede decision, not decision should precede evidence."