Files
rustfs/protocol/agent/v1/fixtures/auth/certificate-profile.json
T

83 lines
2.7 KiB
JSON

{
"protocolVersion": "v1",
"fixtureSet": "auth",
"fixture": "certificate-profile",
"description": "Frozen shape of the client certificate an online device presents and of the RFC 9440 header that conveys it.",
"certificate": {
"subject": {
"rdnCount": 1,
"commonName": "{clusterDeviceUid}",
"forbiddenAttributes": ["O", "OU", "C", "ST", "L", "emailAddress"]
},
"subjectAlternativeName": {
"entryCount": 1,
"type": "uniformResourceIdentifier",
"value": "urn:rustfs:connect:device:{clusterDeviceUid}",
"forbiddenTypes": ["dNSName", "iPAddress", "rfc822Name", "directoryName"],
"wildcardsAccepted": false
},
"clusterDeviceUid": {
"source": "cluster_devices.uid",
"format": "lowercase canonical UUIDv7",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
},
"keyAlgorithm": "EC",
"keyCurve": "P-256",
"signatureAlgorithm": "ES256",
"certificateSigningRequest": {
"format": "PKCS#10",
"signatureAlgorithm": "ES256",
"proofOfPossession": "self-signed with the device private key"
},
"lifetimeSeconds": 86400,
"maxRotationOverlapSeconds": 86400,
"recommendedRotationLeadSeconds": 28800,
"maxPresentableCredentialsPerDevice": 2,
"serial": {
"encoding": "lowercase-hex",
"length": 32,
"pattern": "^[0-9a-f]{32}$",
"entropyBits": 128
},
"certificateFingerprint": {
"algorithm": "SHA-256",
"over": "DER certificate",
"encoding": "lowercase-hex",
"pattern": "^[0-9a-f]{64}$"
},
"publicKeyFingerprint": {
"algorithm": "SHA-256",
"over": "DER SubjectPublicKeyInfo",
"encoding": "lowercase-hex",
"pattern": "^[0-9a-f]{64}$"
},
"keyId": {
"pattern": "^[a-z0-9][a-z0-9._-]{7,127}$"
},
"carriesOrganizationIdentifier": false,
"carriesClusterIdentifier": false,
"tenantBinding": {
"source": "device_credentials matched by certificate serial and certificate fingerprint",
"resolver": "ClusterDeviceIdentityPort::resolveOnlineCertificate"
}
},
"header": {
"name": "Client-Cert",
"specification": "RFC 9440",
"encoding": "sf-binary",
"valueTemplate": ":{base64(DER certificate)}:",
"example": ":MIIBkDCCATagAwIBAgIQZXhhbXBsZQ==:",
"chainHeader": {
"name": "Client-Cert-Chain",
"accepted": false,
"reason": "Chain validation belongs to the trusted ingress, which verifies against the Connect device CA before forwarding."
},
"setByTrustedIngressOnly": true,
"inboundHeaderStripped": true,
"appendAccepted": false,
"acceptedOnSurfaces": ["/agent"],
"ignoredOnSurfaces": ["/api"],
"backendPubliclyReachable": false
}
}