Renewing a Hyperledger Fabric certificate replaces an expiring Fabric CA enrollment certificate in an existing MSP before the identity stops authenticating. It is a maintenance task for admin, client, peer, or orderer identities that were originally enrolled with Fabric CA.
fabric-ca-client reenroll authenticates with the current MSP certificate and writes a new signed certificate into the selected MSP directory. The CA server keeps the identity record, while the client refreshes signcerts and may create a new private key under keystore unless key reuse is requested.
Run renewal before the current certificate expires. If the certificate is already expired, the CA server must allow expired-certificate reenrollment with ca.reenrollignorecertexpiry or the identity needs a new enrollment path through an authorized registrar.
$ openssl x509 -in admin/msp/signcerts/cert.pem -noout -subject -issuer -dates -serial subject=C=US, ST=North Carolina, O=Hyperledger, OU=client, CN=admin issuer=C=US, ST=North Carolina, O=Hyperledger, OU=Fabric, CN=fabric-ca-server notBefore=Jun 21 09:42:00 2025 GMT notAfter=Jun 21 09:42:00 2026 GMT serial=549BFD4DAE9A4AEC1A27990DE0675BDA569AC9AC
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.
$ cp -a admin/msp admin/msp.before-renewal
The renewed MSP may contain a new private key. Keep the backup until a Fabric command, node startup, or application connection has succeeded with the renewed MSP.
$ fabric-ca-client reenroll --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:15:22 [INFO] Configuration file location: /home/fabric/fabric-ca-client/fabric-ca-client-config.yaml
2026/06/21 10:15:22 [INFO] generating key: &{A:ecdsa S:256}
2026/06/21 10:15:22 [INFO] encoded CSR
2026/06/21 10:15:22 [INFO] Stored client certificate at /home/fabric/fabric-ca-client/admin/msp/signcerts/cert.pem
2026/06/21 10:15:22 [INFO] Stored root CA certificate at /home/fabric/fabric-ca-client/admin/msp/cacerts/ca-org1.pem
Omit --caname when the server has only the default CA. Add --csr.keyrequest.reusekey only when the deployment policy requires the existing private key to be reused.
$ openssl x509 -in admin/msp/signcerts/cert.pem -noout -subject -issuer -dates -serial subject=C=US, ST=North Carolina, O=Hyperledger, OU=client, CN=admin issuer=C=US, ST=North Carolina, O=Hyperledger, OU=Fabric, CN=fabric-ca-server notBefore=Jun 21 10:15:00 2026 GMT notAfter=Jun 21 10:15:00 2027 GMT serial=7AA491352FE32301B2E9B0E38DA16483617A382E
The subject and issuer should still match the intended identity and CA, while the serial number and validity window should reflect the renewed certificate.
Tool: SSL Certificate Decoder
$ docker compose restart peer0.org1.example.com Container peer0.org1.example.com Restarting Container peer0.org1.example.com Started
Use the service manager for the actual deployment, such as systemd, Kubernetes, or Docker Compose. Admin and client MSPs used by short-lived CLI commands normally take effect on the next command invocation.
$ fabric-ca-client certificate list --id admin --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: 7AA491352FE32301B2E9B0E38DA16483617A382E
Issuer: C=US,ST=North Carolina,O=Hyperledger,OU=Fabric,CN=fabric-ca-server
Validity
Not Before: Jun 21 10:15:00 2026 UTC
Not After : Jun 21 10:15:00 2027 UTC
Subject: C=US,ST=North Carolina,O=Hyperledger,OU=client,CN=admin
##### snipped #####
The lookup may also show earlier unrevoked certificates for the same enrollment ID. The important check is that the renewed serial appears and the command succeeds with the renewed MSP.