Balvinder Singh — BS monogramBalvinder SinghPaymentsAIArchitecture
← Writing
Security1 min read

Certificate pinning on Android POS

Pinning is a defense against a specific attack. On an Android POS fleet, the wrong pinning strategy is the operational problem that never leaves.

Certificate pinning on Android is a well-documented technique. The technique itself is fine; the operational reality of running it across a diverse Android POS fleet is where the trouble lives.

Written September 2025 from a fleet integration review.

The pinning options

  • Leaf certificate pin. Highest security, most fragile. Any certificate rotation breaks every device.
  • Intermediate certificate pin. Better balance. Rotations of the leaf are safe; rotations of the intermediate require coordinated device updates.
  • Public key pin. Rotations of the certificate itself are safe as long as the public key doesn't change. Key rotations still require coordination.
  • Certificate transparency pin. Trust the CT logs; verify via them. Rarely used on mobile.

What actually happens in a fleet

A few patterns from the field:

  • Devices with stale time. A device with a clock that's drifted more than a few days will reject any certificate as expired or not-yet-valid. Time sync is more important than the pinning strategy.
  • Legacy Android versions. Devices running Android 7 or earlier don't handle certificate chains the same way as current versions. Pin behavior varies by SDK version.
  • The rotation window that isn't rehearsed. The pin is due to expire; the vendor has issued a new intermediate; the fleet update lags. Suddenly a fraction of the fleet is offline for authorization.

What to build

  • Backup pins. Pin the current and the next-in-rotation intermediate. This buys you time for the fleet update.
  • A well-monitored update pipeline. You need to know within hours, not weeks, if a segment of the fleet failed to accept the new pin.
  • A soft-failure mode for edge cases. Terminals that can't validate the pin should surface it clearly to the operator, not silently accept a downgraded connection.

Pinning is good. Pinning without a rotation plan is a scheduled outage.