Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save bst2002git/a502efab8ce43a414266563b8f5f05a4 to your computer and use it in GitHub Desktop.
Save bst2002git/a502efab8ce43a414266563b8f5f05a4 to your computer and use it in GitHub Desktop.

Revisions

  1. @fernandoaleman fernandoaleman revised this gist Nov 22, 2011. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion rpm-digital-signature.sh
    Original file line number Diff line number Diff line change
    @@ -78,7 +78,7 @@ rpm --addsign *.rpm
    # Watch for 'gpg OK' as in this example:
    # git-1.7.7.3-1.el6.x86_64.rpm: (sha1) dsa sha1 md5 gpg OK

    rpm --checksig (sha1) dsa sha1 md5 gpg OK
    rpm --checksig git-1.7.7.3-1.el6.x86_64.rpm

    # Tip!
    # Sign package during build
  2. @fernandoaleman fernandoaleman renamed this gist Nov 18, 2011. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  3. @fernandoaleman fernandoaleman created this gist Nov 18, 2011.
    88 changes: 88 additions & 0 deletions RPM Digital Signature
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,88 @@
    # How to sign your custom RPM package with GPG key

    # Step: 1
    # Generate gpg key pair (public key and private key)
    #
    # You will be prompted with a series of questions about encryption.
    # Simply select the default values presented. You will also be asked
    # to create a Real Name, Email Address and Comment (comment optional).
    #
    # If you get the following response:
    # -----------------------------------------------------------------------
    # We need to generate a lot of random bytes. It is a good idea to perform
    # some other action (type on the keyboard, move the mouse, utilize the
    # disks) during the prime generation; this gives the random number
    # generator a better chance to gain enough entropy.
    # -----------------------------------------------------------------------
    # Open up a separate terminal, ssh into your server and run this command:
    # ls -R /

    gpg --gen-key

    # Step: 2
    # Verify your gpg keys were created

    gpg --list-keys

    # Step: 3
    # Export your public key from your key ring to a text file.
    #
    # You will use the information for Real Name and Email you used to
    # create your key. I used Fernando Aleman and [email protected]

    gpg --export -a 'Fernando Aleman' > RPM-GPG-KEY-faleman

    # Step: 4
    # Import your public key to your RPM DB
    #
    # If you plan to share your custom built RPM packages with others, make sure
    # to have your public key file available online so others can verify RPMs

    sudo rpm --import RPM-GPG-KEY-faleman

    # Step: 5
    # Verify the list of gpg public keys in RPM DB

    rpm -q gpg-pubkey --qf '%{name}-%{version}-%{release} --> %{summary}\n'

    # Step: 6
    # Configure your ~/.rpmmacros file
    #
    # You can use the following command to edit if you are on the server:
    # vi ~/.rpmmacros
    #
    # %_signature => This will always be gpg
    # %_gpg_path => Enter full path to .gnupg in your home directory
    # %_gpg_name => Use the Real Name you used to create your key
    # %_gpbin => run `which gpg` (without ` marks) to get full path

    %_signature gpg
    %_gpg_path /root/.gnupg
    %_gpg_name Fernando Aleman
    %_gpgbin /usr/bin/gpg

    # Step: 7
    # Sign your custom RPM package
    #
    # You can sign each RPM file individually:

    rpm --addsign git-1.7.7.3-1.el6.x86_64.rpm

    # Or you can `cd` into your RPMS folder and sign them all:

    rpm --addsign *.rpm

    # Step: 8
    # Check the signature to make sure it was signed
    #
    # Watch for 'gpg OK' as in this example:
    # git-1.7.7.3-1.el6.x86_64.rpm: (sha1) dsa sha1 md5 gpg OK

    rpm --checksig (sha1) dsa sha1 md5 gpg OK

    # Tip!
    # Sign package during build
    #
    # To sign a package while it's being built, simply add '--sign'

    rpmbuild -ba --sign git.spec