A Rails engine to manage and automatically obtain, install and renew SSL certificates.
CertWatch consists of the following components:
- Resque jobs to renew and install certificates.
- A mixin for models with a
cnameattribute to request certificats on attribute change.
- An Active Admin resource to manage certificates.
- An Arbre view component to display certificate status for a given domain.
- Rails 4
- Resque Scheduler
- Resque Logger
Add the following lines to your
Gemfile and run
gem 'cert-watch' # Required since state_machine gem is unmaintained gem 'state_machine', git: 'https://github.com/codevise/state_machine.git'
Add an initializer:
# config/initializers/cert_watch.rb . do |config| # ... end
CertWatch::Documentation for a list of available config
DomainOwner mixin into a model with a domain
attribute. This makes CertWatch obtain or renew certificates whenever
the attribute changes. Validation has to be provided by the host
# app/models/account.rb # assuming Account has a cname attribute class Account include .(attribute: :cname) end
If you want to use the Active Admin resource, add the following line to the top of your Active Admin initializer:
# config/initializers/active_admin.rb ActiveAdmin.application.load_paths.unshift(.)
Now install migrations and migrate your database:
$ bin/rake cert_watch:install:migrations $ bin/rake db:migrate
resque_schedule.yml to check for expiring certificates:
# config/resque_schedule.yml fetch_billed_traffic_usages: every: - "5h" - :first_in: "1m" class: "CertWatch::RenewExpiringCertificatesJob" queue: cert_watch description: "Check for expiring SSL certificates"
Finally ensure Resque workers have been assigned to the
Active Admin View Components
You can render a status tag displaying the current certificate state for a given domain:
# app/admin/dashboard.rb require 'cert_watch/views/certificate_state' div(class: 'account_cname') do text_node(account.cname) cert_watch_certificate_state(account.cname) end