Updating the GPG Key for NGINX Products

NGINX | August 08, 2016

If you use NGINX Plus, NGINX Amplify, or the prebuilt NGINX Open Source binaries from nginx.org, you might need to update the GPG key for your NGINX software now.

The keys for some NGINX software – specifics are explained below – will expire on Wednesday, August 17th, and you won’t be able to verify your software signatures until you’ve updated your key. This announcement does not affect you if you obtain NGINX Open Source from providers other than NGINX, Inc. – for example, in operating system distributions.

A GPG key is part of Gnu Privacy Guard, or GnuPG. GnuPG is a free implementation of the OpenPGP standard – widely known as PGP. GPG keys are used to verify that the packages in a repo were authored by the owner of the key.

Who Needs to Update the Key?

NGINX, Inc. uses GPG keys on its RPM packages and Debian/Ubuntu repositories so that you can verify the integrity and origin of the downloaded package. Many users of GPG keys set their keys to expire periodically, and the GPG key for NGINX, Inc. expires this coming August 17th. So you need to update your GPG key if you:

  • Use NGINX Plus
  • Use NGINX Amplify
  • Use NGINX Open Source binaries provided by NGINX, Inc.

You do not need to update your GPG key if you use NGINX Open Source that is:

  • From an operating system package. Most operating systems include NGINX in their repositories.
  • Compiled by you from source. You can verify the source package signature directly using the gpg --verify command.

Updating the GPG Key

To switch to the updated key, simply refetch and reimport the key. The process differs by operating system.

Updating the Key on Debian/Ubuntu

If you have misconfigured keys, you will see one of the following errors when you run apt-get update:

[@portabletext/react] Unknown block type "codeBlock", specify a component for it in the `components.types` prop[@portabletext/react] Unknown block type "codeBlock", specify a component for it in the `components.types` prop

To update your key, download the new GPG key and overwrite the old one:

[@portabletext/react] Unknown block type "codeBlock", specify a component for it in the `components.types` prop

To verify the expiration date on the new key, run apt-key list:

[@portabletext/react] Unknown block type "codeBlock", specify a component for it in the `components.types` prop

Updating the Key on Amazon Linux, CentOS, Oracle Linux, RHEL, and SLES

Check if your repository is configured to check and validate GPG keys. By default, the check is disabled for NGINX and NGINX Plus repositories, but enabled for NGINX Amplify repositories. The check is disabled if your yum repository files in /etc/yum.repos.d include the following line:

[@portabletext/react] Unknown block type "codeBlock", specify a component for it in the `components.types` prop

Here’s a sample repository file, /etc/yum.repos.d/nginx.repo, with the check disabled:

[@portabletext/react] Unknown block type "codeBlock", specify a component for it in the `components.types` prop

In this case, no action is needed. (Note that with the check disabled, you see a warning when you install new packages, but the installation still succeeds.)

If you have explicitly configured the GPG check, you need to replace the key.

You can check the authenticity of locally downloaded packages by running the rpm -K command:

  • If the key is missing, you see this error:[@portabletext/react] Unknown block type "codeBlock", specify a component for it in the `components.types` prop
  • If the key is correctly configured, you see this message:

[@portabletext/react] Unknown block type "codeBlock", specify a component for it in the `components.types` prop

Perform the following steps to update the GPG key:

  1. Check if you currently have the NGINX GPG key installed:[@portabletext/react] Unknown block type "codeBlock", specify a component for it in the `components.types` propIf the key is installed, the output includes the release number and build date: [@portabletext/react] Unknown block type "codeBlock", specify a component for it in the `components.types` propIf it is not installed, this message appears:[@portabletext/react] Unknown block type "codeBlock", specify a component for it in the `components.types` prop
  2. Remove the current NGINX GPG key: [@portabletext/react] Unknown block type "codeBlock", specify a component for it in the `components.types` prop
  3. Download and install the new key:[@portabletext/react] Unknown block type "codeBlock", specify a component for it in the `components.types` prop(There is no confirming output on these platforms.)
  4. Check the release and build date information for new GPG key:[@portabletext/react] Unknown block type "codeBlock", specify a component for it in the `components.types` prop

Updating the Key on FreeBSD

The FreeBSD package management system does not use a GPG key, so no action is necessary.

Verifying the Authenticity of a GPG Key

You can additionally verify the authenticity of the downloaded GPG key. GPG uses the “Web of trust” concept: a key can be signed with someone else’s key, which in turn is signed by another key, and so on.

This approach often makes it possible to build a chain between an arbitrary key and the key of someone you know and trust personally, thus verifying the authenticity of the first key in the chain. This concept is described in detail in the GPG Mini Howto. Keys from NGINX, Inc. have enough signatures that their authenticity is relatively easy to check.

Getting Support

To get support while updating your GPG key:


Share

About the Author

Related Blog Posts

Automating Certificate Management in a Kubernetes Environment
NGINX | 10/05/2022

Automating Certificate Management in a Kubernetes Environment

Simplify cert management by providing unique, automatically renewed and updated certificates to your endpoints.

Secure Your API Gateway with NGINX App Protect WAF
NGINX | 05/26/2022

Secure Your API Gateway with NGINX App Protect WAF

As monoliths move to microservices, applications are developed faster than ever. Speed is necessary to stay competitive and APIs sit at the front of these rapid modernization efforts. But the popularity of APIs for application modernization has significant implications for app security.

How Do I Choose? API Gateway vs. Ingress Controller vs. Service Mesh
NGINX | 12/09/2021

How Do I Choose? API Gateway vs. Ingress Controller vs. Service Mesh

When you need an API gateway in Kubernetes, how do you choose among API gateway vs. Ingress controller vs. service mesh? We guide you through the decision, with sample scenarios for north-south and east-west API traffic, plus use cases where an API gateway is the right tool.

Deploying NGINX as an API Gateway, Part 2: Protecting Backend Services
NGINX | 01/20/2021

Deploying NGINX as an API Gateway, Part 2: Protecting Backend Services

In the second post in our API gateway series, Liam shows you how to batten down the hatches on your API services. You can use rate limiting, access restrictions, request size limits, and request body validation to frustrate illegitimate or overly burdensome requests.

New Joomla Exploit CVE-2015-8562
NGINX | 12/15/2015

New Joomla Exploit CVE-2015-8562

Read about the new zero day exploit in Joomla and see the NGINX configuration for how to apply a fix in NGINX or NGINX Plus.

Why Do I See “Welcome to nginx!” on My Favorite Website?
NGINX | 01/01/2014

Why Do I See “Welcome to nginx!” on My Favorite Website?

The ‘Welcome to NGINX!’ page is presented when NGINX web server software is installed on a computer but has not finished configuring

Deliver and Secure Every App
F5 application delivery and security solutions are built to ensure that every app and API deployed anywhere is fast, available, and secure. Learn how we can partner to deliver exceptional experiences every time.
Connect With Us
Updating the GPG Key for NGINX Products | F5