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.
$ 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
$ 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.
$ 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.
$ 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 -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.
$ 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.
$ 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.