Google Cloud Private Certificate Authority API client library for certificate lifecycle management
—
Core certificate lifecycle operations including creation, retrieval, listing, revocation, and metadata updates. Supports X.509 certificates with comprehensive configuration options, certificate signing requests (CSRs), and various certificate formats.
Creates a new certificate within a CA pool using either a certificate signing request (CSR) or automatic key generation. Supports various certificate types including end-entity certificates and certificate authorities.
def create_certificate(
self,
request: Union[CreateCertificateRequest, dict] = None,
*,
parent: str = None,
certificate: Certificate = None,
certificate_id: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: Union[float, object] = gapic_v1.method.DEFAULT,
metadata: Sequence[Tuple[str, Union[str, bytes]]] = (),
) -> Certificate:
"""
Create a new certificate in a CA pool.
Args:
request: The request object with certificate details
parent: CA pool path (format: projects/{project}/locations/{location}/caPools/{ca_pool})
certificate: Certificate configuration and CSR
certificate_id: Unique identifier for the certificate
retry: Retry configuration for the request
timeout: Request timeout in seconds
metadata: Additional metadata as (key, value) pairs as (key, value) pairs
Returns:
Certificate: The created certificate resource
Raises:
google.api_core.exceptions.GoogleAPIError: If the request fails
"""Retrieves a specific certificate by its resource name, including all certificate details, metadata, and current status.
def get_certificate(
self,
request: Union[GetCertificateRequest, dict] = None,
*,
name: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: Union[float, object] = gapic_v1.method.DEFAULT,
metadata: Sequence[Tuple[str, Union[str, bytes]]] = (),
) -> Certificate:
"""
Get a certificate by name.
Args:
request: The request object
name: Certificate resource name (format: projects/{project}/locations/{location}/caPools/{ca_pool}/certificates/{certificate})
retry: Retry configuration
timeout: Request timeout in seconds
metadata: Additional metadata as (key, value) pairs
Returns:
Certificate: The requested certificate resource
"""Lists certificates within a CA pool with optional filtering and pagination. Supports ordering by creation time and filtering by certificate state.
def list_certificates(
self,
request: Union[ListCertificatesRequest, dict] = None,
*,
parent: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: Union[float, object] = gapic_v1.method.DEFAULT,
metadata: Sequence[Tuple[str, Union[str, bytes]]] = (),
) -> pagers.ListCertificatesPager:
"""
List certificates in a CA pool.
Args:
request: The request object
parent: CA pool path
retry: Retry configuration
timeout: Request timeout in seconds
metadata: Additional metadata as (key, value) pairs
Returns:
pagers.ListCertificatesPager: Paginated response of certificates
"""Revokes a certificate, marking it as invalid and adding it to the Certificate Revocation List (CRL). Supports various revocation reasons and immediate revocation.
def revoke_certificate(
self,
request: Union[RevokeCertificateRequest, dict] = None,
*,
name: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: Union[float, object] = gapic_v1.method.DEFAULT,
metadata: Sequence[Tuple[str, Union[str, bytes]]] = (),
) -> Certificate:
"""
Revoke a certificate.
Args:
request: The request object containing revocation details
name: Certificate resource name
retry: Retry configuration
timeout: Request timeout in seconds
metadata: Additional metadata as (key, value) pairs
Returns:
Certificate: The revoked certificate with updated status
"""Updates certificate metadata and labels. Note that certificate content cannot be modified after creation, only metadata fields.
def update_certificate(
self,
request: Union[UpdateCertificateRequest, dict] = None,
*,
certificate: Certificate = None,
update_mask: field_mask_pb2.FieldMask = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: Union[float, object] = gapic_v1.method.DEFAULT,
metadata: Sequence[Tuple[str, Union[str, bytes]]] = (),
) -> Certificate:
"""
Update certificate metadata.
Args:
request: The request object
certificate: Certificate with updated fields
update_mask: Fields to update
retry: Retry configuration
timeout: Request timeout in seconds
metadata: Additional metadata as (key, value) pairs
Returns:
Certificate: Updated certificate resource
"""class CreateCertificateRequest:
"""Request to create a certificate."""
parent: str # CA pool path
certificate_id: str # Unique certificate identifier
certificate: Certificate # Certificate configuration
request_id: str # Idempotency token
validate_only: bool # Validation-only mode
issuing_certificate_authority_id: str # Specific CA to use
class GetCertificateRequest:
"""Request to get a certificate."""
name: str # Certificate resource name
class ListCertificatesRequest:
"""Request to list certificates."""
parent: str # CA pool path
page_size: int # Maximum results per page
page_token: str # Pagination token
filter: str # Filter expression
order_by: str # Sort order
class RevokeCertificateRequest:
"""Request to revoke a certificate."""
name: str # Certificate resource name
reason: RevocationReason # Reason for revocation
request_id: str # Idempotency token
class UpdateCertificateRequest:
"""Request to update a certificate."""
certificate: Certificate # Certificate with updates
update_mask: field_mask_pb2.FieldMask # Fields to update
request_id: str # Idempotency tokenclass Certificate:
"""A certificate issued by a Certificate Authority."""
name: str # Resource name
pem_csr: str # PEM-encoded certificate signing request
config: CertificateConfig # Certificate configuration
lifetime: duration_pb2.Duration # Certificate lifetime
certificate_template: str # Template used
subject_mode: SubjectRequestMode # Subject handling mode
revocation_details: RevocationDetails # Revocation information (if revoked)
pem_certificate: str # PEM-encoded certificate (output only)
certificate_description: CertificateDescription # Parsed certificate details (output only)
pem_certificate_chain: List[str] # Certificate chain (output only)
create_time: timestamp_pb2.Timestamp # Creation time (output only)
update_time: timestamp_pb2.Timestamp # Last update time (output only)
labels: Dict[str, str] # Resource labels
class CertificateConfig:
"""Certificate configuration for creation."""
subject_config: SubjectConfig # Certificate subject
x509_config: X509Parameters # X.509 parameters
public_key: PublicKey # Public key (for CSR mode)
class RevocationDetails:
"""Details about certificate revocation."""
revocation_state: RevocationState # Current revocation state
revocation_time: timestamp_pb2.Timestamp # When revoked
revocation_reason: RevocationReason # Reason for revocationfrom google.cloud.security.privateca import CertificateAuthorityServiceClient
from google.cloud.security.privateca import Certificate, CertificateConfig
client = CertificateAuthorityServiceClient()
# Prepare certificate configuration
certificate = Certificate(
pem_csr="-----BEGIN CERTIFICATE REQUEST-----\n...\n-----END CERTIFICATE REQUEST-----",
lifetime={"seconds": 86400 * 365} # 1 year
)
# Create the certificate
parent = "projects/my-project/locations/us-central1/caPools/my-ca-pool"
response = client.create_certificate(
parent=parent,
certificate_id="my-certificate",
certificate=certificate
)
print(f"Created certificate: {response.name}")
print(f"PEM certificate:\n{response.pem_certificate}")# List all certificates
parent = "projects/my-project/locations/us-central1/caPools/my-ca-pool"
certificates = client.list_certificates(parent=parent)
for certificate in certificates:
print(f"Certificate: {certificate.name}")
print(f"Status: {certificate.revocation_details.revocation_state if certificate.revocation_details else 'ACTIVE'}")
# List with filtering
filtered_certificates = client.list_certificates(
parent=parent,
filter='labels.environment="production"',
order_by="create_time desc"
)from google.cloud.security.privateca import RevokeCertificateRequest, RevocationReason
certificate_name = "projects/my-project/locations/us-central1/caPools/my-ca-pool/certificates/my-certificate"
revoked_cert = client.revoke_certificate(
name=certificate_name,
reason=RevocationReason.KEY_COMPROMISE
)
print(f"Certificate revoked: {revoked_cert.name}")
print(f"Revocation time: {revoked_cert.revocation_details.revocation_time}")Install with Tessl CLI
npx tessl i tessl/pypi-google-cloud-private-ca