I think he probably did have a less than honorable discharge, and managed to have it changed in the relatively recent past.
The generally accepted theory among insiders in the Pentagon is that Kerry either was reprimanded for falsifing reports or lost his security clearance (all naval officers must have a security clearance). The second is the most damning and the most likely. There are stories that Kerry was in contact with anti-war groups that in turn had contacts with communist front programs.
In 1977 and 1978 Jimmy Carter the Incompetent upgraded thousands of dishonorable and less than honorable discharges arbitrarily outside traditional military guidelines, frequently without any military participation. This was a hotly contested point at the time and something that has always rankled many of us who were contemporaries of Kerry.
Kerry will never sign the form 180 and we'll probably never know what he's hiding.