For the complete documentation index, see llms.txt. This page is also available as Markdown.

BlueDev Identity Deployment Kit

The Bluedev Identity Deployment Kit provides instructions for bringing up a StepCA server to manage OIDC provisioners and handle enrollment requests initiated by bluedev-bouncer on BlueRock hosts.

The StepCA server can be deployed either directly within a BlueRock VM instance or on a separate VM to serve multiple BlueRock instances. The StepCA package contains Docker files for StepCA and Caddy, along with just command scripts for setup and management.

  • StepCA: Registers OIDC provisioners for bluedevx sign-in and accepts enrollment authentication requests initiated by bluedev-bouncer.

  • Caddy (Optional): Handles automatic TLS certificate generation and maintenance from Let's Encrypt for public deployments. For private, VPN-gated network architectures, StepCA can run independently without Caddy by binding directly to a private interface.

StepCA Deployment

lightbulb-exclamation-on

Prerequisites and Installation

  1. Extract the package source:

  2. Install prerequisites:

    1. For AL2023:

    2. For Ubuntu:

Configure Environment

Navigate to the compose directory and configure the environment settings:

Set the bouncer password matched during BlueRock Host enrollment:

Choose a Deployment Architecture

Configure the .env file based on the required network architecture:

Private Deployment (without Caddy)

Use this configuration for a CA reachable over a VPN-gated private subnet or SSH tunnel (without Caddy). StepCA publishes directly on a specific interface using self-signed TLS certificates generated for the designated private IP.

notes-sticky

Note:

Avoid setting STEPCA_BIND_ADDR to 0.0.0.0. This configuration generates the leaf certificate without Subject Alternative Name (SAN) information and bypasses strict firewall routing. Specify the exact private IP address and let the subnet's security group serve as the security boundary.

For without caddy deployment, CADDY_DOMAIN should be blank.

Public Deployment (with Caddy)

Use this configuration for a publicly reachable StepCA server using Let's Encrypt or a local CA:

notes-sticky

Note:

When a registered public DNS domain is unavailable, set CADDY_DOMAIN directly to the Public IP address of the VM instance (for example, CADDY_DOMAIN=000.0.000.00). StepCA will include the Public IP in the Subject Alternative Names (SANs) of the certificate so client handshakes validate without certificate naming errors.

For without caddy deployment, CADDY_DOMAIN should be blank.

Configure Google Identity Provisioner

  1. Create a Google OIDC Desktop Client App via the Google Cloud Console (Requires admin access privileges).

notes-sticky

Note:

Set the redirect_uri to https://127.0.0.1/

  1. Copy and edit the Google provider template:

  2. Configure the required parameters:

Google Workspace Provisioner Configuration Variables

Review and define the following variables carefully before executing the provisioner setup script. Incorrect values will prevent successful host enrollment and developer authentication.

Variable

Description

Notes

PROVISIONER_NAME

The internal identifier for the OIDC provisioner within the StepCA configuration.

Example: google

ISSUER_URL

The OpenID Connect discovery endpoint for Google Workspace.

