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
bluedevxsign-in and accepts enrollment authentication requests initiated bybluedev-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
Important:
Whether deployed on a BlueRock VM or an independent VM, StepCA can generate TLS certificates using a Public IP address instead of a DNS domain. For successful enrollment, ensure firewall or security group rules permit inbound traffic from BlueRock host instances to the StepCA port via this IP.
Prerequisites and Installation
Extract the package source:
Install prerequisites:
For AL2023:
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.
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:
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
Create a Google OIDC Desktop Client App via the Google Cloud Console (Requires admin access privileges).
Note:
Set the redirect_uri to https://127.0.0.1/
Copy and edit the Google provider template:
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:
Register the OIDC provider and start services:
Check health status:
Expected Output:
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
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
Create an OIDC Desktop App using App Registrations in the Azure Portal.
Note:
Set the redirect_uri to https://localhost/ (127.0.0.1 is not supported for Entra ID).
Create and edit
entra.env: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.
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
Get the host enrollment string:
Expected output:
Log in to the target BlueRock VM and execute enrollment:
Enter the
BOUNCER_PASSWORDwhen 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-pubkeyflag is specified).Removes all host-certificate files (unless the
--keep-host-certflag 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