Glossary · Security

Certificate push vs pull

In OPC UA, pull and push are the two Part 12 models for provisioning certificates. In pull, the device asks a Global Discovery Server for a certificate and trust list. In push, an administrator or GDS writes them into the device through the ServerConfiguration object in the device's own address space.

Pull: the device is the client

The device connects out to the GDS certificate directory and drives the process: it lists its certificate groups, then either submits a signing request for a key pair it generated itself or asks the GDS to generate a new key pair, then collects the issued certificate along with the trust list and CRLs. The private key never has to leave the device if you use the signing-request variant, which is the better hygiene. Pull needs the device to be able to reach the GDS and to have a client stack.

Push: the device is the server

Push inverts it. The device exposes a ServerConfiguration object with methods such as CreateSigningRequest, UpdateCertificate and GetRejectedList, and a TrustList object that is written as a file and committed with CloseAndUpdate. An administration tool or the GDS connects in as a client with the SecurityAdmin role and installs the new certificate and trust list. No outbound connectivity is needed, which suits a device on an isolated cell network.

Which one you can actually use

This is decided by the device, not by you. Push requires the server to implement the ServerConfiguration and TrustList objects, and most PLCs and embedded servers do not - the failure mode is simply a method that is not there. Pull requires a client stack and outbound reach to the GDS, which many embedded servers also lack. Survey what each device family supports before designing the provisioning process, and confirm it with the vendor rather than assuming from a feature list.

The operational difference that matters

Push is a change made to a running device and takes effect by restarting the endpoints, so it interrupts sessions - schedule it. Pull is initiated by the device and fits naturally into a startup or renewal timer, which makes automated rotation feasible. Whichever you use, remember that installing a new certificate is only half the job: every peer's trust list has to accept the new issuer, and if you changed CA rather than just renewing, that is a fleet-wide operation.

Example

The two flows, and where the private key lives in each

PULL   device --(client)--> GDS CertificateDirectory
         GetCertificateGroups
         StartSigningRequest      # device keeps its private key
           or StartNewKeyPairRequest   # GDS generates the key - it travels to the device
         FinishRequest -> certificate + issuer certs
         GetTrustList  -> trusted list + CRLs

PUSH   admin/GDS --(client)--> device ServerConfiguration
         CreateSigningRequest     # device keeps its private key
         UpdateCertificate        # install the signed certificate
         TrustList: Open / Write / CloseAndUpdate
         GetRejectedList          # read what the device refused
       -> endpoints restart, existing sessions drop
The mistake people make: Using StartNewKeyPairRequest because it is fewer steps, and so having the GDS generate and transmit the device's private key. The key now exists in two places and has crossed the network. Prefer the signing-request variant wherever the device can generate its own key pair, and keep the key on the device - or in its TPM or HSM.

Defined in: Part 12 - Discovery and Global Services, certificate management.

Last verified 7 September 2026 against OPC UA 1.05.07. OPC UA Connect is an educational resource and is not affiliated with the OPC Foundation.

Free download
OPC UA Server Acceptance Test Pack
A 40-check acceptance test you run against a vendor's server before commissioning sign-off. Weighted scoring, three hard gates, and a one-page verdict for the supplier meeting.
Get the free test pack →
Free, no course, no login