Revoking a Hyperledger Fabric certificate removes trust in a specific Fabric CA enrollment certificate before its expiry. Use it when a private key is exposed, an operator leaves a role, or an old MSP copy should no longer authorize Fabric actions.
Fabric CA revokes certificates by the certificate serial number and Authority Key Identifier (AKI). The fabric-ca-client revoke command updates the CA database, and --gencrl writes a PEM certificate revocation list under the admin MSP.
The CRL must reach the MSPs that enforce membership before Fabric peers, orderers, or applications reject the revoked material. Keep a separate non-revoked admin MSP available, because revoking the wrong admin certificate can block the organization from signing the channel update that publishes the CRL.
Steps to revoke a Fabric CA enrollment certificate:
- Inspect the certificate stored in the MSP that should lose access.
$ openssl x509 -in auditor/msp/signcerts/cert.pem -noout -subject -issuer -serial subject=C=US, ST=North Carolina, O=Hyperledger, OU=client, CN=auditor1 issuer=C=US, ST=North Carolina, O=Hyperledger, OU=Fabric, CN=fabric-ca-server serial=38978BA61BF07D144A44A5EF63D7F39C02A7270F
Use the MSP path that the Fabric client, peer, or orderer actually uses. For a peer local MSP, this is the path configured as peer.mspConfigPath. For an orderer local MSP, it is General.LocalMSPDir.
Tool: SSL Certificate Decoder - List the unrevoked certificate record from the CA.
$ fabric-ca-client certificate list --id auditor1 --notrevoked --notexpired --url https://ca.org1.example.com:7054 --caname ca-org1 --tls.certfiles tls-root-cert/ca-org1.pem --mspdir admin/msp Certificate: Data: Serial Number: 323083060822868405042486441490361677633259251471 (0x38978ba61bf07d144a44a5ef63d7f39c02a7270f) Issuer: C=US,ST=North Carolina,O=Hyperledger,OU=Fabric,CN=fabric-ca-server Subject: C=US,ST=North Carolina,O=Hyperledger,OU=client,CN=auditor1 X509v3 Authority Key Identifier: keyid:1E:F3:4A:E3:84:2F:BC:02:F5:5F:60:05:41:AB:2C:21:5A:A8:B0:D5 ##### snipped #####Use the hex serial from the 0x value without the 0x prefix. Use the keyid value without colons for the AKI.
- Revoke the certificate and generate a CRL in the admin MSP.
$ fabric-ca-client revoke --revoke.serial 38978BA61BF07D144A44A5EF63D7F39C02A7270F --revoke.aki 1ef34ae3842fbc02f55f600541ab2c215aa8b0d5 --revoke.reason keycompromise --gencrl --url https://ca.org1.example.com:7054 --caname ca-org1 --tls.certfiles tls-root-cert/ca-org1.pem --mspdir admin/msp 2026/06/21 10:40:41 [INFO] Successfully revoked certificates: [{Serial:38978ba61bf07d144a44a5ef63d7f39c02a7270f AKI:1ef34ae3842fbc02f55f600541ab2c215aa8b0d5}] 2026/06/21 10:40:41 [INFO] Successfully stored the CRL in the file /home/fabric/fabric-ca-client/admin/msp/crls/crl.pem--revoke.name revokes all certificates for an enrollment ID. Use --revoke.serial and --revoke.aki when only one certificate should be invalidated.
- Confirm the CRL contains the revoked serial.
$ openssl crl -in admin/msp/crls/crl.pem -noout -text Certificate Revocation List (CRL): Version 2 (0x1) Signature Algorithm: ecdsa-with-SHA256 Issuer: C=US, ST=North Carolina, O=Hyperledger, OU=Fabric, CN=fabric-ca-server Last Update: Jun 21 10:40:41 2026 GMT Next Update: Jun 22 10:40:41 2026 GMT Revoked Certificates: Serial Number: 38978BA61BF07D144A44A5EF63D7F39C02A7270F Revocation Date: Jun 21 10:40:41 2026 GMT ##### snipped ##### - Install the CRL into local MSPs that verify this organization from disk.
$ install -D -m 0644 admin/msp/crls/crl.pem organizations/peerOrganizations/org1.example.com/msp/crls/crl.pem
Repeat this for each peer, orderer, gateway, or application runtime that reads a local MSP copy for the affected organization.
- Submit the channel config update that adds the CRL to the organization MSP.
$ peer channel update -f org1-crl-update.tx -c mychannel -o orderer.example.com:7050 --tls --cafile orderer/tls/ca.crt 2026-06-21 10:47:12.232 UTC 0001 INFO [channelCmd] update -> Successfully submitted channel update
The update transaction must place the CRL in the channel MSP for Org1MSP and carry the signatures required by the channel policy. A local MSP file copy alone does not update existing channel MSP configuration.
- Retest a Fabric action with the revoked MSP after the channel update is committed.
$ CORE_PEER_MSPCONFIGPATH=auditor/msp peer chaincode query -C mychannel -n asset-transfer -c '{"Args":["ReadAsset","asset1"]}' Error: endorsement failure during query. response: status:500 message:"access denied: creator certificate is revoked"Use an operation the certificate previously authorized. A different policy or TLS error means the retest did not reach the CRL enforcement path.
Mohd Shakir Zakaria is a cloud architect with deep roots in software development and open-source advocacy. Certified in AWS, Red Hat, VMware, ITIL, and Linux, he specializes in designing and managing robust cloud and on-premises infrastructures.