Skip to content
Your own x.509 cert manager
Ruby HTML Makefile JavaScript CSS Dockerfile Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
app
bin [Roy|Sankalp] Boot Kingsly Dec 5, 2018
config request cert from the UI (#36) Aug 2, 2019
db [Tasdik] Use Figaro for config management, add Makefile for ease of u… May 19, 2019
docs/deploy/k8s [Tasdik] Fix kingsly-worker deployment configmap reference May 23, 2019
lib [Roy|Sankalp] Boot Kingsly Dec 5, 2018
log [Roy|Sankalp] Boot Kingsly Dec 5, 2018
public [Roy|Sankalp] Boot Kingsly Dec 5, 2018
spec [Amir|Tasdik] renewing cert only if it is getting expired in the conf… Jan 30, 2019
storage [Roy|Sankalp] Boot Kingsly Dec 5, 2018
tmp [Roy|Sankalp] Boot Kingsly Dec 5, 2018
.dockerignore Ignore only config/application.yml when building docker image Jan 4, 2019
.env.sample
.gitignore [Tasdik] Add .rbenv-gemset in .gitignore, Add timer for make rpsec, f… May 19, 2019
.rspec [Sankalp] Test Kingsly Dec 6, 2018
.ruby-version Upgrade ruby from 2.3.1 -> 2.3.3, lock bootstrap to 4.3.1, use figaro… May 17, 2019
.travis.yml [Tasdik] Stop postgresql service in CI for docker-compose to be able … May 19, 2019
Dockerfile [Tasdik] Adding description of the discussion link for issue #24 May 19, 2019
Gemfile Upgrade ruby from 2.3.1 -> 2.3.3, lock bootstrap to 4.3.1, use figaro… May 17, 2019
Gemfile.lock Upgrade ruby from 2.3.1 -> 2.3.3, lock bootstrap to 4.3.1, use figaro… May 17, 2019
LICENSE Update README to reflect a completed feature, refactor to include det… May 2, 2019
Makefile
README.md [Tasdik] Fix documentation to refer to correct make commands May 31, 2019
Rakefile [Roy|Sankalp] Boot Kingsly Dec 5, 2018
clock.rb Renew certs reaching expiration Dec 28, 2018
config.ru [Roy|Sankalp] Boot Kingsly Dec 5, 2018
docker-compose.yml
docker-entrypoint.sh [Tasdik] Add .env.sample, cache bundle install, replace redis with po… May 19, 2019
package.json [Roy|Sankalp] Boot Kingsly Dec 5, 2018

README.md

Kingsly

Build Status

An attempt to automate SSL certs management. This Cert manager helps generate SSL certs, renews them automatically.

Assumptions

  • The FQDN points to a public IP address
  • An FQDN points to only one IP address

Dev Setup

Install docker-compose

If you're on OS X, please follow the instructions to install docker. Or if you're on a Unix based distribution, you can follow the instructions here to install docker-compose.

# For Linux based machines
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-
$ sudo chmod +x /usr/local/bin/docker-compose
  • Run $ make .env to create .env for the application from .env.sample

Opening the web interface on your dev machine

$ make docker.start

You can then open localhost:8080

To stop the docker containers

$ make docker.stop

Running the specs

$ make rspec

Example APIs

  • Creating SSL certs for a domain:
    • Request:
curl -X POST http://kingsly.host/v1/cert_bundles \
  -u admin:password \
  -H 'Content-Type: application/json' \
  -d '{
        "top_level_domain":"your-domain.com",
        "sub_domain": "your-sub-domain"
    }'
  • Response:
'{
  "private_key":"-----BEGIN RSA PRIVATE KEY-----\nFOO...\n-----END RSA PRIVATE KEY-----\n",
  "full_chain":"-----BEGIN CERTIFICATE-----\nBAR...\n-----END CERTIFICATE-----\n"
}'

Deploying

Please refer to deployment docs here

TODO

  • check for ACME account creation without email id (maybe initialize account only once?)
  • tracks if the client has the updated cert (WIP: #5)

License

Copyright 2018, GO-JEK Tech <http://gojek.tech>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
You can’t perform that action at this time.