Skip to content

Deployment & Implementation Guide

James 'J.C.' Jones edited this page Jun 22, 2015 · 5 revisions

This document will grow to include details useful for those wishing to operate a CA using Boulder.

THIS DOCUMENT IS A DRAFT

Outline

  1. Security Contexts
  2. Inter-Process Communication
  3. Distributed Validation Authorities
  4. Database Permissions
  5. OCSP
  6. Audit Logging

Security Contexts

Spread the different Boulder components into appropriate security contexts, and apply restrictive firewall rules.

Inter-Process Communication

Transport Security

Use AMQPS (AMQP over TLS) with client-certificates for all internal communication. In Boulder, configure this with the "amqp->tls" configuration section.

Per-Client Permissions

Each Boulder instance should have only its' own AMQP account information, and each account should be restricted to writing to only the necessary topics. A sample configuration and configuration tool reside at {{TBD}}.

Distributed Validation Authorities

The VA is designed to be run in multiple locations, to test multiple paths to validate domains.

You should configure an appropriate voting quorum in the RA based on your performance metrics. For example, if you have 4 VAs, you may want to hear positive answers from 3 and no negative answers before issuing.

Database Permissions

Each Boulder process requiring DB access should do so with its' own DB account information, and each account should be restricted to the minimum permissions required.

OCSP

Run the OCSP Updater tool regularly, and from an appropriate security context.

Audit Logging

All log messages defined by the Baseline Requirements as auditable events, as well as others defined by the Boulder team, are marked with the string [AUDIT] at the beginning of their message payload. These messages should be specially filtered and retained per your audit requirements.

NOTE: There is an outstanding issue with reliable logging from Boulder directly, Issue #298. Implementing parties should log using UNIX sockets to a standard logging daemon on the host system (syslog-ng, rsyslog, etc), and configure that to transmit the logs over TCP if they need to go off-box.