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 accept 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.
Public Deployment (with Caddy)
Use this configuration for a publicly reachable StepCA server using Let's Encrypt or a local CA:
Configure Google Identity Provisioner
Create a Google OIDC Desktop Client App via the Google Cloud Console (Requires admin privileges) to enable Google Workspace integration. To create a Google OIDC app:
Access the Google Cloud Console and select or create a project.
Navigate to APIs & Services, then select Credentials.
Configure the OAuth Consent Screen by selecting the user type (Internal or External) and defining the mandatory fields, such as the App Name and support email.
Select Create Credentials and choose OAuth client ID.
Select Desktop app as the Application type. This automatically sets the redirect URI to
http://127.0.0.1. Define a name and select Create.Copy the generated Client ID and Client Secret.
Important:
For additional context on Google's authentication protocols, refer to the official documentation:
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 enrolment string:
Output format:
For private deployments, the generated fingerprint URL utilizes the specified private IP address. Output format:
Important:
Executing a destructive teardown regenerates the CA fingerprint and requires re-enrolling the bouncer on all VMs. Do not execute just down --force for routine configuration modifications.
To apply configuration changes to an existing deployment without losing the CA fingerprint, execute the non-destructive update command:
Modifying Certificate Expiration (TTL)
To extend the session validity period and reduce sign-out frequency, update the Time-to-Live (TTL) settings in the provider configuration.
Open the relevant provider environment file (for example,
providers/entra.envorproviders/google.env).Update the duration parameters to the required validity period (for example, 168 hours). The
MAX_SSH_CERT_DURATIONvalue must always be greater than or equal to theDEFAULT_SSH_CERT_DURATIONvalue:Apply the configuration changes by executing the non-destructive update command:
Enrol BlueRock Host
Log in to the BlueRock VM and execute the enrollment command using the generated CA URL:
Enter the BOUNCER_PASSWORD when prompted
Configure Microsoft Entra ID Provisioner
Create an OIDC Desktop App using App Registrations in the Azure Portal to enable Microsoft Entra ID integration. To create a Microsoft Entra ID app:
Access the Azure Portal and navigate to Microsoft Entra ID.
Select App registrations, then select New registration.
Define the application name and select the supported organizational directory account types.
Set the Platform to Public client (mobile & desktop).
Set the Redirect URI to
http://127.0.0.1.Select Register and copy the generated Application (client) ID.
Important:
For detailed architectural context, refer to the official Microsoft identity platform documentation.
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