The value must be exactly [https://accounts.google.com](https://accounts.google.com).

CLIENT_ID

The OAuth 2.0 Client ID generated within the Google Cloud Console credentials page.

Required to identify the application to Google's authorization servers.

CLIENT_SECRET

The sensitive OAuth 2.0 Client Secret paired with the designated Client ID.

Must be kept secure and never committed to version control.

ADMINS

A comma-separated list of administrator email addresses authorized to manage the CA.

Example: admin@domain.com

DOMAIN_RESTRICT

The specific email domain authorized to authenticate via this OIDC provisioner.

Example: bluerock.io

BLUEDEV_DOMAINS

The domain name utilized for generating the SSH principal mapping.

Typically matches the DOMAIN_RESTRICT value.

DEFAULT_SSH_CERT_DURATION

The standard time-to-live (TTL) validity period assigned to issued SSH certificates.

Example: 8h

MAX_SSH_CERT_DURATION

The absolute maximum validity period permitted for issued SSH certificates.

Example: 24h

Service Bring-Up and Management

Review available commands using just help:

  1. Register the OIDC provider and start services:

  2. Check health status:

    Expected Output:

  3. Retrieve the auto-generated CA enrollment string:

    Output format:

    For private deployments, the generated fingerprint URL utilizes the specified private IP address. Output format:

Note:

To redeploy StepCA after configuration modifications, execute the teardown command followed by the bring-up command matching the chosen deployment architecture:

Enroll BlueRock Host

Log in to the BlueRock VM and execute the enrollment command using the generated CA URL:

Enter the BOUNCER_PASSWORD when prompted

notes-sticky

Note:

<STEP_CA_VM_PUBLIC_DNS_OR_PUBLIC_IP> accepts either the domain name or raw Public IP address of your StepCA server.

Configure Microsoft Entra ID Provisioner

  1. Create an OIDC Desktop App using App Registrations in the Azure Portal.

notes-sticky

Note:

Set the redirect_uri to https://localhost/ (127.0.0.1 is not supported for Entra ID).

  1. Create and edit entra.env:

  2. Configure the required parameters:

Entra ID Provisioner Configuration Variables

Review and define the following variables carefully before executing the provisioner setup script. Incorrect values will prevent successful host enrollment and developer authentication.

Variable
Description
Notes

PROVISIONER_NAME

The internal identifier for the OIDC provisioner within the StepCA configuration.

Example: entra

ISSUER_URL

The OpenID Connect discovery endpoint for the Microsoft Entra ID tenant.

Replace <TENANT_ID> with the exact Entra tenant ID.

CLIENT_ID

The Application (client) ID generated during the Entra ID app registration process.

Located in the Entra ID application overview panel.

ADMINS

A comma-separated list of administrator email addresses authorized to manage the CA.

Example: admin@domain.com

DOMAIN_RESTRICT

The specific email domain authorized to authenticate via this OIDC provisioner.

Example: bluerock.io

BLUEDEV_DOMAINS

The domain name utilized for generating the SSH principal mapping.

Typically matches the DOMAIN_RESTRICT value.

DEFAULT_SSH_CERT_DURATION

The standard time-to-live (TTL) validity period assigned to issued SSH certificates.

Example: 8h

MAX_SSH_CERT_DURATION

The absolute maximum validity period permitted for issued SSH certificates.

Example: 24h

Bring-Up Service

Register the Entra ID provider and start services:

Retrieve Fingerprint and Enroll Host

  1. Get the host enrollment string:

    Expected output:

  2. Log in to the target BlueRock VM and execute enrollment:

    Enter the BOUNCER_PASSWORD when prompted

Unenroll a BlueRock Host

If the BlueRock Identity Service was previously configured on a host instance, the bouncer must be unenrolled to prevent configuration conflicts before switching to a different authentication method (such as SSH Key Trust) or decommissioning the environment.

To reverse a host enrollment and clear the Certificate Authority (CA) trust configuration, execute the following command directly on the BlueRock host instance terminal:

Command Actions:

The unenroll command reverses the enroll process. Upon execution, it performs the following system modifications:

  • Removes the bouncer SSH configuration file (/etc/ssh/sshd_config.d/51-bluedev-bouncer-ca.conf).

  • Deletes the CA public key located at /etc/bluedev/user_ca.pub (unless the --keep-ca-pubkey flag is specified).

  • Removes all host-certificate files (unless the --keep-host-cert flag is specified).

Bluedev Bouncer CLI Reference

The bluedev-bouncer runs directly on the target BlueRock host to handle system setup and CA trust enrollment. Below is the complete command-line interface surface for operator reference.

Expected output:

View Active bluedev-bouncer Sessions

Execute the bluedev-bouncer sessions command to display all containers managed by the bluedev-bouncer and view active client sessions on the BlueRock host:

Last updated