Here is how I fixed iMessage.
I modified my hosts file and replaced the contents with this below. Do this even if it looks identical or nearly identical.
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
Open Finder (or PathFinder) Select Go --> Go to Folder, enter /etc
Find the invisible hosts file, change the contents, do a copy paste. If you have problems with he file being locked I used the PathFinder App to edit it directly. Alternately you can copy the host file to the Desktop, then edit it from there and then copy the file back in place to the /etc folder.
REBOOT and try to login to iMessage again. It then worked for me.
Note: I did try TetrisFreak's recommendation for using Chameleon Wizard, and generating a new random serial number first. But that alone didn't work for me so not sure if that was needed or not in my particular configuration.