Change Certification Level of a Signature on a OpenPGP Key

Can I Update My Old Signature?

You cannot modify an existing signature.

  • You can revoke the signature. This revocation can be pushed to public key servers. The signature remains on the key, but is marked as revoked.
  • You can delete the signature locally. It cannot be deleted from key servers, as they simply merge together all known data for a given key ID.

To Increase Cert Level, Simply Sign Again!

Specify these both of these options to gpg:

  • --expert will allow you to sign a key that still has a valid signature by the current user.

  • --ask-cert-level provides a prompt to solicit your certification level.

To Decrease Cert Level, Revoke and Sign Again.

You'll need to revoke your old signature, then use --ask-cert-level if you want to specify a certification level other that the unspecified default (typically 1).

demo, demo!

If you don't believe me, see the following demonstration.

A. --expert alone does not solicit certification level:
larz@eternity:~$ gpg --expert -u 4CD57CA99B54E8A0F762E5A21D79944521E6D842 --sign-key 224015CECD89E47B9A8E35AB828CC2FAE69850F8         

gpg: checking the trustdb  
gpg: marginals needed: 3  completes needed: 1  trust model: pgp  
gpg: depth: 0  valid:   3  signed:   1  trust: 0-, 0q, 0n, 0m, 0f, 3u  
gpg: depth: 1  valid:   1  signed:   0  trust: 1-, 0q, 0n, 0m, 0f, 0u  
sec  rsa2048/828CC2FAE69850F8  
     created: 2017-05-05  expires: never       usage: SC  
     trust: ultimate      validity: ultimate
ssb  rsa2048/D7910878D40D58A0  
     created: 2017-05-05  expires: never       usage: E   
[ultimate] (1). larz. <larz@foreverlarz.com>

"larz. <larz@foreverlarz.com>" was already signed by key 1D79944521E6D842
Do you want to sign it again anyway? (y/N) y

sec  rsa2048/828CC2FAE69850F8  
     created: 2017-05-05  expires: never       usage: SC  
     trust: ultimate      validity: ultimate
 Primary key fingerprint: 2240 15CE CD89 E47B 9A8E  35AB 828C C2FA E698 50F8

     larz. <larz@foreverlarz.com>

Are you sure that you want to sign this key with your  
key "new guy <hi@newguy.com>" (1D79944521E6D842)

Really sign? (y/N) y

larz@eternity:~$  
B. Without --expert, one cannot sign a key if already signed:
larz@eternity:~$ gpg -u 4CD57CA99B54E8A0F762E5A21D79944521E6D842 --sign-key 224015CECD89E47B9A8E35AB828CC2FAE69850F8         

gpg: checking the trustdb  
gpg: marginals needed: 3  completes needed: 1  trust model: pgp  
gpg: depth: 0  valid:   3  signed:   1  trust: 0-, 0q, 0n, 0m, 0f, 3u  
gpg: depth: 1  valid:   1  signed:   0  trust: 1-, 0q, 0n, 0m, 0f, 0u  
sec  rsa2048/828CC2FAE69850F8  
     created: 2017-05-05  expires: never       usage: SC  
     trust: ultimate      validity: ultimate
ssb  rsa2048/D7910878D40D58A0  
     created: 2017-05-05  expires: never       usage: E   
[ultimate] (1). larz. <larz@foreverlarz.com>

"larz. <larz@foreverlarz.com>" was already signed by key 1D79944521E6D842
"larz. <larz@foreverlarz.com>" was already signed by key 1D79944521E6D842
Nothing to sign with key 1D79944521E6D842

Key not changed so no update needed.  
larz@eternity:~$  
C. --expert --ask-cert-level allows one to sign a key again, and also solicits a certification level:
larz@eternity:~$ gpg --expert --ask-cert-level -u 4CD57CA99B54E8A0F762E5A21D79944521E6D842 --sign-key 224015CECD89E47B9A8E35AB828CC2FAE69850F8

sec  rsa2048/828CC2FAE69850F8  
     created: 2017-05-05  expires: never       usage: SC  
     trust: ultimate      validity: ultimate
ssb  rsa2048/D7910878D40D58A0  
     created: 2017-05-05  expires: never       usage: E   
[ultimate] (1). larz. <larz@foreverlarz.com>

"larz. <larz@foreverlarz.com>" was already signed by key 1D79944521E6D842
Do you want to sign it again anyway? (y/N) y  
"larz. <larz@foreverlarz.com>" was already signed by key 1D79944521E6D842
Do you want to sign it again anyway? (y/N) y

sec  rsa2048/828CC2FAE69850F8  
     created: 2017-05-05  expires: never       usage: SC  
     trust: ultimate      validity: ultimate
 Primary key fingerprint: 2240 15CE CD89 E47B 9A8E  35AB 828C C2FA E698 50F8

     larz. <larz@foreverlarz.com>

How carefully have you verified the key you are about to sign actually belongs  
to the person named above?  If you don't know what to answer, enter "0".

   (0) I will not answer. (default)
   (1) I have not checked at all.
   (2) I have done casual checking.
   (3) I have done very careful checking.

Your selection? (enter '?' for more information): 3  
Are you sure that you want to sign this key with your  
key "new guy <hi@newguy.com>" (1D79944521E6D842)

I have checked this key very carefully.

Really sign? (y/N) y

larz@eternity:~$  
D. Resultant signatures:
larz@eternity:~$ gpg --check-sigs 224015CECD89E47B9A8E35AB828CC2FAE69850F8  
gpg: checking the trustdb  
gpg: marginals needed: 3  completes needed: 1  trust model: pgp  
gpg: depth: 0  valid:   3  signed:   1  trust: 0-, 0q, 0n, 0m, 0f, 3u  
gpg: depth: 1  valid:   1  signed:   0  trust: 1-, 0q, 0n, 0m, 0f, 0u  
gpg: 5 good signatures  
pub   rsa2048 2017-05-05 [SC]  
      224015CECD89E47B9A8E35AB828CC2FAE69850F8
uid           [ultimate] larz. <larz@foreverlarz.com>  
sig!3        828CC2FAE69850F8 2017-05-05  larz. <larz@foreverlarz.com>  
sig!         1D79944521E6D842 2017-05-12  new guy <hi@newguy.com>  
sig!         1D79944521E6D842 2017-05-12  new guy <hi@newguy.com>  
sig!3        1D79944521E6D842 2017-05-12  new guy <hi@newguy.com>  
sub   rsa2048 2017-05-05 [E]  
sig!         828CC2FAE69850F8 2017-05-05  larz. <larz@foreverlarz.com>

larz@eternity:~$