So you've set up a apt repository following dean's excellant instructions and youve tried to install a package and got the following warning
WARNING: The following packages cannot be authenticated!
At this point you have several choices:-
- press yes and carry on.(not that useful if youre using puppet to install stuff)
- echo "APT::Get::AllowUnauthenticated 1;" >> /etc/apt/apt.conf.d/99unauth
-  Set up a secure repository
Lets go with setting up a secure repository.
- Make yourself a gpg key - gpg --gen-key
- Export your public key to a file - gpg --armor --export $keyid >public.key. You will need this later
- Create an apt-release.conf containing APT::FTPArchive::Release::Suite "etch";(Im behind and should have written this post a year ago) in your repository base.
- Generate a release file - apt-ftparchive -c apt-release.conf release dists/etch/ > dists/etch/Release
- Create a signed version - gpg --sign -ba -o dists/etch/Release.gpg dists/etch/Release
Your repository is now secure. Now you need to tell your machines about your key or apt-get will emit 
W: GPG error: http://debianrepo etch Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY $KEYID
To do this manually you can take the public.key you generated earlier and copy it to your machines and then run 
apt-key add public.key
Of course in this day and age doing things like that for all your machines would be tedious so I use puppet with a class something like the following.
class aptkey {
  file { "/etc/apt/public.key":
    mode   => 440,
    owner  => root,
    group  => root,
    source => [
        "puppet://puppet/host/public.key",
        "puppet://puppet/files/public.key"
        ],
  }
  exec { "install-key":
     command => "/usr/bin/apt-key add /etc/apt/public.key",
     require => File["/etc/apt/public.key"],
     unless  => "/usr/bin/apt-key list | /bin/grep -q 'firstname.lastname'";
  }
  exec { "key-update":
     command => "/usr/bin/apt-get update",
     require => Exec["install-key"],
  }
}