From 9330c4fecd71d7af177b17521b409aaa5cfa4a88 Mon Sep 17 00:00:00 2001 From: Max Woolf Date: Tue, 6 Dec 2016 14:50:54 +0000 Subject: [PATCH] 2.0 Rewrite. (#28) * start adding tests * auth token authentiation; * more core calls * teardown method * more * create client * throw exception unless email set * register * check for email and api key * set domains and zones * more * dockerize * add vcr * dont commit secrets * refactor and pass tests * generate more * more * actually create * more * more nad more * bit more * two broken things * add logging module * write logs to redis * more * test travis * set travis version * add docker compose * more update * try again * ruby * always use live * all tests pass * update readme * add env file to build * add redis url * fix failing tesst --- .dockerignore | 1 + .env.sample | 2 +- .travis.yml | 11 +- Dockerfile | 13 + Gemfile | 6 +- Gemfile.lock | 18 +- README.md | 61 +- Rakefile | 5 +- apiary.apib | 57 -- app.rb | 70 +- docker-compose.yml | 32 + lib/acme_client_registration.rb | 25 + lib/certificate_generator.rb | 19 + lib/challenge.rb | 8 +- lib/cloudflare_challenge.rb | 38 + lib/logger.rb | 18 + lib/preflight_check.rb | 26 + lib/provisioners/heroku.rb | 47 + test/acme_client_registration_test.rb | 73 ++ test/app_test.rb | 77 ++ test/certificate_generator_test.rb | 24 + test/cloudflare_challenge_test.rb | 83 ++ .../vcr_cassettes/acme-challenge-debug.yml | 473 +++++++++ .../fixtures/vcr_cassettes/acme-new-authz.yml | 485 ++++++++++ .../vcr_cassettes/acme-new-reg-debug.yml | 177 ++++ test/fixtures/vcr_cassettes/acme-new-reg.yml | 177 ++++ ...check-cloudflare-authentiation-failure.yml | 55 ++ ...check-cloudflare-authentiation-success.yml | 53 + .../check-heroku-authentication-failure.yml | 46 + .../check-heroku-authentication-succeed.yml | 62 ++ .../new-cert-provisioner-heroku-success.yml | 860 +++++++++++++++++ .../new-cert-provisioner-heroku.yml | 907 ++++++++++++++++++ .../vcr_cassettes/new-certificate-debug.yml | 753 +++++++++++++++ .../vcr_cassettes/new-reg-debug-2.yml | 361 +++++++ .../vcr_cassettes/new-reg-debug-3.yml | 647 +++++++++++++ test/logger_test.rb | 39 + test/preflight_check_test.rb | 42 + test/provisioners/heroku_test.rb | 34 + test/test_helper.rb | 19 + workers/base.rb | 2 +- workers/cloudflare_challenge_worker.rb | 35 + 41 files changed, 5803 insertions(+), 138 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile delete mode 100644 apiary.apib create mode 100644 docker-compose.yml create mode 100644 lib/acme_client_registration.rb create mode 100644 lib/certificate_generator.rb create mode 100644 lib/cloudflare_challenge.rb create mode 100644 lib/logger.rb create mode 100644 lib/preflight_check.rb create mode 100644 lib/provisioners/heroku.rb create mode 100644 test/acme_client_registration_test.rb create mode 100644 test/app_test.rb create mode 100644 test/certificate_generator_test.rb create mode 100644 test/cloudflare_challenge_test.rb create mode 100644 test/fixtures/vcr_cassettes/acme-challenge-debug.yml create mode 100644 test/fixtures/vcr_cassettes/acme-new-authz.yml create mode 100644 test/fixtures/vcr_cassettes/acme-new-reg-debug.yml create mode 100644 test/fixtures/vcr_cassettes/acme-new-reg.yml create mode 100644 test/fixtures/vcr_cassettes/check-cloudflare-authentiation-failure.yml create mode 100644 test/fixtures/vcr_cassettes/check-cloudflare-authentiation-success.yml create mode 100644 test/fixtures/vcr_cassettes/check-heroku-authentication-failure.yml create mode 100644 test/fixtures/vcr_cassettes/check-heroku-authentication-succeed.yml create mode 100644 test/fixtures/vcr_cassettes/new-cert-provisioner-heroku-success.yml create mode 100644 test/fixtures/vcr_cassettes/new-cert-provisioner-heroku.yml create mode 100644 test/fixtures/vcr_cassettes/new-certificate-debug.yml create mode 100644 test/fixtures/vcr_cassettes/new-reg-debug-2.yml create mode 100644 test/fixtures/vcr_cassettes/new-reg-debug-3.yml create mode 100644 test/logger_test.rb create mode 100644 test/preflight_check_test.rb create mode 100644 test/provisioners/heroku_test.rb create mode 100644 test/test_helper.rb create mode 100644 workers/cloudflare_challenge_worker.rb diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..48c7560 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +.git/* diff --git a/.env.sample b/.env.sample index 8c617db..4857372 100644 --- a/.env.sample +++ b/.env.sample @@ -1,6 +1,6 @@ CLOUDFLARE_API_KEY= CLOUDFLARE_EMAIL= HEROKU_OAUTH_KEY= -REDIS_URL= +REDIS_URL=redis://redis:6379 AUTH_TOKEN= CONTACT_EMAIL= diff --git a/.travis.yml b/.travis.yml index b296427..e8faba7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,10 @@ -language: ruby +sudo: required +services: + - docker + rvm: - - 2.3.1 + - 2.3.3 + +script: + - cp .env.sample .env + - docker-compose run --rm web rake diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..2644dc8 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,13 @@ +FROM ruby:2.3 + +ENV APP_HOME /opt/letsencrypt-heroku +RUN mkdir /opt/letsencrypt-heroku +WORKDIR $APP_HOME + +ADD Gemfile* $APP_HOME/ + +ENV BUNDLE_GEMFILE=$APP_HOME/Gemfile \ + BUNDLE_JOBS=2 \ + BUNDLE_PATH=/bundle + +RUN bundle install diff --git a/Gemfile b/Gemfile index 4691432..6a21f24 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,6 @@ source 'https://rubygems.org' -ruby '2.3.1' +ruby '2.3.3' gem 'sinatra' gem 'json-jwt', '1.5.2' @@ -12,3 +12,7 @@ gem 'dotenv' gem 'sidekiq' gem 'redis' gem 'rake' +gem 'minitest' +gem 'rack-test' +gem 'vcr' +gem 'webmock' diff --git a/Gemfile.lock b/Gemfile.lock index 02ff62e..ea34698 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -9,14 +9,18 @@ GEM i18n (~> 0.7) minitest (~> 5.1) tzinfo (~> 1.1) + addressable (2.4.0) bindata (2.3.1) cloudflare (2.1.0) json (~> 1) concurrent-ruby (1.0.2) connection_pool (2.2.0) + crack (0.4.3) + safe_yaml (~> 1.0.0) dotenv (2.1.1) faraday (0.9.2) multipart-post (>= 1.2, < 3) + hashdiff (0.3.0) httparty (0.14.0) multi_xml (>= 0.5.2) i18n (0.7.0) @@ -35,8 +39,11 @@ GEM rack (1.6.4) rack-protection (1.5.3) rack + rack-test (0.6.3) + rack (>= 1.0) rake (11.2.2) redis (3.3.1) + safe_yaml (1.0.4) securecompare (1.0.0) sidekiq (4.1.4) concurrent-ruby (~> 1.0) @@ -52,6 +59,11 @@ GEM tzinfo (1.2.2) thread_safe (~> 0.1) url_safe_base64 (0.2.2) + vcr (3.0.3) + webmock (2.1.0) + addressable (>= 2.3.6) + crack (>= 0.3.2) + hashdiff PLATFORMS ruby @@ -62,14 +74,18 @@ DEPENDENCIES dotenv httparty json-jwt (= 1.5.2) + minitest puma + rack-test rake redis sidekiq sinatra + vcr + webmock RUBY VERSION ruby 2.3.1p112 BUNDLED WITH - 1.12.5 + 1.13.6 diff --git a/README.md b/README.md index 2b8399e..4170ca5 100644 --- a/README.md +++ b/README.md @@ -9,39 +9,20 @@ With the advent of free SSL and Heroku finally offering free SSL endpoints, it's We wrote a blog post about it [here](https://substrakt.com/heroku-ssl-me-weve-come-a-long-way/) -**This is alpha software. It may work, or it may not. We use it in production at [Substrakt](https://substrakt.com) but your milage may vary until 1.0.** - [![Substrakt Logo](http://birmingham-made-me.org/wp-content/uploads/2014/03/substrakt-logo-300x55.png)](https://substrakt.com/) Created by [Substrakt](https://substrakt.com). ## What it does -1. Generates a private key. -1. Validates domain ownership using DNS verification for a set of domains including the root. **(Only works with CloudFlare currently!)** -1. Generates a CSR. -1. Generates a LetsEncrypt certificate. -1. Enables the http-sni feature on a specified Heroku application. -1. Adds or updates the certificate with the newly generated one. - -## How it works -1. User or robot makes an API request to this application. -1. Magic happens. -1. Site is secure. +1. Provides an API to generate SSL certificates. +1. Generates SSL certificates using DNS records to validate ownership. ## Limitations -As we're currently in alpha, there are some severe limitations. - -1. Heroku apps must be in the common runtime. `http-sni` is not supported in private spaces, yet. This shouldn't be a problem for 99% of applications. 1. DNS must be managed by CloudFlare. -1. Renewals do not happen automatically. (Not sure if this is in the scope of this application or whether or not the application itself should handle renewals?) -1. We're using an unreleased Heroku API endpoint and `http-sni` is beta. If it changes or is removed, this application will simply cease to work. -1. It doesn't currently add the CNAME records to CloudFlare once the SSL certificate has been generated. (Possibly out of scope?) -1. It's a bit slow (around 1min per validated subdomain) due to the nature of DNS resolution. Not sure how to resolve this yet. -1. It does not force the secured application to only accept requests via SSL. This is because we use a variety of frameworks so we must remain framework agnostic. ## Installation -You can install letsencrypt-heroku either directly on to Heroku *(recommended)* or download the code and deploy it yourself anywhere you can run a Rack app. +You can install letsencrypt-heroku either directly on to Heroku, use Docker Compose or download the code and deploy it yourself anywhere you can run a Rack app. First off, you'll need a Heroku auth token. @@ -56,6 +37,10 @@ First off, you'll need a Heroku auth token. 1. This will set up the application and all dependencies automatically including a free instance of Heroku Redis. (Redis is used to process background jobs amongst other things.) 1. On the command line run `heroku config:get AUTH_TOKEN`. The response is the secret token. **Every request made to the API must have the query parameter `auth_token=TOKEN` added to it. You'll receive a 403 error if you forget to do this.** +### Run using Docker Compose + +This application comes with a `docker-compose.yml` file. Assuming you have Docker installed, you can run `docker-compose up` and you'll be up and running immediately. + ### Installation elsewhere You can deploy this application anywhere you can run a Rack app. (Azure, Heroku, AWS, local, etc.) @@ -70,22 +55,24 @@ You can deploy this application anywhere you can run a Rack app. (Azure, Heroku, 1. Hit the following endpoint: ``` -GET certificate_generation/new/{domain_name}?subdomains={subdomains}&debug={0/1}&app_name={heroku_app_name}&auth_token={auth_token} -``` +POST /certificate_request -Parameters: +{ + "auth_token": "CHOSEN AUTH TOKEN", + "domains": ["www.substrakt.com", "substrakt.com"], + "zone": "CLOUDFLARE DOMAIN ZONE", + "heroku_app_name": "NAME OF HEROKU APP" +} +``` -* `domain_name` is the domain name without subdomains. (e.g. `google.com` == Good. `www.google.com` == Bad.) -* `subdomains` is a comma delimited list of subdomains to cover. Usually this is just `www`, but could also be anything else such as `www,dishwasher,git,purple`. -* `debug` is `1` or `0` depending if this is a test or not. When debug is on, non-valid certificates are generated. -* `heroku_app_name` is the name of the application on Heroku. -* `auth_token` is the value of `ENV['AUTH_TOKEN']`. This will start the process in the background and output something like this: ``` { - status_path: "http://localhost:5000/certificate_generation/3911dd66aade4cfdf9dd1d0e1cebde87" + "status": "queued", + "uuid": "a97fc5e2fce7bc60a96aa4c3e4907152", + "url": "http://0.0.0.0/certificate_request/a97fc5e2fce7bc60a96aa4c3e4907152?auth_token=testtesttest" } ``` @@ -94,17 +81,7 @@ That API URL will give you updates as to the certificate generation process. You The output looks something like this: ``` -{ - token: "3911dd66aade4cfdf9dd1d0e1cebde87", - status: "success", - error: null, - domain: "substrakt.com", - subdomains: [ - "www", - "www3" - ], - message: "Done" -} +{"status":"finished","message":"Generated certificate"} ``` diff --git a/Rakefile b/Rakefile index 29e12c1..ae16018 100644 --- a/Rakefile +++ b/Rakefile @@ -1,3 +1,4 @@ -task :default do - puts 'No default rake task set :(' +task :default => :test +task :test do + Dir.glob('./test/*_test.rb').each { |file| require file} end diff --git a/apiary.apib b/apiary.apib deleted file mode 100644 index b0f7052..0000000 --- a/apiary.apib +++ /dev/null @@ -1,57 +0,0 @@ -FORMAT: 1A - -# letsencrypt-heroku - -letsencrypt-heroku is an API which allows you to provision SSL certificate using letsencrypt and Heroku. - -Free. Forever. - -## Certificate Generation [/certificate_generation/new/{domain_name}] - -### Provision a New Certificate [GET] - -Provision a new SSL certificate using this endpoint. - -+ Parameters - + domain_name (string) - The domain to be secured. This should also be the name of a CloudFlare zone. - + subdomains (string) - Comma delimited list of subdomains to secure. Usually contains `www`. - + debug (integer, optional) - `1` if using the letsencrypt staging endpoint. Recommended for testing. - + app_name (string) - The name of the Heroku application to be secured. - + auth_token (string) - AUTH TOKEN value. - - -+ Response 201 (application/json) - - + Body - - { - status_path: "https://host/certificate_generation/3911dd66aade4cfdf9dd1d0e1cebde87" - } - - -## Certificate Generation Status [/certificate_generation/{token}] -### Get Provisioning Status [GET] - -Get status of certificate provisioning. - -+ Parameters - + token (string) - Unique token for provisioning. - + auth_token (string) - AUTH TOKEN value - - - -+ Response 201 (application/json) - - + Body - - { - token: "3911dd66aade4cfdf9dd1d0e1cebde87", - status: "success", - error: null, - domain: "substrakt.com", - subdomains: [ - "www", - "www3" - ], - message: "Done" - } \ No newline at end of file diff --git a/app.rb b/app.rb index 74e7359..7bee2ae 100644 --- a/app.rb +++ b/app.rb @@ -3,46 +3,62 @@ require 'sidekiq' Dotenv.load -require_relative 'workers/worker' +require_relative 'workers/cloudflare_challenge_worker' +require_relative 'lib/preflight_check' -get '/certificate_generation/new/:domain' do - authenticate! - token = SecureRandom.hex - Worker.perform_async(params[:domain], params[:subdomains], params[:debug], params[:app_name], token) - content_type :json +$redis = Redis.new(url: ENV['REDIS_URL']) - { status_path: "#{request.env['rack.url_scheme']}://#{request.env['HTTP_HOST']}/certificate_generation/#{token}" }.to_json +before do + request.body.rewind + if request.body.size > 0 + @request_payload = JSON.parse(request.body.read) + end end -get '/certificate_generation/:token' do - authenticate! +post '/certificate_request' do content_type :json + authenticate! + if params_valid? + perform_preflight_check unless ENV['ENVIRONMENT'] == 'test' + status 200 + token = SecureRandom.hex + $redis.setex("status_#{token}", 3600, "queued") + CloudflareChallengeWorker.perform_async(@request_payload["zone"], @request_payload["domains"], token, @request_payload["heroku_app_name"], false) + { status: 'queued', uuid: token, url: "#{request.env['rack.url_scheme']}://#{request.env['HTTP_HOST']}/certificate_request/#{token}?auth_token=#{ENV['AUTH_TOKEN']}" }.to_json + else + status 422 + end +end - pipe = Sidekiq.redis do |conn| - conn.pipelined do - conn.get("#{params[:token]}_status") - conn.get("#{params[:token]}_error") - conn.get("#{params[:token]}_domain") - conn.get("#{params[:token]}_subdomains") - conn.get("#{params[:token]}_message") - end +get '/certificate_request/:token' do + content_type :json + authenticate! + if $redis.exists("status_#{params["token"]}") + status 200 + return { status: $redis.get("status_#{params["token"]}"), message: $redis.get("latest_#{params["token"]}")}.to_json end + status 404 + { status: "#{params["token"]} not a valid token" }.to_json +end + +private - { - token: params[:token], - status: pipe[0], - error: pipe[1], - domain: pipe[2], - subdomains: pipe[3].to_s.split(','), - message: pipe[4] - }.to_json +def params_valid? + @request_payload["domains"].present? && @request_payload["heroku_app_name"].present? && @request_payload["zone"].present? end private def authenticate! - unless (params[:auth_token] == ENV['AUTH_TOKEN']) - halt 403, 'Not authenticated' + unless (params["auth_token"] == ENV['AUTH_TOKEN']) || (@request_payload["auth_token"] == ENV['AUTH_TOKEN']) + halt 403 end +end + +def perform_preflight_check + check = PreflightCheck.new(heroku_token: ENV['HEROKU_OAUTH_KEY'], cloudflare_token: ENV['CLOUDFLARE_API_KEY'], cloudflare_email: ENV['CLOUDFLARE_EMAIL']) + if check.check_cloudflare == false || check.check_heroku == false + halt 422, "Could not connect to Heroku or Cloudflare." + end end diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..eb35e0e --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,32 @@ +version: '2' +services: + redis: + image: redis + ports: + - "6379:6379" + + sidekiq: + build: . + restart: always + env_file: .env + volumes: + - .:/opt/letsencrypt-heroku + command: 'bundle exec sidekiq -q default -r ./workers/base.rb -c 2' + working_dir: /opt/letsencrypt-heroku + + web: + depends_on: + - redis + build: . + links: + - redis + restart: always + env_file: .env + volumes: + - .:/opt/letsencrypt-heroku + command: 'bundle exec puma -C config/puma.rb' + working_dir: /opt/letsencrypt-heroku + ports: + - '4567:4567' + environment: + PORT: 4567 diff --git a/lib/acme_client_registration.rb b/lib/acme_client_registration.rb new file mode 100644 index 0000000..b46a278 --- /dev/null +++ b/lib/acme_client_registration.rb @@ -0,0 +1,25 @@ +require 'acme-client' + +class AcmeClientRegistration + + class NoEmailError < StandardError; end; + + DEBUG_ENDPOINT = "https://acme-staging.api.letsencrypt.org/" + LIVE_ENDPOINT = "https://acme-v01.api.letsencrypt.org/" + + attr_reader :endpoint, :client + + def initialize(options = {}) + raise NoEmailError if ENV['CONTACT_EMAIL'].nil? + if options[:debug] == true + @endpoint = DEBUG_ENDPOINT + else + @endpoint = LIVE_ENDPOINT + end + + @client = Acme::Client.new(private_key: OpenSSL::PKey::RSA.new(4096), endpoint: @endpoint) + registration = @client.register(contact: "mailto:#{ENV['CONTACT_EMAIL']}") + registration.agree_terms + end + +end diff --git a/lib/certificate_generator.rb b/lib/certificate_generator.rb new file mode 100644 index 0000000..f153f3f --- /dev/null +++ b/lib/certificate_generator.rb @@ -0,0 +1,19 @@ +require_relative 'logger' + +class CertificateGenerator + + attr_reader :csr, :challenge, :certificate + + def initialize(options = {}) + @challenge = options[:challenge] + + Logger.log('Creating challenge records', generator: self) + @challenge.create_challenge_records + Logger.log('Sleeping for 60 seconds', generator: self) + sleep(60) unless ENV['ENVIRONMENT'] == 'test' + @challenge.verify + + @csr = Acme::Client::CertificateRequest.new(names: @challenge.domains) + @certificate = @challenge.client.new_certificate(csr) + end +end diff --git a/lib/challenge.rb b/lib/challenge.rb index db7e174..0017032 100644 --- a/lib/challenge.rb +++ b/lib/challenge.rb @@ -1,15 +1,15 @@ class Challenge - attr_reader :client, :authorization, :domain + attr_reader :client, :authorization, :domain, :dns01 def initialize(options = {}) @client = options[:client] @domain = options[:domain] @authorization = @client.authorize(domain: @domain) + @dns01 = @authorization.dns01 end - def dns01 - @authorization.dns01 + def status + @dns01 end - end diff --git a/lib/cloudflare_challenge.rb b/lib/cloudflare_challenge.rb new file mode 100644 index 0000000..e7f7ff7 --- /dev/null +++ b/lib/cloudflare_challenge.rb @@ -0,0 +1,38 @@ +require_relative 'challenge' +require 'cloudflare' + +class CloudflareChallenge + + class NoCloudflareAPIKey < StandardError; end; + class NoCloudflareEmail < StandardError; end; + + attr_reader :zone, :domains, :client, :challenges, :token + + def initialize(options = {}) + raise NoCloudflareAPIKey if ENV['CLOUDFLARE_API_KEY'].blank? + raise NoCloudflareEmail if ENV['CLOUDFLARE_EMAIL'].blank? + + @zone = options[:zone] + @domains = options[:domains] + @client = options[:client] + @token = options[:token] + @challenges = @domains.map do |domain| + Challenge.new(client: @client, domain: domain) + end + end + + def create_challenge_records + cf = CloudFlare::connection(ENV['CLOUDFLARE_API_KEY'], ENV['CLOUDFLARE_EMAIL']) + @challenges.each do |challenge| + cf.rec_new(@zone, 'TXT', "_acme-challenge.#{challenge.domain}", challenge.dns01.record_content, 1) + end + @domains + end + + def verify + @challenges.map do |challenge| + challenge.dns01.request_verification + end.uniq[0] + end + +end diff --git a/lib/logger.rb b/lib/logger.rb new file mode 100644 index 0000000..bcc4e71 --- /dev/null +++ b/lib/logger.rb @@ -0,0 +1,18 @@ +class Logger + + def self.log(message, options = {}) + $redis = Redis.new(url: ENV['REDIS_URL']) + output = '' + if options[:generator].present? + output << "[Zone: #{options[:generator].challenge.zone}" + output << " - Domains: #{options[:generator].challenge.domains.join(", ")}] " + $redis.set("latest_#{options[:generator].challenge.token}", message) + end + output << "----> #{message}" + + + puts output unless ENV['ENVIRONMENT'] == 'test' + return output + end + +end diff --git a/lib/preflight_check.rb b/lib/preflight_check.rb new file mode 100644 index 0000000..dc3c06e --- /dev/null +++ b/lib/preflight_check.rb @@ -0,0 +1,26 @@ +class PreflightCheck + + def initialize(options = {}) + @heroku_token = options[:heroku_token] + @cloudflare_token = options[:cloudflare_token] + @cloudflare_email = options[:cloudflare_email] + end + + def check_heroku + headers = { + "Accept": 'application/vnd.heroku+json; version=3', + "Authorization": "Bearer #{@heroku_token}", + "Content-Type": "application/json" + } + HTTParty.get("https://api.heroku.com/apps", headers: headers).code == 200 + end + + def check_cloudflare + headers = { + 'X-Auth-Email': @cloudflare_email, + 'X-Auth-Key': @cloudflare_token, + 'Content-Type': 'application/json' + } + HTTParty.get("https://api.cloudflare.com/client/v4/user", headers: headers).code == 200 + end +end diff --git a/lib/provisioners/heroku.rb b/lib/provisioners/heroku.rb new file mode 100644 index 0000000..223934f --- /dev/null +++ b/lib/provisioners/heroku.rb @@ -0,0 +1,47 @@ +require 'httparty' +require_relative '../logger' +module Provisioner + class Heroku + + HEROKU_BASE_URL = "https://api.heroku.com".freeze + + attr_reader :headers, :query + + def initialize(options = {}) + @certificate = options[:certificate] + @app_name = options[:app_name] + + @headers = { + "Accept": 'application/vnd.heroku+json; version=3.sni_ssl_cert', + "Authorization": "Bearer #{ENV['HEROKU_OAUTH_KEY']}", + "Content-Type": "application/json" + } + + @query = { + "certificate_chain": @certificate.fullchain_to_pem, + "private_key": @certificate.request.private_key.to_pem + }.to_json + end + + def provision! + puts '---> Provisioning Heroku application with new certificate' + HTTParty.patch("#{HEROKU_BASE_URL}/apps/#{@app_name}/features/http-sni", headers: @headers, body: {enabled: true}.to_json) + puts "---> Uploading new certificate" + response = HTTParty.post("#{HEROKU_BASE_URL}/apps/#{@app_name}/sni-endpoints", headers: @headers, body: @query) + if response.code == 422 + if JSON.parse(response.body)["message"] == "Only one SNI endpoint is allowed per app (try certs:update instead)." + puts "---> Certificate already exists. Replacing with new one" + sni_endpoints = HTTParty.get("#{HEROKU_BASE_URL}/apps/#{@app_name}/sni-endpoints", headers: @headers) + HTTParty.patch("#{HEROKU_BASE_URL}/apps/#{@app_name}/sni-endpoints/#{sni_endpoints.parsed_response[0]["id"]}", headers: @headers, body: @query) + return true + else + Logger.log("Error: #{response.body}") + return false + end + end + puts "---> Heroku response: #{response.body}" + return true + end + + end +end diff --git a/test/acme_client_registration_test.rb b/test/acme_client_registration_test.rb new file mode 100644 index 0000000..6210974 --- /dev/null +++ b/test/acme_client_registration_test.rb @@ -0,0 +1,73 @@ +require_relative 'test_helper' + +class AcmeClientRegistrationTest < MiniTest::Test + + def setup + ENV['CONTACT_EMAIL'] = 'test@example.com' + end + + def teardown + $redis.flushdb + end + + def test_create_an_instance + VCR.use_cassette('acme-new-reg') do + a = AcmeClientRegistration.new + assert_equal AcmeClientRegistration, a.class + end + end + + def test_use_the_staging_endpoint + VCR.use_cassette('acme-new-reg-debug') do + a = AcmeClientRegistration.new(debug: true) + assert_equal 'https://acme-staging.api.letsencrypt.org/', a.endpoint + end + end + + def test_use_the_live_endpoint + VCR.use_cassette('acme-new-reg') do + a = AcmeClientRegistration.new(debug: false) + assert_equal 'https://acme-v01.api.letsencrypt.org/', a.endpoint + end + end + + def test_use_the_live_endpoint_by_default + VCR.use_cassette('acme-new-reg') do + a = AcmeClientRegistration.new + assert_equal 'https://acme-v01.api.letsencrypt.org/', a.endpoint + end + end + + def test_assign_an_acme_client_with_live_endpoint + VCR.use_cassette('acme-new-reg') do + a = AcmeClientRegistration.new + assert_equal Acme::Client, a.client.class + assert_equal 'https://acme-v01.api.letsencrypt.org/', a.client.connection.url_prefix.to_s + end + end + + def test_assign_an_acme_client_with_test_endpoint + VCR.use_cassette('acme-new-reg-debug') do + a = AcmeClientRegistration.new(debug: true) + assert_equal Acme::Client, a.client.class + assert_equal 'https://acme-staging.api.letsencrypt.org/', a.client.connection.url_prefix.to_s + end + end + + def test_creating_without_CONTACT_EMAIL_set_should_raise_an_exception + VCR.use_cassette('acme-new-reg') do + ENV['CONTACT_EMAIL'] = nil + assert_raises AcmeClientRegistration::NoEmailError do + AcmeClientRegistration.new + end + end + end + + def test_client_should_be_registered_and_agreed_to + VCR.use_cassette('acme-new-reg') do + a = AcmeClientRegistration.new + assert_equal true, a.client.nonces.any? + end + end + +end diff --git a/test/app_test.rb b/test/app_test.rb new file mode 100644 index 0000000..c52988f --- /dev/null +++ b/test/app_test.rb @@ -0,0 +1,77 @@ +require_relative 'test_helper' + +class AppTest < MiniTest::Test + + include Rack::Test::Methods + + def app + Sinatra::Application + end + + def setup + ENV['AUTH_TOKEN'] = 'secrettoken' + end + + def teardown + $redis.flushdb + end + + def test_certificate_request_post + post '/certificate_request', { auth_token: 'secrettoken' }.to_json + assert last_response.unprocessable? + end + + def test_certificate_request_with_correct_params + valid_params = { + domains: ['substrakt.com', 'www.substrakt.com'], + heroku_app_name: ['substrakt-live'], + zone: ['substrakt.com'], + auth_token: 'secrettoken' + } + post '/certificate_request', valid_params.to_json + assert_equal 'application/json', last_response.content_type + assert_equal 'queued', JSON.parse(last_response.body)["status"] + assert_match /\w{32}/, JSON.parse(last_response.body)["uuid"] + assert last_response.ok? + end + + def test_certificate_missing_domain_list + invalid_params = { + heroku_app_name: ['substrakt-live'], + auth_token: 'secrettoken' + } + post '/certificate_request', invalid_params.to_json + assert last_response.unprocessable? + end + + def test_certificate_missing_heroku_app_name + invalid_params = { + domains: ['substrakt.com', 'www.substrakt.com'], + auth_token: 'secrettoken' + } + post '/certificate_request', invalid_params.to_json + assert last_response.unprocessable? + end + + def test_get_status_of_certificate_request_that_does_not_exist + params = { + auth_token: 'secrettoken' + } + get '/certificate_request/token1234', params + assert_equal "token1234 not a valid token", JSON.parse(last_response.body)["status"] + assert_equal 'application/json', last_response.content_type + assert last_response.not_found? + end + + def test_get_status_of_certificate_request_that_does_exist + $redis.set('status_token1234', 'pending') + + params = { + auth_token: 'secrettoken' + } + + get '/certificate_request/token1234', params + assert_equal 'application/json', last_response.content_type + assert_equal 200, last_response.status + end +end diff --git a/test/certificate_generator_test.rb b/test/certificate_generator_test.rb new file mode 100644 index 0000000..b8be692 --- /dev/null +++ b/test/certificate_generator_test.rb @@ -0,0 +1,24 @@ +require_relative 'test_helper' + +class CertificateGeneratorTest < MiniTest::Test + + def setup + ENV['CLOUDFLARE_API_KEY'] = '547348956734789576' + ENV['CLOUDFLARE_EMAIL'] = 'max@substrakt.com' + ENV['CONTACT_EMAIL'] = 'max@substrakt.com' + end + + def teardown + $redis.flushdb + end + + def test_generate_certificate + VCR.use_cassette('new-certificate-debug') do + a = CertificateGenerator.new(challenge: CloudflareChallenge.new(zone: 'substrakt.com', + domains: ['www.substrakt.com', 'substrakt.com'], + client: AcmeClientRegistration.new(debug: true).client)) + assert_equal Acme::Client::Certificate, a.certificate.class + end + end + +end diff --git a/test/cloudflare_challenge_test.rb b/test/cloudflare_challenge_test.rb new file mode 100644 index 0000000..ed250b5 --- /dev/null +++ b/test/cloudflare_challenge_test.rb @@ -0,0 +1,83 @@ +require_relative 'test_helper' + +class CloudflareChallengeTest < MiniTest::Test + + def setup + ENV['CLOUDFLARE_API_KEY'] = '547348956734789576' + ENV['CLOUDFLARE_EMAIL'] = 'max@substrakt.com' + ENV['CONTACT_EMAIL'] = 'max@substrakt.com' + end + + def teardown + $redis.flushdb + end + + def test_create_an_instance + VCR.use_cassette('acme-new-authz') do + a = CloudflareChallenge.new(zone: 'substrakt.com', + domains: ['www.substrakt.com', 'substrakt.com'], + client: AcmeClientRegistration.new(debug: true).client) + assert_equal CloudflareChallenge, a.class + end + end + + def test_raise_an_exception_if_CLOUDFLARE_API_KEY_is_missing + ENV['CLOUDFLARE_API_KEY'] = nil + assert_raises CloudflareChallenge::NoCloudflareAPIKey do + CloudflareChallenge.new + end + end + + def test_raise_an_exception_if_CLOUDFLARE_EMAIL_is_missing + ENV['CLOUDFLARE_EMAIL'] = nil + assert_raises CloudflareChallenge::NoCloudflareEmail do + CloudflareChallenge.new + end + end + + def test_set_zone + VCR.use_cassette('acme-new-authz') do + a = CloudflareChallenge.new(zone: 'substrakt.com', + domains: ['www.substrakt.com', 'substrakt.com'], + client: AcmeClientRegistration.new(debug: true).client) + assert_equal 'substrakt.com', a.zone + end + end + + def test_set_domains + VCR.use_cassette('acme-new-authz') do + a = CloudflareChallenge.new(zone: 'substrakt.com', + domains: ['www.substrakt.com', 'substrakt.com'], + client: AcmeClientRegistration.new(debug: true).client) + assert_equal ['www.substrakt.com', 'substrakt.com'], a.domains + end + end + + def test_add_challenge_records_to_cloudflare + VCR.use_cassette('acme-new-authz') do + a = CloudflareChallenge.new(zone: 'substrakt.com', + domains: ['www.substrakt.com', 'substrakt.com'], + client: AcmeClientRegistration.new(debug: true).client) + assert_equal ['www.substrakt.com', 'substrakt.com'], a.create_challenge_records + end + end + + def test_get_list_of_challenges + VCR.use_cassette('acme-new-authz') do + a = CloudflareChallenge.new(zone: 'substrakt.com', + domains: ['www.substrakt.com', 'substrakt.com'], + client: AcmeClientRegistration.new(debug: true).client) + assert_equal Challenge, a.challenges.first.class + end + end + + def test_verification + VCR.use_cassette('acme-challenge-debug') do + a = CloudflareChallenge.new(zone: 'substrakt.com', + domains: ['max123.substrakt.com', 'max345.substrakt.com'], + client: AcmeClientRegistration.new(debug: true).client) + assert_equal true, a.verify + end + end + +end diff --git a/test/fixtures/vcr_cassettes/acme-challenge-debug.yml b/test/fixtures/vcr_cassettes/acme-challenge-debug.yml new file mode 100644 index 0000000..258bb60 --- /dev/null +++ b/test/fixtures/vcr_cassettes/acme-challenge-debug.yml @@ -0,0 +1,473 @@ +--- +http_interactions: +- request: + method: head + uri: https://acme-staging.api.letsencrypt.org/acme/new-reg + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept: + - "*/*" + response: + status: + code: 405 + message: Method Not Allowed + headers: + Server: + - nginx + Content-Type: + - application/problem+json + Content-Length: + - '91' + Allow: + - POST + Boulder-Request-Id: + - uDeMHlcej0rKzMXQYTUdJMxFoHF9sJiN-sfnqAKqvAM + Replay-Nonce: + - d9fsTJHF7ap8hNsgBZStyewA0QUnthx8WgKuwVTaYnY + Expires: + - Tue, 15 Nov 2016 15:46:14 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 15:46:14 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: '' + http_version: + recorded_at: Tue, 15 Nov 2016 15:46:14 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/new-reg + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiZDlmc1RKSEY3YXA4aE5zZ0JaU3R5ZXdBMFFVbnRoeDhXZ0t1d1ZUYVluWSIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiIxRG85anVDbkdUSTVrY1hWRXVFbWJxUWtjSjJMb09hSU5LRGlXZ0JKWGJ3U29aY3kxWERlVnVTRjZHSG5SZ19ncFdJMmVOTFdXYnJVMmxHX3lPbEJsWEZ6QzhaZTk5YXRVRVNVZ1dxZXNtQ1BRSUJhV0tsRDJhQWNzbmdHZDg0WTNpR0UxZUJhYlRLV3BuZ05Ba2w0VWlfa2xOQjRvTkk0U2JBVzIwMGFVYTRKVDZjUjNfcThlX0ViR2lFb2JBVXhGZEJtX0I0TTBwZ0RJWmd5RFdnYWhhNmdFbC11eGdMZkJ3OTI2dlA4aVBqZnlWZFplbVVBRjdxSzMzZUl4d1dNeEJJTl9tYzNpOS1kQXZnZ2NETXdoRzBaZmxZQkx2QlZGWS03Vk5qY1Y3OC00Vmo5NXF0R0JCOTlmNnc1Uklod0FXdFJiMURqMW56bG1iZmRCNDJhcktoT1JnTnlXSzE2YVBTb3RoS1BwV01TT09Vc19Bbm5wTVE4cFdpX1dabl9SSU1xbjZHcERuNVNpbEJrMnE5WjVicGVSTnNNc1JBRjhHTDR3UkFGZG5BRThTNWE3ck5DVk13bERKTUNiWk9PU1ZPa1ZJNlJ5dnVyNUoyajNtREh6a3FRdzVaaGNPeUhwQUVrVkc5NWFQQjVhenZHaWRZc1c3LU5sTlZ5d2c4NTdiRzNydDBRUlUwWENwUmRGYUZsUHp4cGN2djJWTzN2R2RzTjc3R3RSbUhyY3FiVWt0VHNDTl9qZDk5UU1JT1VLUkJWUGFnZHk3bFNGbk1Cc1c1eFBPMGZYdnpxd0t2YTcxN1dSV1lZUEJ4YkFDMDNnQnBoLWVsTmMwMnRqZjEwYXhSWlE3NUY0UDRiSTI0QkM3NHd3RndBdWZqUXdpNzd4dlZpcFh3cmdvOCJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1yZWciLCJjb250YWN0IjpbIm1haWx0bzptYXhAc3Vic3RyYWt0LmNvbSJdfQ","signature":"UpFFW8k4On2u5BZx_5aPmIOxFds-CNU8Iz9UPs12KYIVzsLzOxg2CwcnIGelfL3dMZQdqKU4Ab49yRUQlA_9YXUPTsscrpv1lfZ5hvlt-N29z4Ort5bcaamNaeQq2Szx1Bp1TacCEfAmwpzT6_dEFDu5g9WvGHgrv3okxKezQyEgOt1w0JAIpg0R7Oj1RwzgFNsGzXv3Yj0Zq4zcX97VkDLway69UuRBXbfrvA7fKnRCQVHuA9wpRbT6SkJkdxQE5j1iTxFG4zsj7q7BbsHdT-C_F-qI8LDREi9388z2xFxNPcupkpwFFzeoXtSBNFRCf8QfcRWSbFoBkB9sasP0cvorY_3X0ezjOML7uMK_6daK0iBvT5ge5cMvxJXBqjyumniy5JG0kytuzPMiZ3FPgZtYj75HXajN0nNPc-g--ZE6vgtMIJG0oXrIMFnh2w8KBfH5qBosoGW9A_FUbAZZTgNi1Hredyofm6T-lvqUpMvcmRq_x5KeQ0e8vWdpUvE4RaDYMUOzDuX5t1hJHTr-P4zx1NqhCp7tKddr4ENzkG5M7AZDYg0lpOJzQL5y9fKwEHWeGCGgFNGu3-uvaSH8vUhjv8SGKHpmjSmOOX57NIyRnEgjYE_49m7-LFwBPRqAljFQ4wCR4-eegYxTMYd6a7466jKrr48aZNu5z5VnB3w"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 201 + message: Created + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '914' + Boulder-Request-Id: + - 2Dvu0dNB8USfic3eY_grHHS8JumADwjVHTRaAdnSJ9s + Boulder-Requester: + - '496458' + Link: + - ;rel="next" + - ;rel="terms-of-service" + Location: + - https://acme-staging.api.letsencrypt.org/acme/reg/496458 + Replay-Nonce: + - sa7THSiunLZYzSxbNBEWrsfsvoEVQ7BdT2tpMs5TxJk + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Tue, 15 Nov 2016 15:46:15 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 15:46:15 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "id": 496458, + "key": { + "kty": "RSA", + "n": "1Do9juCnGTI5kcXVEuEmbqQkcJ2LoOaINKDiWgBJXbwSoZcy1XDeVuSF6GHnRg_gpWI2eNLWWbrU2lG_yOlBlXFzC8Ze99atUESUgWqesmCPQIBaWKlD2aAcsngGd84Y3iGE1eBabTKWpngNAkl4Ui_klNB4oNI4SbAW200aUa4JT6cR3_q8e_EbGiEobAUxFdBm_B4M0pgDIZgyDWgaha6gEl-uxgLfBw926vP8iPjfyVdZemUAF7qK33eIxwWMxBIN_mc3i9-dAvggcDMwhG0ZflYBLvBVFY-7VNjcV78-4Vj95qtGBB99f6w5RIhwAWtRb1Dj1nzlmbfdB42arKhORgNyWK16aPSothKPpWMSOOUs_AnnpMQ8pWi_WZn_RIMqn6GpDn5SilBk2q9Z5bpeRNsMsRAF8GL4wRAFdnAE8S5a7rNCVMwlDJMCbZOOSVOkVI6Ryvur5J2j3mDHzkqQw5ZhcOyHpAEkVG95aPB5azvGidYsW7-NlNVywg857bG3rt0QRU0XCpRdFaFlPzxpcvv2VO3vGdsN77GtRmHrcqbUktTsCN_jd99QMIOUKRBVPagdy7lSFnMBsW5xPO0fXvzqwKva717WRWYYPBxbAC03gBph-elNc02tjf10axRZQ75F4P4bI24BC74wwFwAufjQwi77xvVipXwrgo8", + "e": "AQAB" + }, + "contact": [ + "mailto:max@substrakt.com" + ], + "initialIp": "213.123.191.198", + "createdAt": "2016-11-15T15:46:15.301210461Z", + "Status": "" + } + http_version: + recorded_at: Tue, 15 Nov 2016 15:46:15 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/reg/496458 + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoic2E3VEhTaXVuTFpZelN4Yk5CRVdyc2Zzdm9FVlE3QmRUMnRwTXM1VHhKayIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiIxRG85anVDbkdUSTVrY1hWRXVFbWJxUWtjSjJMb09hSU5LRGlXZ0JKWGJ3U29aY3kxWERlVnVTRjZHSG5SZ19ncFdJMmVOTFdXYnJVMmxHX3lPbEJsWEZ6QzhaZTk5YXRVRVNVZ1dxZXNtQ1BRSUJhV0tsRDJhQWNzbmdHZDg0WTNpR0UxZUJhYlRLV3BuZ05Ba2w0VWlfa2xOQjRvTkk0U2JBVzIwMGFVYTRKVDZjUjNfcThlX0ViR2lFb2JBVXhGZEJtX0I0TTBwZ0RJWmd5RFdnYWhhNmdFbC11eGdMZkJ3OTI2dlA4aVBqZnlWZFplbVVBRjdxSzMzZUl4d1dNeEJJTl9tYzNpOS1kQXZnZ2NETXdoRzBaZmxZQkx2QlZGWS03Vk5qY1Y3OC00Vmo5NXF0R0JCOTlmNnc1Uklod0FXdFJiMURqMW56bG1iZmRCNDJhcktoT1JnTnlXSzE2YVBTb3RoS1BwV01TT09Vc19Bbm5wTVE4cFdpX1dabl9SSU1xbjZHcERuNVNpbEJrMnE5WjVicGVSTnNNc1JBRjhHTDR3UkFGZG5BRThTNWE3ck5DVk13bERKTUNiWk9PU1ZPa1ZJNlJ5dnVyNUoyajNtREh6a3FRdzVaaGNPeUhwQUVrVkc5NWFQQjVhenZHaWRZc1c3LU5sTlZ5d2c4NTdiRzNydDBRUlUwWENwUmRGYUZsUHp4cGN2djJWTzN2R2RzTjc3R3RSbUhyY3FiVWt0VHNDTl9qZDk5UU1JT1VLUkJWUGFnZHk3bFNGbk1Cc1c1eFBPMGZYdnpxd0t2YTcxN1dSV1lZUEJ4YkFDMDNnQnBoLWVsTmMwMnRqZjEwYXhSWlE3NUY0UDRiSTI0QkM3NHd3RndBdWZqUXdpNzd4dlZpcFh3cmdvOCJ9fQ","payload":"eyJyZXNvdXJjZSI6InJlZyIsImFncmVlbWVudCI6Imh0dHBzOi8vbGV0c2VuY3J5cHQub3JnL2RvY3VtZW50cy9MRS1TQS12MS4xLjEtQXVndXN0LTEtMjAxNi5wZGYifQ","signature":"AvhEYkxjVEOQjJ-mntlyW0LwYbqP6u4vgZ3QdyxUMClS9tTGA4RHPOh9Y5ZzMoLEVnf5U-K_Cd5mXWrx_gUcL5RPkMEbbCNu3HEADrCVDD2G37lrp1qrUMTZa_hhV7ID4wHQGTBBYItLzwrHSVW4dU-Q93so_J7rs67jbvTfNfXdwb41q8z4zhONisvuNTmCjArKJFKgkhtwHtWxDA4ppy5xMrnfIBeCzPeHMqmpHHGeu7WxgJT_DsxIq6NluZ25GAEGaQSbr5khMj9v1qmxiiMRbDXrE94iiU9m2puquLRpqK9bmGdGHP9EJhyq84hA4lQMhOkBcm1I4NX4j50o08CKI1Ed-8hkP_wSeArbsLmdInhwp1a8aJkqaoNgXE2iF6EY7dOheTvmNNNEb-tQoCJyJQeLrF4t0B8aYwCfJbFhwzAe4N6LBktX8Z4lJsrAEgqrYRvmw2wiBGLlZCVHtkweXOCAONrBSGW1K0Wd57NKpvnHCnoFFQOA96DaW_m-7QhCC_VBhvHZ5e1nBAPsWgX1RAgE3rm7DATgBlOKz3iuJAxiWAS-IRqfJkhFxzfnm5Dh7I-x5Ycx_G8ChfUtpTRG3kIll8fzBKCVzMgx7p1-M8djfDqwqju0YmnT9CkwxtxKD6AmQQgZSaa42c6ht_Zs-98ZJaYbdlHGvMo0rzQ"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 202 + message: Accepted + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '987' + Boulder-Request-Id: + - qnKTD1bn6wPUM-zQjTE4QnoZpbg2tCcvYH6v2DfnSKQ + Boulder-Requester: + - '496458' + Link: + - ;rel="next" + - ;rel="terms-of-service" + Replay-Nonce: + - Ddhii7MdLe0vMbUaDhoFV5srVOks5updsJ5GRZDurks + Expires: + - Tue, 15 Nov 2016 15:46:15 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 15:46:15 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "id": 496458, + "key": { + "kty": "RSA", + "n": "1Do9juCnGTI5kcXVEuEmbqQkcJ2LoOaINKDiWgBJXbwSoZcy1XDeVuSF6GHnRg_gpWI2eNLWWbrU2lG_yOlBlXFzC8Ze99atUESUgWqesmCPQIBaWKlD2aAcsngGd84Y3iGE1eBabTKWpngNAkl4Ui_klNB4oNI4SbAW200aUa4JT6cR3_q8e_EbGiEobAUxFdBm_B4M0pgDIZgyDWgaha6gEl-uxgLfBw926vP8iPjfyVdZemUAF7qK33eIxwWMxBIN_mc3i9-dAvggcDMwhG0ZflYBLvBVFY-7VNjcV78-4Vj95qtGBB99f6w5RIhwAWtRb1Dj1nzlmbfdB42arKhORgNyWK16aPSothKPpWMSOOUs_AnnpMQ8pWi_WZn_RIMqn6GpDn5SilBk2q9Z5bpeRNsMsRAF8GL4wRAFdnAE8S5a7rNCVMwlDJMCbZOOSVOkVI6Ryvur5J2j3mDHzkqQw5ZhcOyHpAEkVG95aPB5azvGidYsW7-NlNVywg857bG3rt0QRU0XCpRdFaFlPzxpcvv2VO3vGdsN77GtRmHrcqbUktTsCN_jd99QMIOUKRBVPagdy7lSFnMBsW5xPO0fXvzqwKva717WRWYYPBxbAC03gBph-elNc02tjf10axRZQ75F4P4bI24BC74wwFwAufjQwi77xvVipXwrgo8", + "e": "AQAB" + }, + "contact": [ + "mailto:max@substrakt.com" + ], + "agreement": "https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf", + "initialIp": "213.123.191.198", + "createdAt": "2016-11-15T15:46:15Z", + "Status": "" + } + http_version: + recorded_at: Tue, 15 Nov 2016 15:46:15 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/new-authz + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiRGRoaWk3TWRMZTB2TWJVYURob0ZWNXNyVk9rczV1cGRzSjVHUlpEdXJrcyIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiIxRG85anVDbkdUSTVrY1hWRXVFbWJxUWtjSjJMb09hSU5LRGlXZ0JKWGJ3U29aY3kxWERlVnVTRjZHSG5SZ19ncFdJMmVOTFdXYnJVMmxHX3lPbEJsWEZ6QzhaZTk5YXRVRVNVZ1dxZXNtQ1BRSUJhV0tsRDJhQWNzbmdHZDg0WTNpR0UxZUJhYlRLV3BuZ05Ba2w0VWlfa2xOQjRvTkk0U2JBVzIwMGFVYTRKVDZjUjNfcThlX0ViR2lFb2JBVXhGZEJtX0I0TTBwZ0RJWmd5RFdnYWhhNmdFbC11eGdMZkJ3OTI2dlA4aVBqZnlWZFplbVVBRjdxSzMzZUl4d1dNeEJJTl9tYzNpOS1kQXZnZ2NETXdoRzBaZmxZQkx2QlZGWS03Vk5qY1Y3OC00Vmo5NXF0R0JCOTlmNnc1Uklod0FXdFJiMURqMW56bG1iZmRCNDJhcktoT1JnTnlXSzE2YVBTb3RoS1BwV01TT09Vc19Bbm5wTVE4cFdpX1dabl9SSU1xbjZHcERuNVNpbEJrMnE5WjVicGVSTnNNc1JBRjhHTDR3UkFGZG5BRThTNWE3ck5DVk13bERKTUNiWk9PU1ZPa1ZJNlJ5dnVyNUoyajNtREh6a3FRdzVaaGNPeUhwQUVrVkc5NWFQQjVhenZHaWRZc1c3LU5sTlZ5d2c4NTdiRzNydDBRUlUwWENwUmRGYUZsUHp4cGN2djJWTzN2R2RzTjc3R3RSbUhyY3FiVWt0VHNDTl9qZDk5UU1JT1VLUkJWUGFnZHk3bFNGbk1Cc1c1eFBPMGZYdnpxd0t2YTcxN1dSV1lZUEJ4YkFDMDNnQnBoLWVsTmMwMnRqZjEwYXhSWlE3NUY0UDRiSTI0QkM3NHd3RndBdWZqUXdpNzd4dlZpcFh3cmdvOCJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1hdXRoeiIsImlkZW50aWZpZXIiOnsidHlwZSI6ImRucyIsInZhbHVlIjoibWF4MTIzLnN1YnN0cmFrdC5jb20ifX0","signature":"KmjCHZlVilMRHCzXvGiR6iNNeB1jdAZXOQ4dmfZ7SzZb7uYJ-BpDZsmiyi9JTBMfwUiDP_nzs2T_mDu6asju3tB4QfAFa0tJ6Zf0tMrekbHZ9affXPkjhHinwJzLQO_xDpaLYVhBQaiDRvViZXxsTms_aoLC0Yna7z1cfTzTJVS3BAkJthScZVvERiG7lu7-9KXGlECGZ_eAbNEw5w3_LMlcp8GekrkauE_CsD6pk89UpBZsifEx3s43Kc_2JTzlvu8q7I49qb-yzPPCeIQzfsZgejYo7WAjaiKxdNEDkYmRFqQ0eIkxAUS4jL12HUCZPUg9zGKyEiCgM1XryzzxQUGjpaPe3x5wZvzCjZAWLFRnurAg5Lb0Kt7vVbFAm9u_JnuUZIhy_McuuEygaznlD4TwrB9Uj4bMAt5ojunJ1Za4FoBiWv0lBBCET_tXvcqpihhBJDmtcu3vIHGPw1A8JMNtWq866_ZcyAPOGDvdZ8nqfWYlXj-dWWn9nnh6FuU4A2nX2Ah8VSjPLn5yb5t8r09QqUP1McIvEPjbXRVBDd-RWpUF5WxHk_Hdv92QghBC0oiubl6OIKsdMI-LR6Cg2Lz6zZ5FNKtTi3mOAiabkrCIa_WaHPvOGJjY5TxJ5ZapiPFumOPEFn6RvH_DIoAyZt4nvp2Dih8qyfCgnW9uDS4"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 201 + message: Created + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '1014' + Boulder-Request-Id: + - I3QcSfw6e0xnSzDJlth0unfyyFy_ToHko1ItfHnt7tk + Boulder-Requester: + - '496458' + Link: + - ;rel="next" + Location: + - https://acme-staging.api.letsencrypt.org/acme/authz/ctY8Ec4RD9-PXKZ3GGHUzE0KZa3ZK1qMttqrcrvC8eA + Replay-Nonce: + - lKBMz3-TXfdoUpm2Httav2KfyP0wBPqKx7i3Mh5qsgg + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Tue, 15 Nov 2016 15:46:16 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 15:46:16 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "identifier": { + "type": "dns", + "value": "max123.substrakt.com" + }, + "status": "pending", + "expires": "2016-11-22T15:46:16.199698302Z", + "challenges": [ + { + "type": "tls-sni-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/ctY8Ec4RD9-PXKZ3GGHUzE0KZa3ZK1qMttqrcrvC8eA/16907312", + "token": "EnEXB2bmoTixJVBYDIXE-tRXtts-8O_3xEv4WScDYjw" + }, + { + "type": "dns-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/ctY8Ec4RD9-PXKZ3GGHUzE0KZa3ZK1qMttqrcrvC8eA/16907313", + "token": "zQBMXxIfbK4yB7x8SGjwY1cQBN3LbrwehmJe3p0vCiM" + }, + { + "type": "http-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/ctY8Ec4RD9-PXKZ3GGHUzE0KZa3ZK1qMttqrcrvC8eA/16907314", + "token": "3Rts0qQ7_aTdD5JI0oEIemllfKZhZytQn7bOUmNuVZM" + } + ], + "combinations": [ + [ + 0 + ], + [ + 1 + ], + [ + 2 + ] + ] + } + http_version: + recorded_at: Tue, 15 Nov 2016 15:46:16 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/new-authz + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoibEtCTXozLVRYZmRvVXBtMkh0dGF2MktmeVAwd0JQcUt4N2kzTWg1cXNnZyIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiIxRG85anVDbkdUSTVrY1hWRXVFbWJxUWtjSjJMb09hSU5LRGlXZ0JKWGJ3U29aY3kxWERlVnVTRjZHSG5SZ19ncFdJMmVOTFdXYnJVMmxHX3lPbEJsWEZ6QzhaZTk5YXRVRVNVZ1dxZXNtQ1BRSUJhV0tsRDJhQWNzbmdHZDg0WTNpR0UxZUJhYlRLV3BuZ05Ba2w0VWlfa2xOQjRvTkk0U2JBVzIwMGFVYTRKVDZjUjNfcThlX0ViR2lFb2JBVXhGZEJtX0I0TTBwZ0RJWmd5RFdnYWhhNmdFbC11eGdMZkJ3OTI2dlA4aVBqZnlWZFplbVVBRjdxSzMzZUl4d1dNeEJJTl9tYzNpOS1kQXZnZ2NETXdoRzBaZmxZQkx2QlZGWS03Vk5qY1Y3OC00Vmo5NXF0R0JCOTlmNnc1Uklod0FXdFJiMURqMW56bG1iZmRCNDJhcktoT1JnTnlXSzE2YVBTb3RoS1BwV01TT09Vc19Bbm5wTVE4cFdpX1dabl9SSU1xbjZHcERuNVNpbEJrMnE5WjVicGVSTnNNc1JBRjhHTDR3UkFGZG5BRThTNWE3ck5DVk13bERKTUNiWk9PU1ZPa1ZJNlJ5dnVyNUoyajNtREh6a3FRdzVaaGNPeUhwQUVrVkc5NWFQQjVhenZHaWRZc1c3LU5sTlZ5d2c4NTdiRzNydDBRUlUwWENwUmRGYUZsUHp4cGN2djJWTzN2R2RzTjc3R3RSbUhyY3FiVWt0VHNDTl9qZDk5UU1JT1VLUkJWUGFnZHk3bFNGbk1Cc1c1eFBPMGZYdnpxd0t2YTcxN1dSV1lZUEJ4YkFDMDNnQnBoLWVsTmMwMnRqZjEwYXhSWlE3NUY0UDRiSTI0QkM3NHd3RndBdWZqUXdpNzd4dlZpcFh3cmdvOCJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1hdXRoeiIsImlkZW50aWZpZXIiOnsidHlwZSI6ImRucyIsInZhbHVlIjoibWF4MzQ1LnN1YnN0cmFrdC5jb20ifX0","signature":"NzTJhYTskm6GY2YxngrPKpgqrserGrxlnNBh6NeZXPgTqEou_8jGrTGu2zkrNPuW-_ZVHqeEcZFi4eo733F3zgH3QSexn6OCgkxLvTlXFdZaQCUBC5tjUzaMTJkJubOKdW7L_wGVKzrC48K2DfpMvhMr6bwoJMnFdr-sqVmzXzMmMPLfI3S_LwShfpwQsCuTL5OnvW2QVFinldPZ9vuCpaUycLUKiCmBoR7SB901Zqk8WfnPuc1kjG6BFO_tz0_yXwc04p295poQkKO7zmQ5LKlnhHVLc6jVzf1fRpn3ivB-DF0QXX_h4-uUfkbvO-C8d5eSE_vIGPOj3TdpuxgP9ree_16KCBZT2jObkypyd2c14v04QnaMgVSsB4Y3CtKOaXJJKP6SPvvGkvVogBi7jPr4cUMETpYnKpB9cc9mpxh_o-DYwsYk5iN0qfJ3g68iugJqEu0ylZIMyJm-o_6RtpfcI8X23mvNNvPLrOqjRVnpBqmekzUSQhTJtvgSOMlEDceZFOWlrnpYUsLCQPVrsCxH0-VdrTy8Jy0YgzgmCm_NkJytMSvnwJJEm7vEcFMMAFzs7q0Zv4ZWxtGAw7l9v2FzxFmQk34z4hEixigUBBpUIMr8uRnRxQX01RhRORFQO32ehONgaRkKI3Z4tQNpFE3vrBVVbovsVH06s7IdHIg"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 201 + message: Created + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '1014' + Boulder-Request-Id: + - VEU2JJJdMp7ozI4vcb4CwaYfIX2orQZBILuseY1VpbU + Boulder-Requester: + - '496458' + Link: + - ;rel="next" + Location: + - https://acme-staging.api.letsencrypt.org/acme/authz/73OZWvTewlUC30b61mXrF2xJCEfzRPseCeoDRVlziTs + Replay-Nonce: + - ESdacN7K7N4cGsxt93hXld8gmfR3bVdMgtF3OAJTSo8 + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Tue, 15 Nov 2016 15:46:16 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 15:46:16 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "identifier": { + "type": "dns", + "value": "max345.substrakt.com" + }, + "status": "pending", + "expires": "2016-11-22T15:46:16.687589597Z", + "challenges": [ + { + "type": "http-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/73OZWvTewlUC30b61mXrF2xJCEfzRPseCeoDRVlziTs/16907315", + "token": "txt7p7ltlryvInmMgKcFDMwsZzw2D3WFIShKc3CTh6o" + }, + { + "type": "dns-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/73OZWvTewlUC30b61mXrF2xJCEfzRPseCeoDRVlziTs/16907316", + "token": "YT1tK76nDb-r8rQ3meOKGUC23bvzePeWE4x5-agSdY8" + }, + { + "type": "tls-sni-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/73OZWvTewlUC30b61mXrF2xJCEfzRPseCeoDRVlziTs/16907317", + "token": "7RLAuVQtFy_xzbumHA1_Zo4objeOcLfVyHZezkN0Stw" + } + ], + "combinations": [ + [ + 1 + ], + [ + 2 + ], + [ + 0 + ] + ] + } + http_version: + recorded_at: Tue, 15 Nov 2016 15:46:16 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/challenge/ctY8Ec4RD9-PXKZ3GGHUzE0KZa3ZK1qMttqrcrvC8eA/16907313 + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiRVNkYWNON0s3TjRjR3N4dDkzaFhsZDhnbWZSM2JWZE1ndEYzT0FKVFNvOCIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiIxRG85anVDbkdUSTVrY1hWRXVFbWJxUWtjSjJMb09hSU5LRGlXZ0JKWGJ3U29aY3kxWERlVnVTRjZHSG5SZ19ncFdJMmVOTFdXYnJVMmxHX3lPbEJsWEZ6QzhaZTk5YXRVRVNVZ1dxZXNtQ1BRSUJhV0tsRDJhQWNzbmdHZDg0WTNpR0UxZUJhYlRLV3BuZ05Ba2w0VWlfa2xOQjRvTkk0U2JBVzIwMGFVYTRKVDZjUjNfcThlX0ViR2lFb2JBVXhGZEJtX0I0TTBwZ0RJWmd5RFdnYWhhNmdFbC11eGdMZkJ3OTI2dlA4aVBqZnlWZFplbVVBRjdxSzMzZUl4d1dNeEJJTl9tYzNpOS1kQXZnZ2NETXdoRzBaZmxZQkx2QlZGWS03Vk5qY1Y3OC00Vmo5NXF0R0JCOTlmNnc1Uklod0FXdFJiMURqMW56bG1iZmRCNDJhcktoT1JnTnlXSzE2YVBTb3RoS1BwV01TT09Vc19Bbm5wTVE4cFdpX1dabl9SSU1xbjZHcERuNVNpbEJrMnE5WjVicGVSTnNNc1JBRjhHTDR3UkFGZG5BRThTNWE3ck5DVk13bERKTUNiWk9PU1ZPa1ZJNlJ5dnVyNUoyajNtREh6a3FRdzVaaGNPeUhwQUVrVkc5NWFQQjVhenZHaWRZc1c3LU5sTlZ5d2c4NTdiRzNydDBRUlUwWENwUmRGYUZsUHp4cGN2djJWTzN2R2RzTjc3R3RSbUhyY3FiVWt0VHNDTl9qZDk5UU1JT1VLUkJWUGFnZHk3bFNGbk1Cc1c1eFBPMGZYdnpxd0t2YTcxN1dSV1lZUEJ4YkFDMDNnQnBoLWVsTmMwMnRqZjEwYXhSWlE3NUY0UDRiSTI0QkM3NHd3RndBdWZqUXdpNzd4dlZpcFh3cmdvOCJ9fQ","payload":"eyJyZXNvdXJjZSI6ImNoYWxsZW5nZSIsInR5cGUiOiJkbnMtMDEiLCJrZXlBdXRob3JpemF0aW9uIjoielFCTVh4SWZiSzR5Qjd4OFNHandZMWNRQk4zTGJyd2VobUplM3AwdkNpTS5OX2hyNWE0NFJMa05RTnYwVmpWZjg4N2JMTXdIdV80ZGxtbFJHUzZGcTE0In0","signature":"j58pSMGPWvOW_B58YRYc6-mnlNSs_Fuk4mN-BvNdgzWJpRTj-edy4kIY3DUgXGvv8QqwMgYpupQ-UinGlmZltUOWeWo97h2UyysrdrK8hosFQXbvn53olDAZgeNzmX4Yfapg8sl7F-k87-BFC9lmx6up3ae3yTnQtIsbgzma5rR-XMCdRc3JhB_MRVYC7ARqo05E-C8G6Y2Keh3wMWQXC27jz3-J5KJcqLGV3zHerAU1rVIVYQ7-RZY8VV8-IFbOVDn1iDUQIUqL6VusZt6vKGbYa8FNrtFyYTxSmNEIu6kN0lciEaK1s7Dk2_ewRvpgx6ZIzPc7espc8jVk_37eaPABozCXm_xYH_V3qOM3x3hUQLX-gBW-1WHVTjWdTIlozPU_PXMH0KDistScvh40i1snQOVR68SOK0lnlkUrsx6KRpdfhBesBIIEFLIqf1x_OicxZJCmwCANEaYfoUgeAlVcOECBiLwLQ4-mDVf5tll3AQgsgyay7AcN0hEIK-FilJV8EjWGhcu9EvqQmmL6WDcZFR-Xhkkk7hX2IsHBBIV4r0ndmwCjXvwyD_mbcccGTpodreFOZaQo6Jh0TBKNb7Csp1lZ3oE5Qgntfn6tQ0NO8AzwSwzzGkwrQ0vJd9hVw6JXhYUua5WvDGmy-_v0Rw5if3Sh8qfOYGTiUHTvhfk"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 202 + message: Accepted + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '337' + Boulder-Request-Id: + - QjyAxDtEOsuYLCxuzOQ7vH-aNhHy4KFlPJPlAurITvg + Boulder-Requester: + - '496458' + Link: + - ;rel="up" + Location: + - https://acme-staging.api.letsencrypt.org/acme/challenge/ctY8Ec4RD9-PXKZ3GGHUzE0KZa3ZK1qMttqrcrvC8eA/16907313 + Replay-Nonce: + - RtdEWhFlBtAHmgmOoIDjqHL1C3wOdAC4Kg2Z1NtB80E + Expires: + - Tue, 15 Nov 2016 15:47:17 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 15:47:17 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "type": "dns-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/ctY8Ec4RD9-PXKZ3GGHUzE0KZa3ZK1qMttqrcrvC8eA/16907313", + "token": "zQBMXxIfbK4yB7x8SGjwY1cQBN3LbrwehmJe3p0vCiM", + "keyAuthorization": "zQBMXxIfbK4yB7x8SGjwY1cQBN3LbrwehmJe3p0vCiM.N_hr5a44RLkNQNv0VjVf887bLMwHu_4dlmlRGS6Fq14" + } + http_version: + recorded_at: Tue, 15 Nov 2016 15:47:17 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/challenge/73OZWvTewlUC30b61mXrF2xJCEfzRPseCeoDRVlziTs/16907316 + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiUnRkRVdoRmxCdEFIbWdtT29JRGpxSEwxQzN3T2RBQzRLZzJaMU50QjgwRSIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiIxRG85anVDbkdUSTVrY1hWRXVFbWJxUWtjSjJMb09hSU5LRGlXZ0JKWGJ3U29aY3kxWERlVnVTRjZHSG5SZ19ncFdJMmVOTFdXYnJVMmxHX3lPbEJsWEZ6QzhaZTk5YXRVRVNVZ1dxZXNtQ1BRSUJhV0tsRDJhQWNzbmdHZDg0WTNpR0UxZUJhYlRLV3BuZ05Ba2w0VWlfa2xOQjRvTkk0U2JBVzIwMGFVYTRKVDZjUjNfcThlX0ViR2lFb2JBVXhGZEJtX0I0TTBwZ0RJWmd5RFdnYWhhNmdFbC11eGdMZkJ3OTI2dlA4aVBqZnlWZFplbVVBRjdxSzMzZUl4d1dNeEJJTl9tYzNpOS1kQXZnZ2NETXdoRzBaZmxZQkx2QlZGWS03Vk5qY1Y3OC00Vmo5NXF0R0JCOTlmNnc1Uklod0FXdFJiMURqMW56bG1iZmRCNDJhcktoT1JnTnlXSzE2YVBTb3RoS1BwV01TT09Vc19Bbm5wTVE4cFdpX1dabl9SSU1xbjZHcERuNVNpbEJrMnE5WjVicGVSTnNNc1JBRjhHTDR3UkFGZG5BRThTNWE3ck5DVk13bERKTUNiWk9PU1ZPa1ZJNlJ5dnVyNUoyajNtREh6a3FRdzVaaGNPeUhwQUVrVkc5NWFQQjVhenZHaWRZc1c3LU5sTlZ5d2c4NTdiRzNydDBRUlUwWENwUmRGYUZsUHp4cGN2djJWTzN2R2RzTjc3R3RSbUhyY3FiVWt0VHNDTl9qZDk5UU1JT1VLUkJWUGFnZHk3bFNGbk1Cc1c1eFBPMGZYdnpxd0t2YTcxN1dSV1lZUEJ4YkFDMDNnQnBoLWVsTmMwMnRqZjEwYXhSWlE3NUY0UDRiSTI0QkM3NHd3RndBdWZqUXdpNzd4dlZpcFh3cmdvOCJ9fQ","payload":"eyJyZXNvdXJjZSI6ImNoYWxsZW5nZSIsInR5cGUiOiJkbnMtMDEiLCJrZXlBdXRob3JpemF0aW9uIjoiWVQxdEs3Nm5EYi1yOHJRM21lT0tHVUMyM2J2emVQZVdFNHg1LWFnU2RZOC5OX2hyNWE0NFJMa05RTnYwVmpWZjg4N2JMTXdIdV80ZGxtbFJHUzZGcTE0In0","signature":"HTiNBDed0FvKKeEcSzYFMv4k4BFojZVjjSipO2Fw4sFzGeIEHN859QWc9benSi3Wry-wO2Z_-X9jJ-EmmSzf5GaqtziCJ0_jDJnqOogbFwhPqa7esoQsEpPDdLIwEofcxoFLLOFzv57DZCS74vKvwJfEqzzhuJ7M258B5khM4_I7Ccs4_aQMVIu0VuXcwhNo4O1MNJPi4PDktUJNbhdxVLs4v1EQu6o4OZ20xQ0MeAhZxXXD_cj2NXW-h5SeeomA578_6g4VkFz3ImIae97nvyTczIWpsvc6TAdFg6lFl0TTPB6nk92p56uZnoUS8a9qlL0hOu2Yv_OS1FQYHWIVNWJuEmNIea6wfP8ph6nifTI-PQJDdqrsfjKHoF7bfULMQeVUpX_qSzBzzH78yfu7J75OTme27Ev6viIeY7lzZmQoC_p-uAKQ6Zlc0GHJjf_pSZWUzCl0Gox_ts7isEloV6QU4uIEhpdIDELa9IRWlh4GEXYOXH7_mZeUeQBfTeOd2RuFqz7YJw_VQTrABRuilRB2ZXkAQgift2Eg2aGiadtXD45uS_ubF-PvSzd2DunWF5_l6FHKdIx3wPJgTxzLBC_2JjPx-p57a9InNRGMnoibwdF6dLcIa2wttAoNOvQuTwVvrX6BHdo-b9_RKN8Aao89m0ErG3TuSS8D5NuFKJc"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 202 + message: Accepted + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '337' + Boulder-Request-Id: + - pfGTVYusiY_H_BCLg5gWWWZDG0nmCTXmd5Q578bkD5I + Boulder-Requester: + - '496458' + Link: + - ;rel="up" + Location: + - https://acme-staging.api.letsencrypt.org/acme/challenge/73OZWvTewlUC30b61mXrF2xJCEfzRPseCeoDRVlziTs/16907316 + Replay-Nonce: + - FdlcZQJqCNxrXorMHyNvQzVf3TeVXQSr9j-w_APIyV4 + Expires: + - Tue, 15 Nov 2016 15:47:18 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 15:47:18 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "type": "dns-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/73OZWvTewlUC30b61mXrF2xJCEfzRPseCeoDRVlziTs/16907316", + "token": "YT1tK76nDb-r8rQ3meOKGUC23bvzePeWE4x5-agSdY8", + "keyAuthorization": "YT1tK76nDb-r8rQ3meOKGUC23bvzePeWE4x5-agSdY8.N_hr5a44RLkNQNv0VjVf887bLMwHu_4dlmlRGS6Fq14" + } + http_version: + recorded_at: Tue, 15 Nov 2016 15:47:18 GMT +recorded_with: VCR 3.0.3 diff --git a/test/fixtures/vcr_cassettes/acme-new-authz.yml b/test/fixtures/vcr_cassettes/acme-new-authz.yml new file mode 100644 index 0000000..be8b5bb --- /dev/null +++ b/test/fixtures/vcr_cassettes/acme-new-authz.yml @@ -0,0 +1,485 @@ +--- +http_interactions: +- request: + method: head + uri: https://acme-staging.api.letsencrypt.org/acme/new-reg + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept: + - "*/*" + response: + status: + code: 405 + message: Method Not Allowed + headers: + Server: + - nginx + Content-Type: + - application/problem+json + Content-Length: + - '91' + Allow: + - POST + Boulder-Request-Id: + - c1TukrYI7RZgnQOuKPKXqRpWbbyAo5F0jdsJKQ_ROSo + Replay-Nonce: + - AeFWUBqFZH1tVwq346N2d647mktaqiRrXUkuy3EULl4 + Expires: + - Tue, 15 Nov 2016 14:48:26 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 14:48:26 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: '' + http_version: + recorded_at: Tue, 15 Nov 2016 14:48:26 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/new-reg + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiQWVGV1VCcUZaSDF0VndxMzQ2TjJkNjQ3bWt0YXFpUnJYVWt1eTNFVUxsNCIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiI3VUdTN2xVUVZCbzUxVGEwdVhydHA0MXJnLW9ac29zRTBXc3dCc0NadFFOSkRTTjRsYVFSX0owNDVET0RwZWpscVlaRG1laWs3TU44azRoNl84dURhcGJxNTJzRURZNGp4SHctOTFQeEotbEtMb01vQ2x4QWNINDFoam5VUU5EZk1CVHdGTl9qSTNRcUVYZU16cnpzWWNfQ1N5Z2p4aUFDX0NmLXlyLWRuMV9NSjQxaFYxQVdTc1RZd3ZGakQ4bGdXc0dJRVFrcDhWbHZYdGVZWkl0VmpWVG03UTh3Tm11Wm5WQ1drS1hKSmJkSnpiaTlVbmFvQ1ZuR1BmZzBUQm43cjNmV19nOFQ4M1ZJeG5lelRpOV9DUHp0bUlCVFpxWVd3Z21nZ2o4a1gzdzhUcHBWczZOY2FJWWJJYW9aak9IcjdZWW83dUtPWmRVNWtHZkRCemZSbVNMNzZqeVVTY19Ya0RUQzdvMk9KS0tkVGUwd2hOSTFrSUg1R1doS1FfWUhZZTE0cXljMHA3TjBoZ3pERFZ5bGlHMlJsRi1GazEtZ2pLRmZUbEVDdF9BMFcyc3ZTTnpkem1jak9xQjhsNWl0dGsxNF9JZmk3cEdsOUxWZGtRd3FUVVphd20zcVBrcjlrakdpWDhVVTRidjNRNkhQX3FkSjN2bU9pLVJYaEJSbFVTT2hxMjF6NWFKMnZveFFHNFVJSHZPQjYyY3NCT21zeHpiMndQZUxUWHlZN2oyaUJveVlOMmt2UXpHZmxaM3lSdkVvRU42QnlsZFFsRndqa3pTX2dWQXJUcU1aU2NoZnZpSnZHRUpQdktWekx1S01udHBHZ2oxY0xPN0xvdDRsTDBHWVRtSlVEWDRTbU01bEJ2RlMwMXptWC1lWGZlV0NEMmFJcDZ6UU1vOCJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1yZWciLCJjb250YWN0IjpbIm1haWx0bzptYXhAc3Vic3RyYWt0LmNvbSJdfQ","signature":"XfyNAZXAiAi8Nxv079YQdUDHGAF2i97Q571QOWMCGk-ieqFu5W4wFffHMXibR0F13xO6wILrDU_PZGq3qK-KxnIJ9B98F8vx3IHH4RmkzX9jxdbh3FyadfNE3rs1dGB_8XRZfaSFwt9RbBBgwmF_-HlB073rCA3zY7n01yBP_rZjsHyYuYrDb8JLbPUfxU0z6n2lwAUxVmy-YaiP8A5MV9OEj2udtQXu6vmzZXF0ggTjWe1qdtfD1sRUN9eCYgis4tOqR8U0-DE1QtFoB3H_CC_97zxqWvP0z2UEJoEnfRdwE-K7xKZX2k_pzIVFjOr1GGRNEKnI1xm3mbRmuvm6pPFMPWftRPG9WiporM75pClmL_nsyFVRRz-hRXHMITQ4Ts3zWiNFZc2sXSzG8tHg85ocpCq_aRwcXV68d7I7-kxeXm_4b3iLWFWPYOEy3gmdT8rf6LyqYRpP7s2s5xu-GhxRj8njYcut3USK6yUoSfkSl6n_KPPgpQEnUtPpCEzJXOHVto5IN-lM-cxR4n9tT91HQuDhd9keO_aloqiDsRDDu5Ce_gM6pIeh7srhVTd0wLbAcSBxeqHjnOdpwhfW5duEXFqbAj6Z3CnqxRN8u0Ta4NSds8N7pmza6pvF9tfV6JFnFxbwwmYVKTdKWxLfrx-wA6ZqBp-k9UfgolU4Ou8"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 201 + message: Created + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '914' + Boulder-Request-Id: + - nZ-yyZ55akI1j1pyePOKOc-1ZuIoWa1r5FmilihiOrI + Boulder-Requester: + - '496323' + Link: + - ;rel="next" + - ;rel="terms-of-service" + Location: + - https://acme-staging.api.letsencrypt.org/acme/reg/496323 + Replay-Nonce: + - MtjKXaKeqpWpFBsdAS-Kem5ZQgc3qEpIl9Lwh-7VREQ + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Tue, 15 Nov 2016 14:48:27 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 14:48:27 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "id": 496323, + "key": { + "kty": "RSA", + "n": "7UGS7lUQVBo51Ta0uXrtp41rg-oZsosE0WswBsCZtQNJDSN4laQR_J045DODpejlqYZDmeik7MN8k4h6_8uDapbq52sEDY4jxHw-91PxJ-lKLoMoClxAcH41hjnUQNDfMBTwFN_jI3QqEXeMzrzsYc_CSygjxiAC_Cf-yr-dn1_MJ41hV1AWSsTYwvFjD8lgWsGIEQkp8VlvXteYZItVjVTm7Q8wNmuZnVCWkKXJJbdJzbi9UnaoCVnGPfg0TBn7r3fW_g8T83VIxnezTi9_CPztmIBTZqYWwgmggj8kX3w8TppVs6NcaIYbIaoZjOHr7YYo7uKOZdU5kGfDBzfRmSL76jyUSc_XkDTC7o2OJKKdTe0whNI1kIH5GWhKQ_YHYe14qyc0p7N0hgzDDVyliG2RlF-Fk1-gjKFfTlECt_A0W2svSNzdzmcjOqB8l5ittk14_Ifi7pGl9LVdkQwqTUZawm3qPkr9kjGiX8UU4bv3Q6HP_qdJ3vmOi-RXhBRlUSOhq21z5aJ2voxQG4UIHvOB62csBOmsxzb2wPeLTXyY7j2iBoyYN2kvQzGflZ3yRvEoEN6ByldQlFwjkzS_gVArTqMZSchfviJvGEJPvKVzLuKMntpGgj1cLO7Lot4lL0GYTmJUDX4SmM5lBvFS01zmX-eXfeWCD2aIp6zQMo8", + "e": "AQAB" + }, + "contact": [ + "mailto:max@substrakt.com" + ], + "initialIp": "213.123.191.198", + "createdAt": "2016-11-15T14:48:27.317949602Z", + "Status": "" + } + http_version: + recorded_at: Tue, 15 Nov 2016 14:48:27 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/reg/496323 + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiTXRqS1hhS2VxcFdwRkJzZEFTLUtlbTVaUWdjM3FFcElsOUx3aC03VlJFUSIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiI3VUdTN2xVUVZCbzUxVGEwdVhydHA0MXJnLW9ac29zRTBXc3dCc0NadFFOSkRTTjRsYVFSX0owNDVET0RwZWpscVlaRG1laWs3TU44azRoNl84dURhcGJxNTJzRURZNGp4SHctOTFQeEotbEtMb01vQ2x4QWNINDFoam5VUU5EZk1CVHdGTl9qSTNRcUVYZU16cnpzWWNfQ1N5Z2p4aUFDX0NmLXlyLWRuMV9NSjQxaFYxQVdTc1RZd3ZGakQ4bGdXc0dJRVFrcDhWbHZYdGVZWkl0VmpWVG03UTh3Tm11Wm5WQ1drS1hKSmJkSnpiaTlVbmFvQ1ZuR1BmZzBUQm43cjNmV19nOFQ4M1ZJeG5lelRpOV9DUHp0bUlCVFpxWVd3Z21nZ2o4a1gzdzhUcHBWczZOY2FJWWJJYW9aak9IcjdZWW83dUtPWmRVNWtHZkRCemZSbVNMNzZqeVVTY19Ya0RUQzdvMk9KS0tkVGUwd2hOSTFrSUg1R1doS1FfWUhZZTE0cXljMHA3TjBoZ3pERFZ5bGlHMlJsRi1GazEtZ2pLRmZUbEVDdF9BMFcyc3ZTTnpkem1jak9xQjhsNWl0dGsxNF9JZmk3cEdsOUxWZGtRd3FUVVphd20zcVBrcjlrakdpWDhVVTRidjNRNkhQX3FkSjN2bU9pLVJYaEJSbFVTT2hxMjF6NWFKMnZveFFHNFVJSHZPQjYyY3NCT21zeHpiMndQZUxUWHlZN2oyaUJveVlOMmt2UXpHZmxaM3lSdkVvRU42QnlsZFFsRndqa3pTX2dWQXJUcU1aU2NoZnZpSnZHRUpQdktWekx1S01udHBHZ2oxY0xPN0xvdDRsTDBHWVRtSlVEWDRTbU01bEJ2RlMwMXptWC1lWGZlV0NEMmFJcDZ6UU1vOCJ9fQ","payload":"eyJyZXNvdXJjZSI6InJlZyIsImFncmVlbWVudCI6Imh0dHBzOi8vbGV0c2VuY3J5cHQub3JnL2RvY3VtZW50cy9MRS1TQS12MS4xLjEtQXVndXN0LTEtMjAxNi5wZGYifQ","signature":"usC1SwuUilo1mSMP1FV12dezLOtxENX_NCJFkHXywFfT9LfIL13HXkBWi92eg1vvrRtKkjBTrnHFsZ4tPQvCZrZEWLRyyBDf1GXmS9YaYKcMwXKJx6g5lSwdjJ6-oLVvCguJF-eoxz7YsadwuZZ7Pe4U7uOt4ZzZftfLHB2kz2A73tcsvXxJyjQjF_6ZRM6VkPuVcVCxkXG1BvUjQl7B4nwNlXz_ph4vvu5W2QYQD_opLMHE91AAG2sCmxpXxethwrE3zfDk5wb4xWXWeQIjKOfD_GheJ20TisBgRGLkGEIpHRU-V8xMMI6RrU_70s491dRxkyVakeeAN_8naVtMwd8hfTFAfi814ZcNlZuIFK51MlnAeAHB263_EAjN6OFMf7pTw-Ck-PkNryQqilFa8QRsDbp9wgy1lIgcAV2WlHQ0M27Mg5nb-fqaFxgjRpZU24mSavbGu1vZunIKarTR7wL3is1hP8v8EALenq_1lzHSDyr9B_G-uzKP-QEl1t0Nsyd9hLDcrMAK1pQnYce0ShkkNj9WCq4BBpu0-04CN9ooR7PorJJqR3EpftJ8v5bvo3nNfDjuYtIOwXQS5OPRYkHfyzzgJEU9lCVwZScYNfZilNHBSx_rTXZH6KY9cQaB5__Y3atHegmFOBLXbTh47_S6LeWPaWMkrV4i0biFi0I"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 202 + message: Accepted + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '987' + Boulder-Request-Id: + - gvHEqmg_DZZReGmZxV4ol4VUPbzujJaXhd4jgKn1LBc + Boulder-Requester: + - '496323' + Link: + - ;rel="next" + - ;rel="terms-of-service" + Replay-Nonce: + - BiQgiIOi-1e_tg6Fr21H4sVFDYD8s84VO_WDws0gvXQ + Expires: + - Tue, 15 Nov 2016 14:48:27 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 14:48:27 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "id": 496323, + "key": { + "kty": "RSA", + "n": "7UGS7lUQVBo51Ta0uXrtp41rg-oZsosE0WswBsCZtQNJDSN4laQR_J045DODpejlqYZDmeik7MN8k4h6_8uDapbq52sEDY4jxHw-91PxJ-lKLoMoClxAcH41hjnUQNDfMBTwFN_jI3QqEXeMzrzsYc_CSygjxiAC_Cf-yr-dn1_MJ41hV1AWSsTYwvFjD8lgWsGIEQkp8VlvXteYZItVjVTm7Q8wNmuZnVCWkKXJJbdJzbi9UnaoCVnGPfg0TBn7r3fW_g8T83VIxnezTi9_CPztmIBTZqYWwgmggj8kX3w8TppVs6NcaIYbIaoZjOHr7YYo7uKOZdU5kGfDBzfRmSL76jyUSc_XkDTC7o2OJKKdTe0whNI1kIH5GWhKQ_YHYe14qyc0p7N0hgzDDVyliG2RlF-Fk1-gjKFfTlECt_A0W2svSNzdzmcjOqB8l5ittk14_Ifi7pGl9LVdkQwqTUZawm3qPkr9kjGiX8UU4bv3Q6HP_qdJ3vmOi-RXhBRlUSOhq21z5aJ2voxQG4UIHvOB62csBOmsxzb2wPeLTXyY7j2iBoyYN2kvQzGflZ3yRvEoEN6ByldQlFwjkzS_gVArTqMZSchfviJvGEJPvKVzLuKMntpGgj1cLO7Lot4lL0GYTmJUDX4SmM5lBvFS01zmX-eXfeWCD2aIp6zQMo8", + "e": "AQAB" + }, + "contact": [ + "mailto:max@substrakt.com" + ], + "agreement": "https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf", + "initialIp": "213.123.191.198", + "createdAt": "2016-11-15T14:48:27Z", + "Status": "" + } + http_version: + recorded_at: Tue, 15 Nov 2016 14:48:27 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/new-authz + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiQmlRZ2lJT2ktMWVfdGc2RnIyMUg0c1ZGRFlEOHM4NFZPX1dEd3MwZ3ZYUSIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiI3VUdTN2xVUVZCbzUxVGEwdVhydHA0MXJnLW9ac29zRTBXc3dCc0NadFFOSkRTTjRsYVFSX0owNDVET0RwZWpscVlaRG1laWs3TU44azRoNl84dURhcGJxNTJzRURZNGp4SHctOTFQeEotbEtMb01vQ2x4QWNINDFoam5VUU5EZk1CVHdGTl9qSTNRcUVYZU16cnpzWWNfQ1N5Z2p4aUFDX0NmLXlyLWRuMV9NSjQxaFYxQVdTc1RZd3ZGakQ4bGdXc0dJRVFrcDhWbHZYdGVZWkl0VmpWVG03UTh3Tm11Wm5WQ1drS1hKSmJkSnpiaTlVbmFvQ1ZuR1BmZzBUQm43cjNmV19nOFQ4M1ZJeG5lelRpOV9DUHp0bUlCVFpxWVd3Z21nZ2o4a1gzdzhUcHBWczZOY2FJWWJJYW9aak9IcjdZWW83dUtPWmRVNWtHZkRCemZSbVNMNzZqeVVTY19Ya0RUQzdvMk9KS0tkVGUwd2hOSTFrSUg1R1doS1FfWUhZZTE0cXljMHA3TjBoZ3pERFZ5bGlHMlJsRi1GazEtZ2pLRmZUbEVDdF9BMFcyc3ZTTnpkem1jak9xQjhsNWl0dGsxNF9JZmk3cEdsOUxWZGtRd3FUVVphd20zcVBrcjlrakdpWDhVVTRidjNRNkhQX3FkSjN2bU9pLVJYaEJSbFVTT2hxMjF6NWFKMnZveFFHNFVJSHZPQjYyY3NCT21zeHpiMndQZUxUWHlZN2oyaUJveVlOMmt2UXpHZmxaM3lSdkVvRU42QnlsZFFsRndqa3pTX2dWQXJUcU1aU2NoZnZpSnZHRUpQdktWekx1S01udHBHZ2oxY0xPN0xvdDRsTDBHWVRtSlVEWDRTbU01bEJ2RlMwMXptWC1lWGZlV0NEMmFJcDZ6UU1vOCJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1hdXRoeiIsImlkZW50aWZpZXIiOnsidHlwZSI6ImRucyIsInZhbHVlIjoid3d3LnN1YnN0cmFrdC5jb20ifX0","signature":"VOvdQAJ2XrgnzHzRzdNualf_RFko12afEJXh2YIWVunTJBOVsD3sTuWMUc9Ut9KsZLNpWqGrknHM6V4SSAFgJhB9CRSTO93SqcdJpMaBy_wLRCRpDdLL_3Iwj5-gTe45GE6lJi8eRDe0D_frKnBjD-OX4SqltHs_0CXpsK4-X2tPJjDlkiZi0ALLjLWJR_DWbSdDEKlrfy1-4qDr-qC_NewLK6uLQCCd3lJM8RYyq90ShvQBg1tIKsKHalff36NEawn4fmFarf9DfOLTC_G2wNyOpBeYSBn6CO0ELvxGVhGCW5Ba24jkvLZBm0deRHwAl0rntCA-8NMC7FbV831tHAm9Zi05upH0jC8pcKMkcbK36Dia0ERZXldKGoevWDWtVrnk-7xWp2NQl_AuuMFAgVtaUoctjPjWQ5WdRSkJ0HzvkPtuqh0fIJlFn5Cj0RsNCRadlEqIZ_CrmtxxfipnBZgd8Qqmv2euiScmGwpljVnYC1GKm_C6pWYvErCmAR-3IZBDiLGWmXBJXyEA0oHan3Ygbcmz1SRAqn2qeJ369wrrUW6CPKswTiC_jbHLevn62OBPQK3KCcLMvHB0RNSbIwPi_fO44ayAna5jLUudBdVQmnar6f9LhQBU588KuHLdLY9BeIEGAcDwZ87QUso89HbjXvokQECtqiRSC7HofQU"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 201 + message: Created + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '1011' + Boulder-Request-Id: + - 0heYs4WC56eEZj84h-_nixywOKre6fQ3DP4Rc0vMM78 + Boulder-Requester: + - '496323' + Link: + - ;rel="next" + Location: + - https://acme-staging.api.letsencrypt.org/acme/authz/XiSJFBXqy_UyLBn8VqLNi9Efon9ED0rqva0QlOwzl0Q + Replay-Nonce: + - pOV-Ysk81zbjs4sNtmlTh2OSk81V-fiyqateRvxcK1g + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Tue, 15 Nov 2016 14:48:28 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 14:48:28 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "identifier": { + "type": "dns", + "value": "www.substrakt.com" + }, + "status": "pending", + "expires": "2016-11-22T14:48:28.313172365Z", + "challenges": [ + { + "type": "http-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/XiSJFBXqy_UyLBn8VqLNi9Efon9ED0rqva0QlOwzl0Q/16905560", + "token": "UaQ6dLdzwTdeI6PjyjQt3yU0tj59o-qAZCstMrEqWGE" + }, + { + "type": "dns-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/XiSJFBXqy_UyLBn8VqLNi9Efon9ED0rqva0QlOwzl0Q/16905561", + "token": "CUsaZDcAW7vkB-A2C9NKXZYoDFcPPcY1pQDi1KK3HbU" + }, + { + "type": "tls-sni-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/XiSJFBXqy_UyLBn8VqLNi9Efon9ED0rqva0QlOwzl0Q/16905562", + "token": "Cdgs76wiVM_S3qR9ek5oeG3IHeKHv1l4RK5pOSuKD4I" + } + ], + "combinations": [ + [ + 2 + ], + [ + 1 + ], + [ + 0 + ] + ] + } + http_version: + recorded_at: Tue, 15 Nov 2016 14:48:28 GMT +- request: + method: post + uri: https://www.cloudflare.com/api_json.html + body: + encoding: US-ASCII + string: a=rec_new&z=substrakt.com&type=TXT&name=_acme-challenge.www.substrakt.com&content=T1AEbbzVT91Ub5rFzWIwP7nC0a3sQl8xSyRHfdGMsyA&ttl=1&service_mode=1&tkn=testtoken&u=max%40substrakt.com + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + Content-Type: + - application/x-www-form-urlencoded + response: + status: + code: 200 + message: OK + headers: + Date: + - Tue, 15 Nov 2016 14:48:29 GMT + Content-Type: + - application/json + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Set-Cookie: + - CF_UALE=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0 + - __cfduid=dbc1ccfcd37ce095508fc0f7ef23e13fc1479221308; expires=Wed, 15-Nov-17 + 14:48:28 GMT; path=/; domain=.cloudflare.com; HttpOnly + - vses2=30v445kufo2h1gvajafrvigbr4; path=/; domain=www.cloudflare.com; secure; + HttpOnly + Expires: + - Thu, 19 Nov 1981 08:52:00 GMT + Cache-Control: + - no-store, no-cache, must-revalidate, post-check=0, pre-check=0 + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + Content-Security-Policy: + - default-src 'self' https://*; script-src 'self' 'unsafe-inline' 'unsafe-eval' + https://* data:; img-src 'self' https://* data:; style-src 'self' 'unsafe-inline' + https://*; font-src 'self' https://* data:; frame-src https://*; connect-src + 'self' https://* wss://*.zopim.com data:; + X-Xss-Protection: + - 1; mode=block + Server: + - cloudflare-nginx + Cf-Ray: + - 3023811bbb123608-LHR + body: + encoding: ASCII-8BIT + string: '{"request":{"act":"rec_new"},"response":{"rec":{"obj":{"rec_id":"658540537","rec_hash":"4f3e50de88be57ccc4c67941099a4db9","zone_name":"substrakt.com","name":"_acme-challenge.www.substrakt.com","display_name":"_acme-challenge.www","type":"TXT","prio":null,"content":"T1AEbbzVT91Ub5rFzWIwP7nC0a3sQl8xSyRHfdGMsyA","display_content":"T1AEbbzVT91Ub5rFzWIwP7nC0a3sQl8xSyRHfdGMsyA","ttl":"1","ttl_ceil":86400,"ssl_id":"5084311","ssl_status":"V","ssl_expires_on":null,"auto_ttl":1,"service_mode":"0","props":{"proxiable":0,"cloud_on":0,"cf_open":1,"vanity_lock":0,"ssl":1,"expired_ssl":0,"expiring_ssl":0,"pending_ssl":0}}}},"result":"success","msg":null}' + http_version: + recorded_at: Tue, 15 Nov 2016 14:48:29 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/new-authz + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoicE9WLVlzazgxemJqczRzTnRtbFRoMk9TazgxVi1maXlxYXRlUnZ4Y0sxZyIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiI3VUdTN2xVUVZCbzUxVGEwdVhydHA0MXJnLW9ac29zRTBXc3dCc0NadFFOSkRTTjRsYVFSX0owNDVET0RwZWpscVlaRG1laWs3TU44azRoNl84dURhcGJxNTJzRURZNGp4SHctOTFQeEotbEtMb01vQ2x4QWNINDFoam5VUU5EZk1CVHdGTl9qSTNRcUVYZU16cnpzWWNfQ1N5Z2p4aUFDX0NmLXlyLWRuMV9NSjQxaFYxQVdTc1RZd3ZGakQ4bGdXc0dJRVFrcDhWbHZYdGVZWkl0VmpWVG03UTh3Tm11Wm5WQ1drS1hKSmJkSnpiaTlVbmFvQ1ZuR1BmZzBUQm43cjNmV19nOFQ4M1ZJeG5lelRpOV9DUHp0bUlCVFpxWVd3Z21nZ2o4a1gzdzhUcHBWczZOY2FJWWJJYW9aak9IcjdZWW83dUtPWmRVNWtHZkRCemZSbVNMNzZqeVVTY19Ya0RUQzdvMk9KS0tkVGUwd2hOSTFrSUg1R1doS1FfWUhZZTE0cXljMHA3TjBoZ3pERFZ5bGlHMlJsRi1GazEtZ2pLRmZUbEVDdF9BMFcyc3ZTTnpkem1jak9xQjhsNWl0dGsxNF9JZmk3cEdsOUxWZGtRd3FUVVphd20zcVBrcjlrakdpWDhVVTRidjNRNkhQX3FkSjN2bU9pLVJYaEJSbFVTT2hxMjF6NWFKMnZveFFHNFVJSHZPQjYyY3NCT21zeHpiMndQZUxUWHlZN2oyaUJveVlOMmt2UXpHZmxaM3lSdkVvRU42QnlsZFFsRndqa3pTX2dWQXJUcU1aU2NoZnZpSnZHRUpQdktWekx1S01udHBHZ2oxY0xPN0xvdDRsTDBHWVRtSlVEWDRTbU01bEJ2RlMwMXptWC1lWGZlV0NEMmFJcDZ6UU1vOCJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1hdXRoeiIsImlkZW50aWZpZXIiOnsidHlwZSI6ImRucyIsInZhbHVlIjoic3Vic3RyYWt0LmNvbSJ9fQ","signature":"6HzorSXkl3L60YCtIUlWjPm_7pq_pUWhnK4DdJMnKNuBp1oTr5-XutDsfakiqVn8p7HQ3SsMIm4R03ZnpUhG65dUa8GybXYeQ4C0BL5voUVsAG6CCNjUHd3N_EiqIYDXBabWxQkb_7TIADTRMcEIdkqgRTX6CZBwdduIXGmHSR8d-nsTYqtm7-9uZ-KOEWo4M_X78yP8mfPniCyAtfAwIzXXRivN4KqjurAbkdjBKQMUfIx7VeUEkpmGMMnPTovPiRfaOvd2KTf2KL2Eukw8QvDDPpSnz2LlafbbT7xQAEguduUygGVehEW5iy5UhC3e2o6Dy_KIR1NhLnVqZVFIa7GTeRJw3SnbO5MEDhmTR7fUMLEhdggGiCjD3MudRpdAqrCVFUPchMfZkAYw8QNrvKGs2MSi_Dr3S2VHfZK5rd47l_ieGyX9TEU1b_aUJatQfyps-CdoJR6uGYg6dBCEDUOg0BTTnlb0xb_k4tZ-Q3SLfmjxY08ZlAg5kzMXHTthn_UMmNo5FifFM0orROIwte57LLwq-OEjaTrT0I8Q6Qh1g4WX_jBzF_i71YDR2Pr_VoMVyvGYnHNKv2UL3qCxIBMgk5irq9dydK2dCYf-rwQbHMKBAjoBrl0YYRhegTCxBKLKAIho_DGpdFe4fGzshOKgRxE0itkxTy9ufuGNlD8"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 201 + message: Created + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '1007' + Boulder-Request-Id: + - qEMT7nuW_s51mabn-LNGuD_Yg34vKXn8tDXGEKaShx4 + Boulder-Requester: + - '496323' + Link: + - ;rel="next" + Location: + - https://acme-staging.api.letsencrypt.org/acme/authz/qt2yNI_uWEaOuCPGP_ittq1F2155pRUoIu6WXxBzvTY + Replay-Nonce: + - lSLVb3oO87aNOdjiYR_kEK5_zNG6WKJGA76EKGQZbrY + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Tue, 15 Nov 2016 14:48:29 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 14:48:29 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "identifier": { + "type": "dns", + "value": "substrakt.com" + }, + "status": "pending", + "expires": "2016-11-22T14:48:29.335487866Z", + "challenges": [ + { + "type": "tls-sni-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/qt2yNI_uWEaOuCPGP_ittq1F2155pRUoIu6WXxBzvTY/16905563", + "token": "JapIxchqTYiV8mNPXx7cluko_FoHVj-f-c4WM9lYlc4" + }, + { + "type": "http-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/qt2yNI_uWEaOuCPGP_ittq1F2155pRUoIu6WXxBzvTY/16905564", + "token": "27QKuPw2rjpgpRk0sS8uAj_sRJ7aABQsHyzCYZbDBOM" + }, + { + "type": "dns-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/qt2yNI_uWEaOuCPGP_ittq1F2155pRUoIu6WXxBzvTY/16905565", + "token": "GuVnBgIrY1TscKVedwhrhzGucaW7zSyYVCDDc8qypvI" + } + ], + "combinations": [ + [ + 1 + ], + [ + 0 + ], + [ + 2 + ] + ] + } + http_version: + recorded_at: Tue, 15 Nov 2016 14:48:29 GMT +- request: + method: post + uri: https://www.cloudflare.com/api_json.html + body: + encoding: US-ASCII + string: a=rec_new&z=substrakt.com&type=TXT&name=_acme-challenge.substrakt.com&content=iS3AXcwn8hqJ5M0HWYj44GMrQCfD-faRnC_sZX-lGmI&ttl=1&service_mode=1&tkn=testtoken&u=max%40substrakt.com + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + Content-Type: + - application/x-www-form-urlencoded + response: + status: + code: 200 + message: OK + headers: + Date: + - Tue, 15 Nov 2016 14:48:29 GMT + Content-Type: + - application/json + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Set-Cookie: + - CF_UALE=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0 + - __cfduid=dae730d5524173a9399243eef348457781479221309; expires=Wed, 15-Nov-17 + 14:48:29 GMT; path=/; domain=.cloudflare.com; HttpOnly + - vses2=jqh79kdlqq9cn60dldl8k7ef53; path=/; domain=www.cloudflare.com; secure; + HttpOnly + Expires: + - Thu, 19 Nov 1981 08:52:00 GMT + Cache-Control: + - no-store, no-cache, must-revalidate, post-check=0, pre-check=0 + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + Content-Security-Policy: + - default-src 'self' https://*; script-src 'self' 'unsafe-inline' 'unsafe-eval' + https://* data:; img-src 'self' https://* data:; style-src 'self' 'unsafe-inline' + https://*; font-src 'self' https://* data:; frame-src https://*; connect-src + 'self' https://* wss://*.zopim.com data:; + X-Xss-Protection: + - 1; mode=block + Server: + - cloudflare-nginx + Cf-Ray: + - 30238120abec34ee-LHR + body: + encoding: ASCII-8BIT + string: '{"request":{"act":"rec_new"},"response":{"rec":{"obj":{"rec_id":"658540546","rec_hash":"9d765d7ed469c238d50a316d8a5731a3","zone_name":"substrakt.com","name":"_acme-challenge.substrakt.com","display_name":"_acme-challenge","type":"TXT","prio":null,"content":"iS3AXcwn8hqJ5M0HWYj44GMrQCfD-faRnC_sZX-lGmI","display_content":"iS3AXcwn8hqJ5M0HWYj44GMrQCfD-faRnC_sZX-lGmI","ttl":"1","ttl_ceil":86400,"ssl_id":"5084311","ssl_status":"V","ssl_expires_on":null,"auto_ttl":1,"service_mode":"0","props":{"proxiable":0,"cloud_on":0,"cf_open":1,"vanity_lock":0,"ssl":1,"expired_ssl":0,"expiring_ssl":0,"pending_ssl":0}}}},"result":"success","msg":null}' + http_version: + recorded_at: Tue, 15 Nov 2016 14:48:29 GMT +recorded_with: VCR 3.0.3 diff --git a/test/fixtures/vcr_cassettes/acme-new-reg-debug.yml b/test/fixtures/vcr_cassettes/acme-new-reg-debug.yml new file mode 100644 index 0000000..48b9940 --- /dev/null +++ b/test/fixtures/vcr_cassettes/acme-new-reg-debug.yml @@ -0,0 +1,177 @@ +--- +http_interactions: +- request: + method: head + uri: https://acme-staging.api.letsencrypt.org/acme/new-reg + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept: + - "*/*" + response: + status: + code: 405 + message: Method Not Allowed + headers: + Server: + - nginx + Content-Type: + - application/problem+json + Content-Length: + - '91' + Allow: + - POST + Boulder-Request-Id: + - UWpOUWqqFqqjOOwYsxJaVNe8YMS93yrpHx5IvQWNqfw + Replay-Nonce: + - MXk8W4jN2w39jf6mWaSzMCZDxeLY9QApxfD8P7HdR90 + Expires: + - Tue, 15 Nov 2016 14:41:55 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 14:41:55 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: '' + http_version: + recorded_at: Tue, 15 Nov 2016 14:41:55 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/new-reg + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiTVhrOFc0ak4ydzM5amY2bVdhU3pNQ1pEeGVMWTlRQXB4ZkQ4UDdIZFI5MCIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiIxUFU1Y1BKejMxeDJWTTdlNFN2TVZYa1gzTHJ3cVhjaVNaTmhYMFNhQXVEMjYxVHVzbU1mdFI2aWZfYmxfa21acFVhSEM4bkszS3JyQ3hFdE1sQlBDTmFIR1Y3M0k0WlRLSVpDZWp2RU5yUU5idmxLWnlUREo3VFNLOE95VWpXQ1VYX3EtUFJJblpmelR0aFRlRTNRRFpVXzFINHlWTVI1TFpVTUhMY2FqQUVGNWhMc2NyYjRsaWQtT3dHR1o4eFVMTDQtRXdscDM5OEl2TnlGRjcwQmhmOUZlX1ZTZDlYWEJ2LTczekhNS3JKT3hxQjFLcWxvRGd6SGJlR2NEVFktLS1ZQ1ZIX0JRS2o3NkZIdEFaMFZadjFZekhqcVdIRTRWRk5iMlp1NWVKa2psRmhJaE5xdnhRcHZnZ0tlamNVWndzMFFoX3FnZ2c4RW9kamtvelZneHhXdFllS0FBdWNISTFtdXZOWWFFMHNWQ0hoRkRraUY5MExqc2RWMGptLWlQaVpQcmxYSDF5QVl1UEYxZ3pDSVZRR051TWwyYVZxMDNxQ3FXa25uNVVNcXdMZndXVHRMMmRaclBBWXVyOVA0UGN6TmdLaGt0ellZSXYzdk1wTWdWT0UwTHl5MS1FVmFFXzBvR0lBYkhGWjRTVFlRQks2QjZYMzBzN3pDQmRSWmZwUUIyLTF4TjhyeGR2LTA5NWdqdU9DU29wd1l2eVFTd2ZCM2RuWDE0QWFUbEdPQjBMWFktOU4wYjdqNmZKRDd1WmctMFJYQkxHeVg4QWFmaFhmNS1kVkVVZGE0OFowN3k2QV81WElGOVFZT1liSDhOalJ4MlRwdlRBNkxrYVNpNEpjQ2dhWDhuelBiWGVjUkdoM2EtU0RGX3B0TDNFSFhOUVAtVkN2bVhORSJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1yZWciLCJjb250YWN0IjpbIm1haWx0bzp0ZXN0QGV4YW1wbGUuY29tIl19","signature":"pW6vt3Z3vk_VQ78QEa_-I84r14wo8rvT9Q2AIKu-IOJ0a4wqPUlb8fOIpctw_YCNQ7wePiTlzbSSLw_nxHE17Ex4gSluHp0WANAIYAUjBf21F3eGNddlaXhCmRPNdiKEGOCBDD27NLk4VySXq837nPXgi2QbExMRc-4CZmf8HqZkCzYk08rurhDTTviF1ddsj5iMQFLWffIQ6gPa3bwCgyqFXa4qHxPgUBxiZJmjkOED_1VGDEo6nLOyXcMZ7DFx9-df5BeMJYaDY54XlpkqoxA3MFW9kVD2RGe1ntsc4Q_DqPU8iGF_d3qgrzGUINM2EpFZDqnuJmMg4Mcwpz7WFOlBRLA4j6ptqtHes8YlB3lSb-E-TQ92XOksWTnjHAONAef35pjCYMtGuAf3rz70qniHFCg2K0hJHj9-0Y1KieXN2As6wkWhhun1uT3m4d-TYtR1Oa1CLtjsAMx1ySsTlB3RWh_IIUUgG9kjYSjazKdrSTUuf8BfxtOrPZH72Mo3f-cS6QJ7kIxjwtEue2Nv161G08RiYxbfkfBy7VQ9tuyFbYxTx5eCPsoRDfZUajpFXIH9tfw4wG0OULVokIbd-mHqCIEeUsRzQZFj5mKk3oLsE0PZfWTBffq-W2uvINDVtTPvkd0Jp3quUgLuRGTGJVln6jWlQ6vM6TRKFuCyPGA"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 201 + message: Created + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '913' + Boulder-Request-Id: + - 5LZis7RtRmya02s6cXLWQFhwp8JRZgS0vi-IRQByLkE + Boulder-Requester: + - '496313' + Link: + - ;rel="next" + - ;rel="terms-of-service" + Location: + - https://acme-staging.api.letsencrypt.org/acme/reg/496313 + Replay-Nonce: + - bsGm96gV303IXx_O1Pf9c140KSjsnr7Ge-TNX992vPY + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Tue, 15 Nov 2016 14:41:56 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 14:41:56 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "id": 496313, + "key": { + "kty": "RSA", + "n": "1PU5cPJz31x2VM7e4SvMVXkX3LrwqXciSZNhX0SaAuD261TusmMftR6if_bl_kmZpUaHC8nK3KrrCxEtMlBPCNaHGV73I4ZTKIZCejvENrQNbvlKZyTDJ7TSK8OyUjWCUX_q-PRInZfzTthTeE3QDZU_1H4yVMR5LZUMHLcajAEF5hLscrb4lid-OwGGZ8xULL4-Ewlp398IvNyFF70Bhf9Fe_VSd9XXBv-73zHMKrJOxqB1KqloDgzHbeGcDTY---YCVH_BQKj76FHtAZ0VZv1YzHjqWHE4VFNb2Zu5eJkjlFhIhNqvxQpvggKejcUZws0Qh_qggg8EodjkozVgxxWtYeKAAucHI1muvNYaE0sVCHhFDkiF90LjsdV0jm-iPiZPrlXH1yAYuPF1gzCIVQGNuMl2aVq03qCqWknn5UMqwLfwWTtL2dZrPAYur9P4PczNgKhktzYYIv3vMpMgVOE0Lyy1-EVaE_0oGIAbHFZ4STYQBK6B6X30s7zCBdRZfpQB2-1xN8rxdv-095gjuOCSopwYvyQSwfB3dnX14AaTlGOB0LXY-9N0b7j6fJD7uZg-0RXBLGyX8AafhXf5-dVEUda48Z07y6A_5XIF9QYOYbH8NjRx2TpvTA6LkaSi4JcCgaX8nzPbXecRGh3a-SDF_ptL3EHXNQP-VCvmXNE", + "e": "AQAB" + }, + "contact": [ + "mailto:test@example.com" + ], + "initialIp": "213.123.191.198", + "createdAt": "2016-11-15T14:41:56.595826055Z", + "Status": "" + } + http_version: + recorded_at: Tue, 15 Nov 2016 14:41:56 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/reg/496313 + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiYnNHbTk2Z1YzMDNJWHhfTzFQZjljMTQwS1Nqc25yN0dlLVROWDk5MnZQWSIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiIxUFU1Y1BKejMxeDJWTTdlNFN2TVZYa1gzTHJ3cVhjaVNaTmhYMFNhQXVEMjYxVHVzbU1mdFI2aWZfYmxfa21acFVhSEM4bkszS3JyQ3hFdE1sQlBDTmFIR1Y3M0k0WlRLSVpDZWp2RU5yUU5idmxLWnlUREo3VFNLOE95VWpXQ1VYX3EtUFJJblpmelR0aFRlRTNRRFpVXzFINHlWTVI1TFpVTUhMY2FqQUVGNWhMc2NyYjRsaWQtT3dHR1o4eFVMTDQtRXdscDM5OEl2TnlGRjcwQmhmOUZlX1ZTZDlYWEJ2LTczekhNS3JKT3hxQjFLcWxvRGd6SGJlR2NEVFktLS1ZQ1ZIX0JRS2o3NkZIdEFaMFZadjFZekhqcVdIRTRWRk5iMlp1NWVKa2psRmhJaE5xdnhRcHZnZ0tlamNVWndzMFFoX3FnZ2c4RW9kamtvelZneHhXdFllS0FBdWNISTFtdXZOWWFFMHNWQ0hoRkRraUY5MExqc2RWMGptLWlQaVpQcmxYSDF5QVl1UEYxZ3pDSVZRR051TWwyYVZxMDNxQ3FXa25uNVVNcXdMZndXVHRMMmRaclBBWXVyOVA0UGN6TmdLaGt0ellZSXYzdk1wTWdWT0UwTHl5MS1FVmFFXzBvR0lBYkhGWjRTVFlRQks2QjZYMzBzN3pDQmRSWmZwUUIyLTF4TjhyeGR2LTA5NWdqdU9DU29wd1l2eVFTd2ZCM2RuWDE0QWFUbEdPQjBMWFktOU4wYjdqNmZKRDd1WmctMFJYQkxHeVg4QWFmaFhmNS1kVkVVZGE0OFowN3k2QV81WElGOVFZT1liSDhOalJ4MlRwdlRBNkxrYVNpNEpjQ2dhWDhuelBiWGVjUkdoM2EtU0RGX3B0TDNFSFhOUVAtVkN2bVhORSJ9fQ","payload":"eyJyZXNvdXJjZSI6InJlZyIsImFncmVlbWVudCI6Imh0dHBzOi8vbGV0c2VuY3J5cHQub3JnL2RvY3VtZW50cy9MRS1TQS12MS4xLjEtQXVndXN0LTEtMjAxNi5wZGYifQ","signature":"bjfzi6JMUt1PdqgoOyxDbbrSQvdX8paNbs_Y88AeNjELF3nZGP-mddEi_E1xZVcl-5iMv3Nk7E-BA54fp0AsnKogWskEPoezh6KMnNVbdtAmG5iNCCrve6QnJ-qIUSTIHqEqefwSk7odg3lnYk2WqKhYDJ0brLmRWQ_VEKa-Jy24fl3h1pypJRAIqjh3fckQk_OVfTmdBP8zyf7Y201Nh6e3aDFXHuHrvMUIxShzb8IKK_dARBllextzhFKD6UNk9Ls2u0E4HoUunMa2n68zkOrWmPPJ2qH5Z4va8anNwcnbHGLKD36Qs6nHn9Xty5TnL0fUc1U9AFQcsTMM3Z6DM6CIgKA6QSiE3Z1VPpHB_It87DVf8tPGJFGwD3iyx-OKhTxvyUHHmTPmk88PwLr_13ewbQdllj7limSf-4cizpwSPqV-pcgWZ1FAMex9RTCVFL_AlGD5RaiEXE1JD_KirhHFiiQD8CdyEdmlQ3VWCX4tBZ8JqMb-RhJWyVZtKBC2Hz5Ip7GbfHScdSxtu2ZpV9ShMdirkK-c730xQiIGlQ4NqhHXB7T4B-FuPdZltsABKZ9L3OzAPwkpsB6tXmHVTc_nQCOc4ihhKsSx64EIgQnDLj7zsqTEDhhkssOJbH_suzdS9UGXvLZtnZmnTddhRO6ly3Y49mqxYfwYaRBEGnc"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 202 + message: Accepted + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '986' + Boulder-Request-Id: + - wXU0LXZn388qMI7nkiGmMjtOLuTL1YXga6TXgEkcaY0 + Boulder-Requester: + - '496313' + Link: + - ;rel="next" + - ;rel="terms-of-service" + Replay-Nonce: + - k6q9ogZWb4QIIrozUEITO8j5CaX26WWwXJH0wCqdtis + Expires: + - Tue, 15 Nov 2016 14:41:57 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 14:41:57 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "id": 496313, + "key": { + "kty": "RSA", + "n": "1PU5cPJz31x2VM7e4SvMVXkX3LrwqXciSZNhX0SaAuD261TusmMftR6if_bl_kmZpUaHC8nK3KrrCxEtMlBPCNaHGV73I4ZTKIZCejvENrQNbvlKZyTDJ7TSK8OyUjWCUX_q-PRInZfzTthTeE3QDZU_1H4yVMR5LZUMHLcajAEF5hLscrb4lid-OwGGZ8xULL4-Ewlp398IvNyFF70Bhf9Fe_VSd9XXBv-73zHMKrJOxqB1KqloDgzHbeGcDTY---YCVH_BQKj76FHtAZ0VZv1YzHjqWHE4VFNb2Zu5eJkjlFhIhNqvxQpvggKejcUZws0Qh_qggg8EodjkozVgxxWtYeKAAucHI1muvNYaE0sVCHhFDkiF90LjsdV0jm-iPiZPrlXH1yAYuPF1gzCIVQGNuMl2aVq03qCqWknn5UMqwLfwWTtL2dZrPAYur9P4PczNgKhktzYYIv3vMpMgVOE0Lyy1-EVaE_0oGIAbHFZ4STYQBK6B6X30s7zCBdRZfpQB2-1xN8rxdv-095gjuOCSopwYvyQSwfB3dnX14AaTlGOB0LXY-9N0b7j6fJD7uZg-0RXBLGyX8AafhXf5-dVEUda48Z07y6A_5XIF9QYOYbH8NjRx2TpvTA6LkaSi4JcCgaX8nzPbXecRGh3a-SDF_ptL3EHXNQP-VCvmXNE", + "e": "AQAB" + }, + "contact": [ + "mailto:test@example.com" + ], + "agreement": "https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf", + "initialIp": "213.123.191.198", + "createdAt": "2016-11-15T14:41:56Z", + "Status": "" + } + http_version: + recorded_at: Tue, 15 Nov 2016 14:41:57 GMT +recorded_with: VCR 3.0.3 diff --git a/test/fixtures/vcr_cassettes/acme-new-reg.yml b/test/fixtures/vcr_cassettes/acme-new-reg.yml new file mode 100644 index 0000000..fdbeb4a --- /dev/null +++ b/test/fixtures/vcr_cassettes/acme-new-reg.yml @@ -0,0 +1,177 @@ +--- +http_interactions: +- request: + method: head + uri: https://acme-v01.api.letsencrypt.org/acme/new-reg + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept: + - "*/*" + response: + status: + code: 405 + message: Method Not Allowed + headers: + Server: + - nginx + Content-Type: + - application/problem+json + Content-Length: + - '91' + Allow: + - POST + Boulder-Request-Id: + - GfiXJrw6eCPE_k8PjG53XawaQeRnV2PUX9bGLaT3C9s + Replay-Nonce: + - MVNQOuBotmhIFlOm6k-H0vEueFFwUFm5KGxOv4EMtRc + Expires: + - Tue, 15 Nov 2016 14:41:48 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 14:41:48 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: '' + http_version: + recorded_at: Tue, 15 Nov 2016 14:41:49 GMT +- request: + method: post + uri: https://acme-v01.api.letsencrypt.org/acme/new-reg + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiTVZOUU91Qm90bWhJRmxPbTZrLUgwdkV1ZUZGd1VGbTVLR3hPdjRFTXRSYyIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ1dnNtRnNmQ0dvWEktSlJjcWJqZzlVZjdvbEtGX1NtbDA4WlRqUktLVF8yemNOVFJ1S3dmc0U4TjZFSi1XZGllU1AyY2M4WGZJTEtRaDIxNFZORkozdkxNb3BzRzc0NXZ1eWJSeTZIYWZ0UTNLVEQwVXF6MEdzLWhnRGRnVHF3SGQ2Q3ZicWpvemVBLTNsWXJSUkxrRW1XQTE0S2JxTWxqN1F0MC1mRmh1cjJuMmhhUllFTnFoNkgybVNXYTc1aFA3Nk1FcEEzeFhiVnp0Q3dXaVRFS1lXZ3NUX182RmNxTjlsMXRRM3BFR0wzVzVNNVNqMWticTRROF9pRXJtdmxUZEFHQ1VYQ2dldUR3ZXBTQk1pTjFHcGc1YVozYTEwUEpIaWdVbTU4dG9SbjRHbHROdm8yVXhSWlVPcUpFdWgwMlpWajFFTWQydWVTWXZqOHR5bzluR3ItNzFxNlNsem12SzN4NTk1dDVqWGg5RXQ4b3hkTVlMR1Z3am9pV1Bqblk5TnNwekcyUnM5dnVROXVhUDJtN0ZoWEVPbm9XZHpBTkE2VE1FazVEM0ZEZnF2bS1kRGl6b3g2QWk0M3piTmRhbmtESjF0bEdXVG1qMUJvYlNhcEt1MmFPeUhwRUtMZTV1eWEzVldGbFRxRnctSFRXMmpKaERkNi1RMk04cTF2aDY1UzVWLWc4czYwM1hLVW9xU21VTVluRDdRbGdEYmlQLWpNdW1VSUt1VXRDajFTejJzZXBKUTAyRjJkb1hoMjdVc1ItbTR4Qm9wZzVhZVlSN3g2YklqVTNvNV93MjZ4UWxod04wMW1jbVZ6WVFtcjIydVpSNnU0ZUhfX3MtazRTTzNuNElYRVk0NkJwTEZZcE11VnRuanY5akFuWUVTeVNzMlQ3bnBJZ0lRTSJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1yZWciLCJjb250YWN0IjpbIm1haWx0bzp0ZXN0QGV4YW1wbGUuY29tIl19","signature":"lATsODydPbG1heB9xuKz2ol-N_k6eFIU4skagAbeWl54WQlgFRhAfZc3xAqH3Wb46z1jlT5saS2CNZJfCKPXH9IXa9xYbyJb8xroVJwIUwNAhf7cuKCYQnG5X5YAuFqmdoh_gRdN6gnviQ2AX6YrRsN5gX7e8kZ86kvpKKiL13qMssYrdz27-dqa4as8_uIYj9-79Av_l63kI2RPJ_c8r7o89wbisidn8EB1fIV03_qr6LoH2NGAQLQih7NNvD3L99B_Fb-PtzRckc7oCNXYLg6yBmWXrKr6F4UC5LfshvqzHLS3RYGYWJSLpTmysS2lY0neQHW3lW2KTMMrDMh6wS94Q_N-5-TSafbi3Iv1j9VEgye3-GRZu6JeL_6YwN3pHMZXbOR6lqUCnzfcHBtMHRLbKSdu9tV_61kE4bqQKD0hFZxS0dJZmN8ALgcANfWOM8bUCe8MMfIFWkprUxKg8yHM5zXu-bNWcoMHeCzhf8WRpJuC3YsxPRGBTy9UMGzvJnv73eZ1HXZeDlWI-A9h36FnenFZlmsPOUVUPNhJpp5o1GVcqLtBf3rOzhc1wupLjJyFIGiaqYPpxliNQfkT3nAJ2_FxRSDBDyu8THVcCwVpONx7Zjw-ItFwDGaaeu0ukaZYnVxNLdnbwJEMWKCFwDLn1MiuWjXyKqMqXJOjTpE"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 201 + message: Created + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '914' + Boulder-Request-Id: + - t4ied2TSDfRTPLfBw0yqCEeTer2ny3-1Y-deugqvxhM + Boulder-Requester: + - '6221151' + Link: + - ;rel="next" + - ;rel="terms-of-service" + Location: + - https://acme-v01.api.letsencrypt.org/acme/reg/6221151 + Replay-Nonce: + - vszalF2wceiKMdhOWj3D-Ry9nMTusShH_kdS89eq9_Q + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Tue, 15 Nov 2016 14:41:51 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 14:41:51 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "id": 6221151, + "key": { + "kty": "RSA", + "n": "uvsmFsfCGoXI-JRcqbjg9Uf7olKF_Sml08ZTjRKKT_2zcNTRuKwfsE8N6EJ-WdieSP2cc8XfILKQh214VNFJ3vLMopsG745vuybRy6HaftQ3KTD0Uqz0Gs-hgDdgTqwHd6CvbqjozeA-3lYrRRLkEmWA14KbqMlj7Qt0-fFhur2n2haRYENqh6H2mSWa75hP76MEpA3xXbVztCwWiTEKYWgsT__6FcqN9l1tQ3pEGL3W5M5Sj1kbq4Q8_iErmvlTdAGCUXCgeuDwepSBMiN1Gpg5aZ3a10PJHigUm58toRn4GltNvo2UxRZUOqJEuh02ZVj1EMd2ueSYvj8tyo9nGr-71q6SlzmvK3x595t5jXh9Et8oxdMYLGVwjoiWPjnY9NspzG2Rs9vuQ9uaP2m7FhXEOnoWdzANA6TMEk5D3FDfqvm-dDizox6Ai43zbNdankDJ1tlGWTmj1BobSapKu2aOyHpEKLe5uya3VWFlTqFw-HTW2jJhDd6-Q2M8q1vh65S5V-g8s603XKUoqSmUMYnD7QlgDbiP-jMumUIKuUtCj1Sz2sepJQ02F2doXh27UsR-m4xBopg5aeYR7x6bIjU3o5_w26xQlhwN01mcmVzYQmr22uZR6u4eH__s-k4SO3n4IXEY46BpLFYpMuVtnjv9jAnYESySs2T7npIgIQM", + "e": "AQAB" + }, + "contact": [ + "mailto:test@example.com" + ], + "initialIp": "213.123.191.198", + "createdAt": "2016-11-15T14:41:51.277641087Z", + "Status": "" + } + http_version: + recorded_at: Tue, 15 Nov 2016 14:41:53 GMT +- request: + method: post + uri: https://acme-v01.api.letsencrypt.org/acme/reg/6221151 + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoidnN6YWxGMndjZWlLTWRoT1dqM0QtUnk5bk1UdXNTaEhfa2RTODllcTlfUSIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ1dnNtRnNmQ0dvWEktSlJjcWJqZzlVZjdvbEtGX1NtbDA4WlRqUktLVF8yemNOVFJ1S3dmc0U4TjZFSi1XZGllU1AyY2M4WGZJTEtRaDIxNFZORkozdkxNb3BzRzc0NXZ1eWJSeTZIYWZ0UTNLVEQwVXF6MEdzLWhnRGRnVHF3SGQ2Q3ZicWpvemVBLTNsWXJSUkxrRW1XQTE0S2JxTWxqN1F0MC1mRmh1cjJuMmhhUllFTnFoNkgybVNXYTc1aFA3Nk1FcEEzeFhiVnp0Q3dXaVRFS1lXZ3NUX182RmNxTjlsMXRRM3BFR0wzVzVNNVNqMWticTRROF9pRXJtdmxUZEFHQ1VYQ2dldUR3ZXBTQk1pTjFHcGc1YVozYTEwUEpIaWdVbTU4dG9SbjRHbHROdm8yVXhSWlVPcUpFdWgwMlpWajFFTWQydWVTWXZqOHR5bzluR3ItNzFxNlNsem12SzN4NTk1dDVqWGg5RXQ4b3hkTVlMR1Z3am9pV1Bqblk5TnNwekcyUnM5dnVROXVhUDJtN0ZoWEVPbm9XZHpBTkE2VE1FazVEM0ZEZnF2bS1kRGl6b3g2QWk0M3piTmRhbmtESjF0bEdXVG1qMUJvYlNhcEt1MmFPeUhwRUtMZTV1eWEzVldGbFRxRnctSFRXMmpKaERkNi1RMk04cTF2aDY1UzVWLWc4czYwM1hLVW9xU21VTVluRDdRbGdEYmlQLWpNdW1VSUt1VXRDajFTejJzZXBKUTAyRjJkb1hoMjdVc1ItbTR4Qm9wZzVhZVlSN3g2YklqVTNvNV93MjZ4UWxod04wMW1jbVZ6WVFtcjIydVpSNnU0ZUhfX3MtazRTTzNuNElYRVk0NkJwTEZZcE11VnRuanY5akFuWUVTeVNzMlQ3bnBJZ0lRTSJ9fQ","payload":"eyJyZXNvdXJjZSI6InJlZyIsImFncmVlbWVudCI6Imh0dHBzOi8vbGV0c2VuY3J5cHQub3JnL2RvY3VtZW50cy9MRS1TQS12MS4xLjEtQXVndXN0LTEtMjAxNi5wZGYifQ","signature":"cbkJdYxO992xxhGJAMYubzl9-dAZHCcuBgm0G-_Urz7plFSummhzR-XnfmitZQpMLjXqtMRhdlSgD9l2V4NtAGHIwtyGRsCHImkpeKHLgHgfik5fUo-KxhuKO99lXcq5x60064n8E6F3sJqHeEZpzgKgXH7rMhsDf6XyPdQ2M2Qp_goSThWFRIvVPZKo_hXq9esms3oLAZ6z6sFHIyHgIJpM8k88kkVmy3PpsqSXkIK_n-Z9fXPCvcdfyS8QMxs9DhmLSPBfdnHQaTX79rZ3pTpFnJO-09PpNJ6IHhIJeT6GvndABW00eo_vdhNCZ72H1w146q8cum4hP6Sw-u9WH1nT9LTA_Hte7sOI6A4Km6OogAinDCwb8IW7K-nvzVNlI_rPSY0SWFCqxk9f-nY2Ubvcct64gDlK4Z9tVEFYF3m1CiLw7P8JUUl2-iv9u5NR8t1wgRldnXAqbtUVaaA8llX1povNLJAD44zXwV9SoSxqGu3vTXNyouQX3tGB_5A1s9iFyJmY7JynzVuEcunQibJotYiGOdnVSekVY1JlpRbZ4JyUvcaQhOs4eVDXfKDFNs5sqhUJXCCstXU9WU1Emt2ukXB_AWfWfp-zoicoaJRZKHvAXnqTtJ7R48cWWsGZwShulOU0uzGPpduw6F8P1pszgShRkGUTW90VtiyzPaQ"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 202 + message: Accepted + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '987' + Boulder-Request-Id: + - prHRvD5svPow5N6feO3EzDks_C74xV7DyJD-lIzZWZo + Boulder-Requester: + - '6221151' + Link: + - ;rel="next" + - ;rel="terms-of-service" + Replay-Nonce: + - _CvfLT_7WJoK01qwx2_dk_vAXNPcadb4sxQaLOG0s8k + Expires: + - Tue, 15 Nov 2016 14:41:54 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 14:41:54 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "id": 6221151, + "key": { + "kty": "RSA", + "n": "uvsmFsfCGoXI-JRcqbjg9Uf7olKF_Sml08ZTjRKKT_2zcNTRuKwfsE8N6EJ-WdieSP2cc8XfILKQh214VNFJ3vLMopsG745vuybRy6HaftQ3KTD0Uqz0Gs-hgDdgTqwHd6CvbqjozeA-3lYrRRLkEmWA14KbqMlj7Qt0-fFhur2n2haRYENqh6H2mSWa75hP76MEpA3xXbVztCwWiTEKYWgsT__6FcqN9l1tQ3pEGL3W5M5Sj1kbq4Q8_iErmvlTdAGCUXCgeuDwepSBMiN1Gpg5aZ3a10PJHigUm58toRn4GltNvo2UxRZUOqJEuh02ZVj1EMd2ueSYvj8tyo9nGr-71q6SlzmvK3x595t5jXh9Et8oxdMYLGVwjoiWPjnY9NspzG2Rs9vuQ9uaP2m7FhXEOnoWdzANA6TMEk5D3FDfqvm-dDizox6Ai43zbNdankDJ1tlGWTmj1BobSapKu2aOyHpEKLe5uya3VWFlTqFw-HTW2jJhDd6-Q2M8q1vh65S5V-g8s603XKUoqSmUMYnD7QlgDbiP-jMumUIKuUtCj1Sz2sepJQ02F2doXh27UsR-m4xBopg5aeYR7x6bIjU3o5_w26xQlhwN01mcmVzYQmr22uZR6u4eH__s-k4SO3n4IXEY46BpLFYpMuVtnjv9jAnYESySs2T7npIgIQM", + "e": "AQAB" + }, + "contact": [ + "mailto:test@example.com" + ], + "agreement": "https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf", + "initialIp": "213.123.191.198", + "createdAt": "2016-11-15T14:41:51Z", + "Status": "" + } + http_version: + recorded_at: Tue, 15 Nov 2016 14:41:54 GMT +recorded_with: VCR 3.0.3 diff --git a/test/fixtures/vcr_cassettes/check-cloudflare-authentiation-failure.yml b/test/fixtures/vcr_cassettes/check-cloudflare-authentiation-failure.yml new file mode 100644 index 0000000..fa5a760 --- /dev/null +++ b/test/fixtures/vcr_cassettes/check-cloudflare-authentiation-failure.yml @@ -0,0 +1,55 @@ +--- +http_interactions: +- request: + method: get + uri: https://api.cloudflare.com/client/v4/user + body: + encoding: US-ASCII + string: '' + headers: + X-Auth-Email: + - max@substrakt.com + X-Auth-Key: + - this-is-not-a-real-tokenb + Content-Type: + - application/json + response: + status: + code: 400 + message: Bad Request + headers: + Date: + - Tue, 29 Nov 2016 15:08:13 GMT + Content-Type: + - application/json + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Set-Cookie: + - __cfduid=dc09026808ef50bffd20ee15ce87df3181480432093; expires=Wed, 29-Nov-17 + 15:08:13 GMT; path=/; domain=.cloudflare.com; HttpOnly + Expires: + - Sun, 25 Jan 1981 05:00:00 GMT + Cache-Control: + - no-store, no-cache, must-revalidate, post-check=0, pre-check=0 + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + Server: + - cloudflare-nginx + Cf-Ray: + - 3096f94a7ab53578-LHR + body: + encoding: UTF-8 + string: '{"success":false,"errors":[{"code":6003,"message":"Invalid request + headers","error_chain":[{"code":6103,"message":"Invalid format for X-Auth-Key + header"}]}],"messages":[],"result":null}' + http_version: + recorded_at: Tue, 29 Nov 2016 15:08:14 GMT +recorded_with: VCR 3.0.3 diff --git a/test/fixtures/vcr_cassettes/check-cloudflare-authentiation-success.yml b/test/fixtures/vcr_cassettes/check-cloudflare-authentiation-success.yml new file mode 100644 index 0000000..a5eb418 --- /dev/null +++ b/test/fixtures/vcr_cassettes/check-cloudflare-authentiation-success.yml @@ -0,0 +1,53 @@ +--- +http_interactions: +- request: + method: get + uri: https://api.cloudflare.com/client/v4/user + body: + encoding: US-ASCII + string: '' + headers: + X-Auth-Email: + - max@substrakt.com + X-Auth-Key: + - 856a0658ade46696ec3e165827d728382f989 + Content-Type: + - application/json + response: + status: + code: 200 + message: OK + headers: + Date: + - Tue, 29 Nov 2016 15:07:22 GMT + Content-Type: + - application/json + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Set-Cookie: + - __cfduid=d25906969eb0578ee329ca8ed02669d3f1480432042; expires=Wed, 29-Nov-17 + 15:07:22 GMT; path=/; domain=.cloudflare.com; HttpOnly + Expires: + - Sun, 25 Jan 1981 05:00:00 GMT + Cache-Control: + - no-store, no-cache, must-revalidate, post-check=0, pre-check=0 + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + Server: + - cloudflare-nginx + Cf-Ray: + - 3096f8078c5a35b4-LHR + body: + encoding: UTF-8 + string: '{"result":{"id":"ed0c2e827e608a93b65c429e503f5374","email":"max@substrakt.com","username":"1d1ea72d0ec1888c9c3dc35dd9ffa4ee","first_name":null,"last_name":null,"telephone":null,"country":null,"zipcode":null,"two_factor_authentication_enabled":false,"two_factor_authentication_locked":false,"created_on":"2016-02-11T15:28:34.019505Z","modified_on":"2016-09-06T12:46:08.721952Z","organizations":null,"has_pro_zones":false,"has_business_zones":false,"has_enterprise_zones":false},"success":true,"errors":[],"messages":[]}' + http_version: + recorded_at: Tue, 29 Nov 2016 15:07:22 GMT +recorded_with: VCR 3.0.3 diff --git a/test/fixtures/vcr_cassettes/check-heroku-authentication-failure.yml b/test/fixtures/vcr_cassettes/check-heroku-authentication-failure.yml new file mode 100644 index 0000000..93502d9 --- /dev/null +++ b/test/fixtures/vcr_cassettes/check-heroku-authentication-failure.yml @@ -0,0 +1,46 @@ +--- +http_interactions: +- request: + method: get + uri: https://api.heroku.com/apps + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/vnd.heroku+json; version=3 + Authorization: + - Bearer this-is-not-a-real-token + Content-Type: + - application/json + response: + status: + code: 401 + message: Unauthorized + headers: + Cache-Control: + - private, no-cache + Content-Type: + - application/json + Date: + - Tue, 29 Nov 2016 14:59:27 GMT + Request-Id: + - 8159efa5-26dd-430c-6683-39993c6e3deb,9f74e1df-8d85-3cba-8187-2403d1b38964 + Vary: + - Accept-Encoding + Via: + - 1.1 spaces-router (+291255b) + X-Content-Type-Options: + - nosniff + X-Runtime: + - '0.022004634' + Content-Length: + - '63' + Connection: + - keep-alive + body: + encoding: UTF-8 + string: '{"id":"unauthorized","message":"Invalid credentials provided."}' + http_version: + recorded_at: Tue, 29 Nov 2016 14:59:27 GMT +recorded_with: VCR 3.0.3 diff --git a/test/fixtures/vcr_cassettes/check-heroku-authentication-succeed.yml b/test/fixtures/vcr_cassettes/check-heroku-authentication-succeed.yml new file mode 100644 index 0000000..6597aa0 --- /dev/null +++ b/test/fixtures/vcr_cassettes/check-heroku-authentication-succeed.yml @@ -0,0 +1,62 @@ +--- +http_interactions: +- request: + method: get + uri: https://api.heroku.com/apps + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/vnd.heroku+json; version=3 + Authorization: + - Bearer 3c3b9d66-015a-4c91-bda2-14c79c88fb15 + Content-Type: + - application/json + response: + status: + code: 200 + message: OK + headers: + Accept-Ranges: + - id, name, updated_at + Cache-Control: + - private, no-cache + Content-Range: + - name app-1..app-2 + Content-Type: + - application/json + Date: + - Tue, 29 Nov 2016 14:57:34 GMT + Etag: + - '"929997e75d2782be47676c465897379e"' + Last-Modified: + - Tue, 29 Nov 2016 12:13:44 GMT + Oauth-Scope: + - global + Oauth-Scope-Accepted: + - global read read-protected write write-protected + Ratelimit-Multiplier: + - '1' + Ratelimit-Remaining: + - '4499' + Request-Id: + - 2e26469f-95f7-44b5-5b22-3d7503210e58,45780389-1416-e76c-c25d-9438fe7b587e + Vary: + - Accept-Encoding + Via: + - 1.1 spaces-router (+291255b) + X-Content-Type-Options: + - nosniff + X-Runtime: + - '0.1298948' + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: UTF-8 + string: 'REDACTED' + http_version: + recorded_at: Tue, 29 Nov 2016 14:57:35 GMT +recorded_with: VCR 3.0.3 diff --git a/test/fixtures/vcr_cassettes/new-cert-provisioner-heroku-success.yml b/test/fixtures/vcr_cassettes/new-cert-provisioner-heroku-success.yml new file mode 100644 index 0000000..ea3f1de --- /dev/null +++ b/test/fixtures/vcr_cassettes/new-cert-provisioner-heroku-success.yml @@ -0,0 +1,860 @@ +--- +http_interactions: +- request: + method: head + uri: https://acme-staging.api.letsencrypt.org/acme/new-reg + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept: + - "*/*" + response: + status: + code: 405 + message: Method Not Allowed + headers: + Server: + - nginx + Content-Type: + - application/problem+json + Content-Length: + - '91' + Allow: + - POST + Boulder-Request-Id: + - DQYOe_uUWsYSeRnksCFWprTPAb50a8yvJitsDcBKR4I + Replay-Nonce: + - pfBlp0oHblH28U62W8vxW_LDIa_E8VZQhMZk1yRI7a0 + Expires: + - Fri, 25 Nov 2016 19:43:48 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Fri, 25 Nov 2016 19:43:48 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: '' + http_version: + recorded_at: Fri, 25 Nov 2016 19:43:48 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/new-reg + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoicGZCbHAwb0hibEgyOFU2Mlc4dnhXX0xESWFfRThWWlFoTVprMXlSSTdhMCIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ1NTRZdWE1WV91N3lXMlZHS0drQVpjRW8yWGx5Sk9YdGVyR3dac01zRU54aG5oUUFSR0l5cFdkZkd4N0pyWll1Zm80NTNuZWFJWk1LY19DSDY4bXpmQVRQM0hUV2tjNE9hQ0hPaFN2TVh5bEdaMWJKelpnV0I5VEFUc3JZNjYxd1g3eEhteVNOVDYtamdYel9XY3dQVDU1b1pDY2M5QUgtT0FyUzhEdUo4NU0wNFpwWDZUaHBoS2x1QlRncUlMYnhjNVJydndCcFRHemw1VU5mUmhzd0xKbEZiMmdvQ0dsUFVERUhjSy1GQ2xIRmVubkRnU0VlWDRLaHdYdXgzazBLb3FXemxibURwWjc0X0trMFMwWC1zdmVqTUphMFExaThnSWJxQmRhZFlvaHo0aDhJV05SbW9za1BHXzNTWGRuLWZKOE53eHZwbzhFS04yNjEzdGhQd1JvMnlSQkR5YU5TcFBMNXJ0RllhTXM0SkgtdlFDNTNIUXoyTVlOb200dU92TkVWUFV1dTVvQXRna2NrOVNGcXc3djBza1pLdTQtZUlSZEFFZTFaQW5LQXRXYlE3M2p1T3RzekIyeE1Oc0ZiaVE1a1lGZVB5bzV1WlJKSEtXLVJycVJySmpCTFg5RVJZWEktQUI0aFpDOExRajlDY0hjZDgtNEt0QkdnYlJLX3pKR2paSENYdk9qeXRxcU9UZEwwM1lFZEVKZXFsZDA0dDYyeDU4dl9fZUYyMldNeS1ETUxhaTAxRElVSkFaX2hFN3JwOU1WOVQxdDQ5WUNIVElTYlhhaWM2YTF3YjZicFNsbDRUVHJTbHFpa0ZsY0w0VEh2MjkzZmxzR0drRzZGYXNqTFpiZUczUjRYTTlMYl9Ha0RkTXZMcThzQ3BLQ3NWaFlNVEhXTzk3ayJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1yZWciLCJjb250YWN0IjpbIm1haWx0bzptYXhAc3Vic3RyYWt0LmNvbSJdfQ","signature":"J1BX8nxB_4sW8r1MsxDXhnR3N9RZmL4VhxfP6Jn5y-Jdcw6pV7JkXMLieKzNsVTbDMp6IY7G5doiQZHMZcDnh4EvbPOXomOySRfpxCzlMCJh-apQvJ4LJSqICyTJXSg-ONhuY7EUWT2Lbe4uTNiXQieTc1qpe06Y8u0HHSCAUtafrmX2zAWU8PCmpxp-YjUA4fYELKrNppsAiuo7riC5zpAFVL01FcmcqB4xK_q2Fe99pQZTq16am65UTCxB3dctgYNUej9IqKQGM4YA0UCLe-TC9tYbg18ya7kcA-r5KeTx-Sejb1MT7nfKgRfV58KukDe54h-T1N1DhnYWKE35FTLWud-hu6hiDspSZ0_aZphyMC72OsiDTzPeW8jZQHd22ToHCh5eFKD25UGzhIH1Kv4C82J5hzxjhjb90aiPFj0RHgUOkvvw_LuNtlkO-SV8U1rxi5fTS6WiUJpg0MlKJ48m1i6tCmmX9FDqsfWmC_ssFrIfFxu-L1qJbLk8pIfnXvYL5UUygFhG-Epeqp0P2dusKK8fl_t5n5w05j8Z8uQQ2ffJPF-aT0ypHmYqwvM4iRJeh6BKWKYeXT0URRpVXcoU91sNw_STy77gIFDv804462ikqmo2UZphCet2Ly9RZ92kdn6i61wG2grex2fhQ7Q6HQGdS23BJoMFvDNF8bY"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 201 + message: Created + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '912' + Boulder-Request-Id: + - tawKmVjk_laKcq84xhuNDX-7UfbJQbT6HPTeWxscfKM + Boulder-Requester: + - '515230' + Link: + - ;rel="next" + - ;rel="terms-of-service" + Location: + - https://acme-staging.api.letsencrypt.org/acme/reg/515230 + Replay-Nonce: + - fN8QJN5a4maxLFEIKpaI5ZzSXJCbQB3-XDPyZjbwQRs + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Fri, 25 Nov 2016 19:43:49 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Fri, 25 Nov 2016 19:43:49 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "id": 515230, + "key": { + "kty": "RSA", + "n": "u54Yua5Y_u7yW2VGKGkAZcEo2XlyJOXterGwZsMsENxhnhQARGIypWdfGx7JrZYufo453neaIZMKc_CH68mzfATP3HTWkc4OaCHOhSvMXylGZ1bJzZgWB9TATsrY661wX7xHmySNT6-jgXz_WcwPT55oZCcc9AH-OArS8DuJ85M04ZpX6ThphKluBTgqILbxc5RrvwBpTGzl5UNfRhswLJlFb2goCGlPUDEHcK-FClHFennDgSEeX4KhwXux3k0KoqWzlbmDpZ74_Kk0S0X-svejMJa0Q1i8gIbqBdadYohz4h8IWNRmoskPG_3SXdn-fJ8Nwxvpo8EKN2613thPwRo2yRBDyaNSpPL5rtFYaMs4JH-vQC53HQz2MYNom4uOvNEVPUuu5oAtgkck9SFqw7v0skZKu4-eIRdAEe1ZAnKAtWbQ73juOtszB2xMNsFbiQ5kYFePyo5uZRJHKW-RrqRrJjBLX9ERYXI-AB4hZC8LQj9CcHcd8-4KtBGgbRK_zJGjZHCXvOjytqqOTdL03YEdEJeqld04t62x58v__eF22WMy-DMLai01DIUJAZ_hE7rp9MV9T1t49YCHTISbXaic6a1wb6bpSll4TTrSlqikFlcL4THv293flsGGkG6FasjLZbeG3R4XM9Lb_GkDdMvLq8sCpKCsVhYMTHWO97k", + "e": "AQAB" + }, + "contact": [ + "mailto:max@substrakt.com" + ], + "initialIp": "82.43.101.135", + "createdAt": "2016-11-25T19:43:49.349440381Z", + "Status": "" + } + http_version: + recorded_at: Fri, 25 Nov 2016 19:43:49 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/reg/515230 + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiZk44UUpONWE0bWF4TEZFSUtwYUk1WnpTWEpDYlFCMy1YRFB5Wmpid1FScyIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ1NTRZdWE1WV91N3lXMlZHS0drQVpjRW8yWGx5Sk9YdGVyR3dac01zRU54aG5oUUFSR0l5cFdkZkd4N0pyWll1Zm80NTNuZWFJWk1LY19DSDY4bXpmQVRQM0hUV2tjNE9hQ0hPaFN2TVh5bEdaMWJKelpnV0I5VEFUc3JZNjYxd1g3eEhteVNOVDYtamdYel9XY3dQVDU1b1pDY2M5QUgtT0FyUzhEdUo4NU0wNFpwWDZUaHBoS2x1QlRncUlMYnhjNVJydndCcFRHemw1VU5mUmhzd0xKbEZiMmdvQ0dsUFVERUhjSy1GQ2xIRmVubkRnU0VlWDRLaHdYdXgzazBLb3FXemxibURwWjc0X0trMFMwWC1zdmVqTUphMFExaThnSWJxQmRhZFlvaHo0aDhJV05SbW9za1BHXzNTWGRuLWZKOE53eHZwbzhFS04yNjEzdGhQd1JvMnlSQkR5YU5TcFBMNXJ0RllhTXM0SkgtdlFDNTNIUXoyTVlOb200dU92TkVWUFV1dTVvQXRna2NrOVNGcXc3djBza1pLdTQtZUlSZEFFZTFaQW5LQXRXYlE3M2p1T3RzekIyeE1Oc0ZiaVE1a1lGZVB5bzV1WlJKSEtXLVJycVJySmpCTFg5RVJZWEktQUI0aFpDOExRajlDY0hjZDgtNEt0QkdnYlJLX3pKR2paSENYdk9qeXRxcU9UZEwwM1lFZEVKZXFsZDA0dDYyeDU4dl9fZUYyMldNeS1ETUxhaTAxRElVSkFaX2hFN3JwOU1WOVQxdDQ5WUNIVElTYlhhaWM2YTF3YjZicFNsbDRUVHJTbHFpa0ZsY0w0VEh2MjkzZmxzR0drRzZGYXNqTFpiZUczUjRYTTlMYl9Ha0RkTXZMcThzQ3BLQ3NWaFlNVEhXTzk3ayJ9fQ","payload":"eyJyZXNvdXJjZSI6InJlZyIsImFncmVlbWVudCI6Imh0dHBzOi8vbGV0c2VuY3J5cHQub3JnL2RvY3VtZW50cy9MRS1TQS12MS4xLjEtQXVndXN0LTEtMjAxNi5wZGYifQ","signature":"BYAgafAwJSu5711NO-f1pNkkCJmieHp2k7Oj2nIerFwjFD97vpDvcu9MTj_WZ9Q1YNreQ7mnlxyG1OV0oF4s968NYD89vaZEm9sTmPCQcaJRnwRmUPmvNznqd2aq_P9hRWKu1g3tptPOLmiQ6l05mEF9HtRNtiUNo9v3lObFr9vUm9yzlrEHZASxDMnb7bYDSfLQswR3EntL5lCklYCEceESXveneOgUcfAYvNj6OCMXrkaVkX-y7GIuUrDBWnadkrJd_Ewnnb8GBTdezclC8Vufb5bY-jEyMlHh7gWwQQbi-HYKHwZ24d1xS7Fyu_hMfNv8FB62t3TZkw0v_Qhcs2o9wrDlgrYPZ_ESMw9MfJSmKBzF4WwL6ETBfnEyUlmWLglePupSESWDakAUbEyFvhtVlEsCvJbaH52zEmxs2jvhsMwHIUw4PPeGebM0YKSAfC8zDEkCla28iE30OAKkeT1FbGUft6izDEi-BM_CCG2seRznsBsdf0KWGreamic7ixA7ugPhZASZ-w448LxnJeY7Y1AV8dORitKoD6VZ4PBSNaZCoRYSxaM7IZDfM9Ta7KyffAJh4iOSWNsdi558AsB4ToTlYit92J5wqqvRj5OaaONYDY_1NbVlI5dCh9PMjSprR3T0c_2Cgr0NrzlTf80EIA-hjV_uOECe2FfPAUU"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 202 + message: Accepted + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '985' + Boulder-Request-Id: + - PSu9181IU_ffF_oQ113fbrAHzUAWVG5kMZS5D72Zf64 + Boulder-Requester: + - '515230' + Link: + - ;rel="next" + - ;rel="terms-of-service" + Replay-Nonce: + - OcUwF8GNHtAHzzyb9kUJlFy0vXNtO0sWhM9dDbrNpFE + Expires: + - Fri, 25 Nov 2016 19:43:49 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Fri, 25 Nov 2016 19:43:49 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "id": 515230, + "key": { + "kty": "RSA", + "n": "u54Yua5Y_u7yW2VGKGkAZcEo2XlyJOXterGwZsMsENxhnhQARGIypWdfGx7JrZYufo453neaIZMKc_CH68mzfATP3HTWkc4OaCHOhSvMXylGZ1bJzZgWB9TATsrY661wX7xHmySNT6-jgXz_WcwPT55oZCcc9AH-OArS8DuJ85M04ZpX6ThphKluBTgqILbxc5RrvwBpTGzl5UNfRhswLJlFb2goCGlPUDEHcK-FClHFennDgSEeX4KhwXux3k0KoqWzlbmDpZ74_Kk0S0X-svejMJa0Q1i8gIbqBdadYohz4h8IWNRmoskPG_3SXdn-fJ8Nwxvpo8EKN2613thPwRo2yRBDyaNSpPL5rtFYaMs4JH-vQC53HQz2MYNom4uOvNEVPUuu5oAtgkck9SFqw7v0skZKu4-eIRdAEe1ZAnKAtWbQ73juOtszB2xMNsFbiQ5kYFePyo5uZRJHKW-RrqRrJjBLX9ERYXI-AB4hZC8LQj9CcHcd8-4KtBGgbRK_zJGjZHCXvOjytqqOTdL03YEdEJeqld04t62x58v__eF22WMy-DMLai01DIUJAZ_hE7rp9MV9T1t49YCHTISbXaic6a1wb6bpSll4TTrSlqikFlcL4THv293flsGGkG6FasjLZbeG3R4XM9Lb_GkDdMvLq8sCpKCsVhYMTHWO97k", + "e": "AQAB" + }, + "contact": [ + "mailto:max@substrakt.com" + ], + "agreement": "https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf", + "initialIp": "82.43.101.135", + "createdAt": "2016-11-25T19:43:49Z", + "Status": "" + } + http_version: + recorded_at: Fri, 25 Nov 2016 19:43:50 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/new-authz + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiT2NVd0Y4R05IdEFIenp5YjlrVUpsRnkwdlhOdE8wc1doTTlkRGJyTnBGRSIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ1NTRZdWE1WV91N3lXMlZHS0drQVpjRW8yWGx5Sk9YdGVyR3dac01zRU54aG5oUUFSR0l5cFdkZkd4N0pyWll1Zm80NTNuZWFJWk1LY19DSDY4bXpmQVRQM0hUV2tjNE9hQ0hPaFN2TVh5bEdaMWJKelpnV0I5VEFUc3JZNjYxd1g3eEhteVNOVDYtamdYel9XY3dQVDU1b1pDY2M5QUgtT0FyUzhEdUo4NU0wNFpwWDZUaHBoS2x1QlRncUlMYnhjNVJydndCcFRHemw1VU5mUmhzd0xKbEZiMmdvQ0dsUFVERUhjSy1GQ2xIRmVubkRnU0VlWDRLaHdYdXgzazBLb3FXemxibURwWjc0X0trMFMwWC1zdmVqTUphMFExaThnSWJxQmRhZFlvaHo0aDhJV05SbW9za1BHXzNTWGRuLWZKOE53eHZwbzhFS04yNjEzdGhQd1JvMnlSQkR5YU5TcFBMNXJ0RllhTXM0SkgtdlFDNTNIUXoyTVlOb200dU92TkVWUFV1dTVvQXRna2NrOVNGcXc3djBza1pLdTQtZUlSZEFFZTFaQW5LQXRXYlE3M2p1T3RzekIyeE1Oc0ZiaVE1a1lGZVB5bzV1WlJKSEtXLVJycVJySmpCTFg5RVJZWEktQUI0aFpDOExRajlDY0hjZDgtNEt0QkdnYlJLX3pKR2paSENYdk9qeXRxcU9UZEwwM1lFZEVKZXFsZDA0dDYyeDU4dl9fZUYyMldNeS1ETUxhaTAxRElVSkFaX2hFN3JwOU1WOVQxdDQ5WUNIVElTYlhhaWM2YTF3YjZicFNsbDRUVHJTbHFpa0ZsY0w0VEh2MjkzZmxzR0drRzZGYXNqTFpiZUczUjRYTTlMYl9Ha0RkTXZMcThzQ3BLQ3NWaFlNVEhXTzk3ayJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1hdXRoeiIsImlkZW50aWZpZXIiOnsidHlwZSI6ImRucyIsInZhbHVlIjoid3d3LnN1YnN0cmFrdC5jb20ifX0","signature":"oxpJVsNJDP2-xsCwVFdjVaCOub_Klk5viSSwFCgltRDWYsJizp7N1cR-6UJdDHuG2MjQHMX_T3fb1AwnprraUIuuhYVMjjUYAg2NVpCtIF3G8HObWMKBHYDd1AIDANwkdlrOzd00ssnMnt1YfEtws_F5j6OyIKZpCP5zbz-dclwBd1KdlDVU_Lb7yzQC7vmARVXUFq2TXHsKbs34vTcyUg1MR9v2-PGTFttJ1ruYkF6UGzGU3S27XWooc-1N5Geyk2lyiu3vd_VBy0fyTJTdmYu7Y9rFLzkDeVsjPin-0BEAXlL8Rd9yX6TMVHl-iw_1y_KanmOm6aNlTNlo4pE_kG9tP2iQaJyg3DuURWYIpFaM5XhMaFTVyFtJVuUCf-Wve286bhjdpJjfMlYBBliobZkGAFF7bocIRBYQwuqM_a0NVYMkuZC_R98EpXcxzZTG_L1PkIWHessrhRsSP4xJ2OnwY0nCTN-kS9xWODjugeOtDLMnm21vbyy-guQej8KHpiLYWkfwlHL-DJSh5McwzivPg0zU3gN71rPE2fF4czE2Fa3LxPfN8S0eAJIuNaS5lGDp9WiW7vuwHKH6VInBlfa_jeidvlRSXorCX1Iw70c3A-IIOEZT5PqNOyAPZtplBBOCyHv2IDF78jORaVm8wgZa9BK5BlBJ7ksHufG8euY"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 201 + message: Created + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '1011' + Boulder-Request-Id: + - Rh-KnlIB_3e_mn5Wytsna0iUIN9KxNz7qFNossRe9X0 + Boulder-Requester: + - '515230' + Link: + - ;rel="next" + Location: + - https://acme-staging.api.letsencrypt.org/acme/authz/9zcZviLntxFRNItDBZa8350l-Za7ezQaWkBKnrRSYEs + Replay-Nonce: + - VKs1pIokAwxCupqKFweucuAqDZ8SflFZAjpILnSphAE + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Fri, 25 Nov 2016 19:43:50 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Fri, 25 Nov 2016 19:43:50 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "identifier": { + "type": "dns", + "value": "www.substrakt.com" + }, + "status": "pending", + "expires": "2016-12-02T19:43:50.476963624Z", + "challenges": [ + { + "type": "tls-sni-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/9zcZviLntxFRNItDBZa8350l-Za7ezQaWkBKnrRSYEs/17255030", + "token": "ZONyyOzF4msuy58Qab-wjEDx95ZA-ZpPD4thbv8YRjA" + }, + { + "type": "dns-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/9zcZviLntxFRNItDBZa8350l-Za7ezQaWkBKnrRSYEs/17255031", + "token": "0gOAYLuO6t27BhDtN9br5Bb_OjwBYNsh4XWRihyJW5c" + }, + { + "type": "http-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/9zcZviLntxFRNItDBZa8350l-Za7ezQaWkBKnrRSYEs/17255032", + "token": "RaRBalJkSDdziXHBPif1QC0oUze3OcWhMeDpZv0ecrA" + } + ], + "combinations": [ + [ + 2 + ], + [ + 1 + ], + [ + 0 + ] + ] + } + http_version: + recorded_at: Fri, 25 Nov 2016 19:43:50 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/new-authz + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiVktzMXBJb2tBd3hDdXBxS0Z3ZXVjdUFxRFo4U2ZsRlpBanBJTG5TcGhBRSIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ1NTRZdWE1WV91N3lXMlZHS0drQVpjRW8yWGx5Sk9YdGVyR3dac01zRU54aG5oUUFSR0l5cFdkZkd4N0pyWll1Zm80NTNuZWFJWk1LY19DSDY4bXpmQVRQM0hUV2tjNE9hQ0hPaFN2TVh5bEdaMWJKelpnV0I5VEFUc3JZNjYxd1g3eEhteVNOVDYtamdYel9XY3dQVDU1b1pDY2M5QUgtT0FyUzhEdUo4NU0wNFpwWDZUaHBoS2x1QlRncUlMYnhjNVJydndCcFRHemw1VU5mUmhzd0xKbEZiMmdvQ0dsUFVERUhjSy1GQ2xIRmVubkRnU0VlWDRLaHdYdXgzazBLb3FXemxibURwWjc0X0trMFMwWC1zdmVqTUphMFExaThnSWJxQmRhZFlvaHo0aDhJV05SbW9za1BHXzNTWGRuLWZKOE53eHZwbzhFS04yNjEzdGhQd1JvMnlSQkR5YU5TcFBMNXJ0RllhTXM0SkgtdlFDNTNIUXoyTVlOb200dU92TkVWUFV1dTVvQXRna2NrOVNGcXc3djBza1pLdTQtZUlSZEFFZTFaQW5LQXRXYlE3M2p1T3RzekIyeE1Oc0ZiaVE1a1lGZVB5bzV1WlJKSEtXLVJycVJySmpCTFg5RVJZWEktQUI0aFpDOExRajlDY0hjZDgtNEt0QkdnYlJLX3pKR2paSENYdk9qeXRxcU9UZEwwM1lFZEVKZXFsZDA0dDYyeDU4dl9fZUYyMldNeS1ETUxhaTAxRElVSkFaX2hFN3JwOU1WOVQxdDQ5WUNIVElTYlhhaWM2YTF3YjZicFNsbDRUVHJTbHFpa0ZsY0w0VEh2MjkzZmxzR0drRzZGYXNqTFpiZUczUjRYTTlMYl9Ha0RkTXZMcThzQ3BLQ3NWaFlNVEhXTzk3ayJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1hdXRoeiIsImlkZW50aWZpZXIiOnsidHlwZSI6ImRucyIsInZhbHVlIjoic3Vic3RyYWt0LmNvbSJ9fQ","signature":"EmhVqxSSMXqiIv_VfnLXqb0ReEnT2Yh2vHiQXQ16wjeV6pOJ2UYuCHXjuIv9ZVDKxz5g34y-wQkabyYmkkBFSAdNCcn5WL4Le-Yfdx-siJWR303KIbf2piQjjmLyv9szgNpSpYo4Sw1SM_FLnamP-F4WK_LyTLQc8K93qRdD-RDcKAjpGsPQGY7BynBeXENsSo3egjVQ1ImS8bOIOJA17OBwKreoJn4pWn8MtoicrHfgLDqUCTsUnSqG_DZxp37LGoUt7duVTEw_aRdnFPkPahz7kmYnhr4pEXthiShLe24DD_yYg3Xh8muctbJLEXL0vgAzVBMeQ7Wh6NswicY1WWXzZPyBp3EYQb8QNwalvVf0wvMGkr-gf5FXvo398ByYAckjLbwDtestO5bCM3tfejKgRSOa0Ey9PAiuyeJg1pLH2cspUI0as7_Mglw1fmV_cnZP2l8SdGWJGKJ-Yb9b5Hyk5l3rk_Kd8xa5d3TJc_r2Jq5uIX6aSKbxIWGhv_Ow3BFjD32QV444ipcvDF0JFDbnhn_nbbi5sQnlVEmotuZKDbvJmF3Oj-vNFORzZ8SKwor240nyVXD9YXukN3ou8FZ3kXKKvl9xMf2gFOSfpvN-J4SJiQYO1y5mtmuu7YSCZGsvAR0cY73f9Bcd8NdEAgn9nZhjM9AivGXHVJTH-Qo"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 201 + message: Created + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '1007' + Boulder-Request-Id: + - enkNdnaIUtRBgXG51-yyesmu-havJoqf28_kZEqJQcU + Boulder-Requester: + - '515230' + Link: + - ;rel="next" + Location: + - https://acme-staging.api.letsencrypt.org/acme/authz/AUg9phkJKzkrHFEigYPzA8M3w9HSesInZU4eYXBxN4k + Replay-Nonce: + - JAp97kFgm6jfygatsgUMJXljUu0pTYYeJKsi8c66qfY + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Fri, 25 Nov 2016 19:43:51 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Fri, 25 Nov 2016 19:43:51 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "identifier": { + "type": "dns", + "value": "substrakt.com" + }, + "status": "pending", + "expires": "2016-12-02T19:43:51.016716778Z", + "challenges": [ + { + "type": "http-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/AUg9phkJKzkrHFEigYPzA8M3w9HSesInZU4eYXBxN4k/17255033", + "token": "YBmLYlZqG8L9IcRoCVFLUClsmtnMzYYlCRxGrIdQl0Y" + }, + { + "type": "dns-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/AUg9phkJKzkrHFEigYPzA8M3w9HSesInZU4eYXBxN4k/17255034", + "token": "hkVutrAaDw_YZWlH6Rktn4qvZqPNpzw1X6IbPW-FOss" + }, + { + "type": "tls-sni-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/AUg9phkJKzkrHFEigYPzA8M3w9HSesInZU4eYXBxN4k/17255035", + "token": "DREv0Ub7G98RJ8LV0O1pcKj3N7GiPyUWE_8UrMmJ4Fo" + } + ], + "combinations": [ + [ + 1 + ], + [ + 0 + ], + [ + 2 + ] + ] + } + http_version: + recorded_at: Fri, 25 Nov 2016 19:43:51 GMT +- request: + method: post + uri: https://www.cloudflare.com/api_json.html + body: + encoding: US-ASCII + string: a=rec_new&z=substrakt.com&type=TXT&name=_acme-challenge.www.substrakt.com&content=u-ByBNjjCHeiSnMLtb5MIP9DMClhHQpoqaLyxpsifeI&ttl=1&service_mode=1&tkn=49029fecd405689687af84b77176e344c8259&u=max%40substrakt.com + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + Content-Type: + - application/x-www-form-urlencoded + response: + status: + code: 200 + message: OK + headers: + Date: + - Fri, 25 Nov 2016 19:43:52 GMT + Content-Type: + - application/json + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Set-Cookie: + - CF_UALE=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0 + - __cfduid=df4833e848f88cda9727d42073c63ca1c1480103031; expires=Sat, 25-Nov-17 + 19:43:51 GMT; path=/; domain=.cloudflare.com; HttpOnly + - vses2=t1r5g9a1hkah0h8qupskhiai15; path=/; domain=www.cloudflare.com; secure; + HttpOnly + Expires: + - Thu, 19 Nov 1981 08:52:00 GMT + Cache-Control: + - no-store, no-cache, must-revalidate, post-check=0, pre-check=0 + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + Content-Security-Policy: + - default-src 'self' https://*; script-src 'self' 'unsafe-inline' 'unsafe-eval' + https://* data:; img-src 'self' https://* data:; style-src 'self' 'unsafe-inline' + https://*; font-src 'self' https://* data:; frame-src https://*; connect-src + 'self' https://* wss://*.zopim.com data:; + X-Xss-Protection: + - 1; mode=block + Server: + - cloudflare-nginx + Cf-Ray: + - 3077978a4830350c-LHR + body: + encoding: ASCII-8BIT + string: '{"request":{"act":"rec_new"},"response":{"rec":{"obj":{"rec_id":"669364345","rec_hash":"e619789f14ceac02390543d9ab7b269a","zone_name":"substrakt.com","name":"_acme-challenge.www.substrakt.com","display_name":"_acme-challenge.www","type":"TXT","prio":null,"content":"u-ByBNjjCHeiSnMLtb5MIP9DMClhHQpoqaLyxpsifeI","display_content":"u-ByBNjjCHeiSnMLtb5MIP9DMClhHQpoqaLyxpsifeI","ttl":"1","ttl_ceil":86400,"ssl_id":"5084311","ssl_status":"V","ssl_expires_on":null,"auto_ttl":1,"service_mode":"0","props":{"proxiable":0,"cloud_on":0,"cf_open":1,"vanity_lock":0,"ssl":1,"expired_ssl":0,"expiring_ssl":0,"pending_ssl":0}}}},"result":"success","msg":null}' + http_version: + recorded_at: Fri, 25 Nov 2016 19:43:52 GMT +- request: + method: post + uri: https://www.cloudflare.com/api_json.html + body: + encoding: US-ASCII + string: a=rec_new&z=substrakt.com&type=TXT&name=_acme-challenge.substrakt.com&content=nqFjZVsylspPNT7TzFvoLvIf_yzkbVF9cXKvv-qpftU&ttl=1&service_mode=1&tkn=49029fecd405689687af84b77176e344c8259&u=max%40substrakt.com + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + Content-Type: + - application/x-www-form-urlencoded + response: + status: + code: 200 + message: OK + headers: + Date: + - Fri, 25 Nov 2016 19:43:52 GMT + Content-Type: + - application/json + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Set-Cookie: + - CF_UALE=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0 + - __cfduid=dfdeebab913a45a61209e50a2cc2b5c491480103032; expires=Sat, 25-Nov-17 + 19:43:52 GMT; path=/; domain=.cloudflare.com; HttpOnly + - vses2=b3a5vv58unqpbfm3cqvl2u1l41; path=/; domain=www.cloudflare.com; secure; + HttpOnly + Expires: + - Thu, 19 Nov 1981 08:52:00 GMT + Cache-Control: + - no-store, no-cache, must-revalidate, post-check=0, pre-check=0 + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + Content-Security-Policy: + - default-src 'self' https://*; script-src 'self' 'unsafe-inline' 'unsafe-eval' + https://* data:; img-src 'self' https://* data:; style-src 'self' 'unsafe-inline' + https://*; font-src 'self' https://* data:; frame-src https://*; connect-src + 'self' https://* wss://*.zopim.com data:; + X-Xss-Protection: + - 1; mode=block + Server: + - cloudflare-nginx + Cf-Ray: + - 3077978fcca206e8-LHR + body: + encoding: ASCII-8BIT + string: '{"request":{"act":"rec_new"},"response":{"rec":{"obj":{"rec_id":"669364348","rec_hash":"21acc6f2c111419a962b2669b98c4663","zone_name":"substrakt.com","name":"_acme-challenge.substrakt.com","display_name":"_acme-challenge","type":"TXT","prio":null,"content":"nqFjZVsylspPNT7TzFvoLvIf_yzkbVF9cXKvv-qpftU","display_content":"nqFjZVsylspPNT7TzFvoLvIf_yzkbVF9cXKvv-qpftU","ttl":"1","ttl_ceil":86400,"ssl_id":"5084311","ssl_status":"V","ssl_expires_on":null,"auto_ttl":1,"service_mode":"0","props":{"proxiable":0,"cloud_on":0,"cf_open":1,"vanity_lock":0,"ssl":1,"expired_ssl":0,"expiring_ssl":0,"pending_ssl":0}}}},"result":"success","msg":null}' + http_version: + recorded_at: Fri, 25 Nov 2016 19:43:52 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/challenge/9zcZviLntxFRNItDBZa8350l-Za7ezQaWkBKnrRSYEs/17255031 + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiSkFwOTdrRmdtNmpmeWdhdHNnVU1KWGxqVXUwcFRZWWVKS3NpOGM2NnFmWSIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ1NTRZdWE1WV91N3lXMlZHS0drQVpjRW8yWGx5Sk9YdGVyR3dac01zRU54aG5oUUFSR0l5cFdkZkd4N0pyWll1Zm80NTNuZWFJWk1LY19DSDY4bXpmQVRQM0hUV2tjNE9hQ0hPaFN2TVh5bEdaMWJKelpnV0I5VEFUc3JZNjYxd1g3eEhteVNOVDYtamdYel9XY3dQVDU1b1pDY2M5QUgtT0FyUzhEdUo4NU0wNFpwWDZUaHBoS2x1QlRncUlMYnhjNVJydndCcFRHemw1VU5mUmhzd0xKbEZiMmdvQ0dsUFVERUhjSy1GQ2xIRmVubkRnU0VlWDRLaHdYdXgzazBLb3FXemxibURwWjc0X0trMFMwWC1zdmVqTUphMFExaThnSWJxQmRhZFlvaHo0aDhJV05SbW9za1BHXzNTWGRuLWZKOE53eHZwbzhFS04yNjEzdGhQd1JvMnlSQkR5YU5TcFBMNXJ0RllhTXM0SkgtdlFDNTNIUXoyTVlOb200dU92TkVWUFV1dTVvQXRna2NrOVNGcXc3djBza1pLdTQtZUlSZEFFZTFaQW5LQXRXYlE3M2p1T3RzekIyeE1Oc0ZiaVE1a1lGZVB5bzV1WlJKSEtXLVJycVJySmpCTFg5RVJZWEktQUI0aFpDOExRajlDY0hjZDgtNEt0QkdnYlJLX3pKR2paSENYdk9qeXRxcU9UZEwwM1lFZEVKZXFsZDA0dDYyeDU4dl9fZUYyMldNeS1ETUxhaTAxRElVSkFaX2hFN3JwOU1WOVQxdDQ5WUNIVElTYlhhaWM2YTF3YjZicFNsbDRUVHJTbHFpa0ZsY0w0VEh2MjkzZmxzR0drRzZGYXNqTFpiZUczUjRYTTlMYl9Ha0RkTXZMcThzQ3BLQ3NWaFlNVEhXTzk3ayJ9fQ","payload":"eyJyZXNvdXJjZSI6ImNoYWxsZW5nZSIsInR5cGUiOiJkbnMtMDEiLCJrZXlBdXRob3JpemF0aW9uIjoiMGdPQVlMdU82dDI3QmhEdE45YnI1QmJfT2p3QllOc2g0WFdSaWh5Slc1Yy5CSGgycURuOEg4c0EyTUZnMUVxc0JIR3R0NnZZNzJJX3VkQTVJNlg3Yk93In0","signature":"E3K9RUArWnEWOl3LbSFgWhlU21Y--8FaGsTVAZ3aoMd8GTE1TQyawJHVupO2exRqRZOxLcM2J-UHsNFIFx4QSpy8cHBD9DGJjmp_UjNN77n59Zt-PvUa5nMBN-8JJyOH0UZYeag0eZRhhrlYENGTweTJH1HqlRRPFzANSfKjCAIsWydjMjD8VG_zRRWfv8Z5MEUUcQHmHIpejfKqIVuTBCmmRVlDbO5VWChCL7xJ3g0uIffgFFACIs_z0SxMPjQvahJ7m9BMNdY-UDLbBVfVJxomfiwpXCzxHMw9voCMiVb1mwG9p1woH6HrprANdO7D90g_fr3NvmY78rtQAMbNJM9gnFfN8JS3Ir81aF6c2CIcqAIDsFICpnvQq2ubnicyYyYcBYiIx_lP5EDnJG_PLSgGLoIEen1mf7T2hAK82qda9Dh-cE2miBAD7csBvAI3WjKl85c_2UaX9u7k97518RyHtvWt6YYuXtZN6tT919iEeV1bt6ODrekeldjbwY-hkeYp-eXBMDib9lRgNlvBuQn9Q-nQIAYS9XTAZ7KKya5sctcG91Bc4hzfwMELbkPxPcM6QdsLq74UC2B72P7maq3M3_v4kPrVLIrkbE05fAUSL5OhiMOUWByizqVnf4blqxJsFUqh_K6cAXOGHzEs2Aimts87xV9vcFG2vq7D7og"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 202 + message: Accepted + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '337' + Boulder-Request-Id: + - vQyS7Qh2mySxzOiAmsZ6zddUWvEr5aoL9q3agTZLZ1w + Boulder-Requester: + - '515230' + Link: + - ;rel="up" + Location: + - https://acme-staging.api.letsencrypt.org/acme/challenge/9zcZviLntxFRNItDBZa8350l-Za7ezQaWkBKnrRSYEs/17255031 + Replay-Nonce: + - OqhPKVOw7GQVb-hklD6ifrH7-ALwXq0hG3PEX4rJaKM + Expires: + - Fri, 25 Nov 2016 19:44:53 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Fri, 25 Nov 2016 19:44:53 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "type": "dns-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/9zcZviLntxFRNItDBZa8350l-Za7ezQaWkBKnrRSYEs/17255031", + "token": "0gOAYLuO6t27BhDtN9br5Bb_OjwBYNsh4XWRihyJW5c", + "keyAuthorization": "0gOAYLuO6t27BhDtN9br5Bb_OjwBYNsh4XWRihyJW5c.BHh2qDn8H8sA2MFg1EqsBHGtt6vY72I_udA5I6X7bOw" + } + http_version: + recorded_at: Fri, 25 Nov 2016 19:44:53 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/challenge/AUg9phkJKzkrHFEigYPzA8M3w9HSesInZU4eYXBxN4k/17255034 + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiT3FoUEtWT3c3R1FWYi1oa2xENmlmckg3LUFMd1hxMGhHM1BFWDRySmFLTSIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ1NTRZdWE1WV91N3lXMlZHS0drQVpjRW8yWGx5Sk9YdGVyR3dac01zRU54aG5oUUFSR0l5cFdkZkd4N0pyWll1Zm80NTNuZWFJWk1LY19DSDY4bXpmQVRQM0hUV2tjNE9hQ0hPaFN2TVh5bEdaMWJKelpnV0I5VEFUc3JZNjYxd1g3eEhteVNOVDYtamdYel9XY3dQVDU1b1pDY2M5QUgtT0FyUzhEdUo4NU0wNFpwWDZUaHBoS2x1QlRncUlMYnhjNVJydndCcFRHemw1VU5mUmhzd0xKbEZiMmdvQ0dsUFVERUhjSy1GQ2xIRmVubkRnU0VlWDRLaHdYdXgzazBLb3FXemxibURwWjc0X0trMFMwWC1zdmVqTUphMFExaThnSWJxQmRhZFlvaHo0aDhJV05SbW9za1BHXzNTWGRuLWZKOE53eHZwbzhFS04yNjEzdGhQd1JvMnlSQkR5YU5TcFBMNXJ0RllhTXM0SkgtdlFDNTNIUXoyTVlOb200dU92TkVWUFV1dTVvQXRna2NrOVNGcXc3djBza1pLdTQtZUlSZEFFZTFaQW5LQXRXYlE3M2p1T3RzekIyeE1Oc0ZiaVE1a1lGZVB5bzV1WlJKSEtXLVJycVJySmpCTFg5RVJZWEktQUI0aFpDOExRajlDY0hjZDgtNEt0QkdnYlJLX3pKR2paSENYdk9qeXRxcU9UZEwwM1lFZEVKZXFsZDA0dDYyeDU4dl9fZUYyMldNeS1ETUxhaTAxRElVSkFaX2hFN3JwOU1WOVQxdDQ5WUNIVElTYlhhaWM2YTF3YjZicFNsbDRUVHJTbHFpa0ZsY0w0VEh2MjkzZmxzR0drRzZGYXNqTFpiZUczUjRYTTlMYl9Ha0RkTXZMcThzQ3BLQ3NWaFlNVEhXTzk3ayJ9fQ","payload":"eyJyZXNvdXJjZSI6ImNoYWxsZW5nZSIsInR5cGUiOiJkbnMtMDEiLCJrZXlBdXRob3JpemF0aW9uIjoiaGtWdXRyQWFEd19ZWldsSDZSa3RuNHF2WnFQTnB6dzFYNkliUFctRk9zcy5CSGgycURuOEg4c0EyTUZnMUVxc0JIR3R0NnZZNzJJX3VkQTVJNlg3Yk93In0","signature":"nSSLTifvv3Jwtc_Unqk4fFmUznn4KKkkTLek80amdiVfWNEbDhZClNsEH2OB4xJ23m3uH3eHc2GfawKcAUvRet4CCq-k3JPNYOhDnEi2_gmfzd4vcXSMQ1cP54RSZgYwptvMmPxVJua5dg0yHFsciTBWrHsKTgfxsYL_i6ry2Ch-dXaF2sa63kkiRHGapV5PWgYiRNHVrcF1xWgs9zxZl76AWWRNRY5_YPP8b4XgrkgqEDcWIksdnHDKlTOvSTnkx7kCvpRMVFfF3_bIewNsa1Y1H0tLzYaXcdOUXyRycfp-JTJySfVb-Y7oF9iQ9Rcz5-ayNw5WOuay5TDJxGUQyEcJcuQA584iRJFA3DVwuwh7Z0a64VKbKb6Ywz67D8JWcUmWomHU8ah_CoVSjmFvxPrHkUCR_rUYy2Y4YWu0ItSCACr8bazh29IH8Rf7H_8fgjwl4s1k75cVrZKlFGGnq_3Yk7R4Fg0uvPLFe5wt41x-ApRAeGomyEP9_e17aOR87b1CQ5aaWkhR5419NYr46UgdGQJQn73wDNaUFi92mJh1wdFVPXftcXw3GctvuX22acjDoQQrAxnadEITc-WXW_We6H4FG9fE1Ok6oJ7-n0mLxruMgj-Xd63Xod9kbLxM0ZPWYOMmtTjPk18gKBw-DFxNTPngyLklk-8OJOp8fPE"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 202 + message: Accepted + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '337' + Boulder-Request-Id: + - "-WawGxKmafs_u3_vVGkVyfpuEGZfU0NbOKjyoQVZOiY" + Boulder-Requester: + - '515230' + Link: + - ;rel="up" + Location: + - https://acme-staging.api.letsencrypt.org/acme/challenge/AUg9phkJKzkrHFEigYPzA8M3w9HSesInZU4eYXBxN4k/17255034 + Replay-Nonce: + - TPtoS-qXabiURBVYI1LA4fo_kSk0XL9Ct8OGuc7WeiQ + Expires: + - Fri, 25 Nov 2016 19:44:53 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Fri, 25 Nov 2016 19:44:53 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "type": "dns-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/AUg9phkJKzkrHFEigYPzA8M3w9HSesInZU4eYXBxN4k/17255034", + "token": "hkVutrAaDw_YZWlH6Rktn4qvZqPNpzw1X6IbPW-FOss", + "keyAuthorization": "hkVutrAaDw_YZWlH6Rktn4qvZqPNpzw1X6IbPW-FOss.BHh2qDn8H8sA2MFg1EqsBHGtt6vY72I_udA5I6X7bOw" + } + http_version: + recorded_at: Fri, 25 Nov 2016 19:44:53 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/new-cert + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiVFB0b1MtcVhhYmlVUkJWWUkxTEE0Zm9fa1NrMFhMOUN0OE9HdWM3V2VpUSIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ1NTRZdWE1WV91N3lXMlZHS0drQVpjRW8yWGx5Sk9YdGVyR3dac01zRU54aG5oUUFSR0l5cFdkZkd4N0pyWll1Zm80NTNuZWFJWk1LY19DSDY4bXpmQVRQM0hUV2tjNE9hQ0hPaFN2TVh5bEdaMWJKelpnV0I5VEFUc3JZNjYxd1g3eEhteVNOVDYtamdYel9XY3dQVDU1b1pDY2M5QUgtT0FyUzhEdUo4NU0wNFpwWDZUaHBoS2x1QlRncUlMYnhjNVJydndCcFRHemw1VU5mUmhzd0xKbEZiMmdvQ0dsUFVERUhjSy1GQ2xIRmVubkRnU0VlWDRLaHdYdXgzazBLb3FXemxibURwWjc0X0trMFMwWC1zdmVqTUphMFExaThnSWJxQmRhZFlvaHo0aDhJV05SbW9za1BHXzNTWGRuLWZKOE53eHZwbzhFS04yNjEzdGhQd1JvMnlSQkR5YU5TcFBMNXJ0RllhTXM0SkgtdlFDNTNIUXoyTVlOb200dU92TkVWUFV1dTVvQXRna2NrOVNGcXc3djBza1pLdTQtZUlSZEFFZTFaQW5LQXRXYlE3M2p1T3RzekIyeE1Oc0ZiaVE1a1lGZVB5bzV1WlJKSEtXLVJycVJySmpCTFg5RVJZWEktQUI0aFpDOExRajlDY0hjZDgtNEt0QkdnYlJLX3pKR2paSENYdk9qeXRxcU9UZEwwM1lFZEVKZXFsZDA0dDYyeDU4dl9fZUYyMldNeS1ETUxhaTAxRElVSkFaX2hFN3JwOU1WOVQxdDQ5WUNIVElTYlhhaWM2YTF3YjZicFNsbDRUVHJTbHFpa0ZsY0w0VEh2MjkzZmxzR0drRzZGYXNqTFpiZUczUjRYTTlMYl9Ha0RkTXZMcThzQ3BLQ3NWaFlNVEhXTzk3ayJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1jZXJ0IiwiY3NyIjoiTUlJQ256Q0NBWWNDQVFJd0hERWFNQmdHQTFVRUF3d1JkM2QzTG5OMVluTjBjbUZyZEM1amIyMHdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEQ3JxVU8tTDB2UktVcGhETW9nNF8yMVhSVEowSURVN0JTMmZCcTN2a2llejlQOEd1R2JQMVVvOV9TMkU0ZU5LSXFIWWxVNmN3MWRiT3hvVHRYaWlfVTY4QVZZRmJoWnRwS0tiZU5BZkE0OUlyaV9HS2tkOFEwMHZlSl81enFsWnZqRkx2eHBkUmRQQldrVHR3MHpjU2dJWkQydW51RDNEdzVLcWY5RnpYVUE4X0o5N1FLUks5d1IyOV9YSy0wT1BlaWJabGUtSUdBa2xZam80UklMN1VueENEaGRYVWJ2YUI3U2lBeEF1aVdld0tQSkl3WHM0UW9LTnAwNU9kdFFIeV9wN0xWaDNsN01EcXhKY0d2cXdBbjE1WlhjWWc3aW5lTDJPVWdyMk1SVEpSbUdYeWhtdnVsR29aNE5VTy1nUlEtQ1FmOFhNeEJ0c0dWRlJEVkJmZzdBZ01CQUFHZ1BqQThCZ2txaGtpRzl3MEJDUTR4THpBdE1Dc0dBMVVkRVFRa01DS0NFWGQzZHk1emRXSnpkSEpoYTNRdVkyOXRnZzF6ZFdKemRISmhhM1F1WTI5dE1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQU9oNmdqNkV4UHJYdVhQcC1mc1BKTm5wVVdyeGVyTS1CR3FiVER2WGZtQThYRDVzZzZlcFNPZ1V2UzBoS0d6SU5TSGJuZC1laFY1cHVmZk53bHk3MHFyNU5fcUhsSjNaTHpXYTdvMVEtNmJ3YXFPaXBqV0tJREw1NEJWd053TUhjWGV2VDhrVWxnM1MyTmctSDFRVkgtdEk2M2RPdWpoNjFrRlhhZW9KUHFENDlJTDJnYTdNMzhZb2FwNmozc0VjN2JnMEhPQ0Vna0VFSloxOWdfRmpFSmdvdGRIVnBmT1NqRGkwNldKWjItbENaRjBRSDFSSjJWUzJ2c202dV9oNXRZNTNhbnVMczZjT09nVkNVQ2I4ZDZHbi11bExDY0NzXzAyS09vWm1mYUdmVmJnU01PVy1ZMkp5YUdyblp4NkIwSlRPcnlXNFlZem5KM3dtWXUzUEItIn0","signature":"uHvhuyJHZDmA5EMWL5pqYWH9ogXuQ6GRIiym5fw4OEe9GBlw9RQPIGFrg97kWhyK7mIFA4SHcC12nhZKZYDkDQx01iPABhLO7O08EpZ4e4ivU7JgwMKIO6sVc17iYKqutGXo6u3lYlbYuF3XT9wr-frpi0Kyny_iSmt9pFLTy6Ay0_wYDmzN_kw1fm-6c6mpbIY6KcKHHR2to-UsjFk6uUfr6wvgpaNOotgGGrySbnE8J4uDTb2ND3HYX29a9i2qCXS-ugnlZRISHab1EQaJmUKivA1leMeBFvUoZEFPoPl3GywOCexnBYQCrDRSdUSmbBNAmo1o2CEBXyWienNpYLyX7K4bDcr2p9e6OGUm3IgIoQtFoTkYqw5dWtlAFA7TuuJMY-LXBI3VAdKvg1ak3mOMtsTDRG0kcAsmpaP8zmBqJwZESk26ux-mpoxJ8reHoTwzPo93Cy8qc9PQwji1jmn9Zs3yxywIbjqrZNOGD-2gnVISQE9xWDtdyxF0peId9P7DG4Cx3ifTR7OIke9rEFHLdY-I_HLZfU8Kdn-okp5PYeMdi_TRQK2CTjaf2CkolkF-GaeZ47CFlinONfMfeX7lQfp6GYVvglvt4h94pMyjoG7S0lGuFt8uMAIBvF6Z8r1Sm7kl5phx85q7fNI358HuO2zoHO9dnc5fuG8WgXM"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 201 + message: Created + headers: + Server: + - nginx + Content-Type: + - application/pkix-cert + Content-Length: + - '1274' + Boulder-Request-Id: + - "-6NpeFKSPxiTJEwrd9s_hx6c1kNc_kWDt1pSR35C4JE" + Boulder-Requester: + - '515230' + Link: + - ;rel="up" + Location: + - https://acme-staging.api.letsencrypt.org/acme/cert/fa4b69c38073141a7eea9bb114c26150f7c0 + Replay-Nonce: + - qezAbnjgJKo0y3NAEfGg9F3K3AA8jYKI-yg4o50WuD8 + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Fri, 25 Nov 2016 19:44:54 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Fri, 25 Nov 2016 19:44:54 GMT + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: !binary |- + MIIE9jCCA96gAwIBAgITAPpLacOAcxQafuqbsRTCYVD3wDANBgkqhkiG9w0B + AQsFADAiMSAwHgYDVQQDDBdGYWtlIExFIEludGVybWVkaWF0ZSBYMTAeFw0x + NjExMjUxODQ1MDBaFw0xNzAyMjMxODQ1MDBaMBwxGjAYBgNVBAMTEXd3dy5z + dWJzdHJha3QuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA + wq6lDvi9L0SlKYQzKIOP9tV0UydCA1OwUtnwat75Ins/T/Brhmz9VKPf0thO + HjSiKh2JVOnMNXWzsaE7V4ov1OvAFWBW4WbaSim3jQHwOPSK4vxipHfENNL3 + if+c6pWb4xS78aXUXTwVpE7cNM3EoCGQ9rp7g9w8OSqn/Rc11APPyfe0CkSv + cEdvf1yvtDj3om2ZXviBgJJWI6OESC+1J8Qg4XV1G72ge0ogMQLolnsCjySM + F7OEKCjadOTnbUB8v6ey1Yd5ezA6sSXBr6sAJ9eWV3GIO4p3i9jlIK9jEUyU + Zhl8oZr7pRqGeDVDvoEUPgkH/FzMQbbBlRUQ1QX4OwIDAQABo4ICKTCCAiUw + DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD + AjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQRQZjLolDgUCryrpcZ8JVcFLEs + 3TAfBgNVHSMEGDAWgBTAzANGuVggzFxycPPhLssgpvVoOjB4BggrBgEFBQcB + AQRsMGowMwYIKwYBBQUHMAGGJ2h0dHA6Ly9vY3NwLnN0Zy1pbnQteDEubGV0 + c2VuY3J5cHQub3JnLzAzBggrBgEFBQcwAoYnaHR0cDovL2NlcnQuc3RnLWlu + dC14MS5sZXRzZW5jcnlwdC5vcmcvMCsGA1UdEQQkMCKCDXN1YnN0cmFrdC5j + b22CEXd3dy5zdWJzdHJha3QuY29tMIH+BgNVHSAEgfYwgfMwCAYGZ4EMAQIB + MIHmBgsrBgEEAYLfEwEBATCB1jAmBggrBgEFBQcCARYaaHR0cDovL2Nwcy5s + ZXRzZW5jcnlwdC5vcmcwgasGCCsGAQUFBwICMIGeDIGbVGhpcyBDZXJ0aWZp + Y2F0ZSBtYXkgb25seSBiZSByZWxpZWQgdXBvbiBieSBSZWx5aW5nIFBhcnRp + ZXMgYW5kIG9ubHkgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBDZXJ0aWZpY2F0 + ZSBQb2xpY3kgZm91bmQgYXQgaHR0cHM6Ly9sZXRzZW5jcnlwdC5vcmcvcmVw + b3NpdG9yeS8wDQYJKoZIhvcNAQELBQADggEBAE+r7xj9qkLUKSEvy8GCf4L3 + FvCaWWA+fEGUyqPy5ANHaKh5EUBDDZAfFaptSXas402bIKA+gIqx3Fq+rS87 + SuXwG/OB0BvXGvLe7nHAxpMNRtHx51zz2RSKmDpQGgDJ9z7iwEgoDsn0Fwmf + IR/HoTOIrQP4STC866/eXj8NrppHZf08/ZTegGYyXSwaW5w12uZRqQfpO3Kj + 2L9XjOPh7j3mxi5E1HrSj4ZemJnQh8pC+6jwT2qfoCjYhHkUaxPBlP2yiljH + IA0a1TgVIqGI9WeH8LZmC/GG5dpLG0htwL+mmIKth/x5YNU5jKJWZA6ESHv8 + 3e2A3d7wgI9d792ntD4= + http_version: + recorded_at: Fri, 25 Nov 2016 19:44:54 GMT +- request: + method: get + uri: https://acme-staging.api.letsencrypt.org/acme/issuer-cert + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoicWV6QWJuamdKS28weTNOQUVmR2c5RjNLM0FBOGpZS0kteWc0bzUwV3VEOCIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ1NTRZdWE1WV91N3lXMlZHS0drQVpjRW8yWGx5Sk9YdGVyR3dac01zRU54aG5oUUFSR0l5cFdkZkd4N0pyWll1Zm80NTNuZWFJWk1LY19DSDY4bXpmQVRQM0hUV2tjNE9hQ0hPaFN2TVh5bEdaMWJKelpnV0I5VEFUc3JZNjYxd1g3eEhteVNOVDYtamdYel9XY3dQVDU1b1pDY2M5QUgtT0FyUzhEdUo4NU0wNFpwWDZUaHBoS2x1QlRncUlMYnhjNVJydndCcFRHemw1VU5mUmhzd0xKbEZiMmdvQ0dsUFVERUhjSy1GQ2xIRmVubkRnU0VlWDRLaHdYdXgzazBLb3FXemxibURwWjc0X0trMFMwWC1zdmVqTUphMFExaThnSWJxQmRhZFlvaHo0aDhJV05SbW9za1BHXzNTWGRuLWZKOE53eHZwbzhFS04yNjEzdGhQd1JvMnlSQkR5YU5TcFBMNXJ0RllhTXM0SkgtdlFDNTNIUXoyTVlOb200dU92TkVWUFV1dTVvQXRna2NrOVNGcXc3djBza1pLdTQtZUlSZEFFZTFaQW5LQXRXYlE3M2p1T3RzekIyeE1Oc0ZiaVE1a1lGZVB5bzV1WlJKSEtXLVJycVJySmpCTFg5RVJZWEktQUI0aFpDOExRajlDY0hjZDgtNEt0QkdnYlJLX3pKR2paSENYdk9qeXRxcU9UZEwwM1lFZEVKZXFsZDA0dDYyeDU4dl9fZUYyMldNeS1ETUxhaTAxRElVSkFaX2hFN3JwOU1WOVQxdDQ5WUNIVElTYlhhaWM2YTF3YjZicFNsbDRUVHJTbHFpa0ZsY0w0VEh2MjkzZmxzR0drRzZGYXNqTFpiZUczUjRYTTlMYl9Ha0RkTXZMcThzQ3BLQ3NWaFlNVEhXTzk3ayJ9fQ","payload":"e30","signature":"XY5hoCrTZ7VjCjvEdGEJfSHV4UpV7_2HRe8TkDyDQqueFHBW3pLbwiGRRDn_f4d-eEvrIx0tMr_uw_xIwsxNbagMzt3UoeqJdLL5Uk0WB_sNSei4NEtIChAnHBaaKNdo-FCaq9Gl8EJVvKN4HK9NxzgXLL6W3fKVIj13NruepaEfC9PU_j1Pb4OKzPSPRTK5ajmFg2Sb6n3sRqhWwYGzTJm-v5nNEUAHt60RjfH0flVJQPWisSRfZger_-D04M0rIIo-mRXRYTsBPg0rSr4nBPwmHDz-3lVJbBXT0i_BEy9iFzMn_pKne1puAutga8SL14lEezbeqRMPiw1KuJWbWZMHxQXSDVKU0W9J-ZN-0FBazcUDnWUfWrc6Qyw_8M9oDSjzPixVh1RsqlsYIm63nQCnPXJzFMC0TKfa_8BJ2iSqSCn-sIMVSaQDZ1cyvQcND4dlJfW_hFhX_Z0hoeFf50jBuhocGrBuPMFf6oW3nDUmTzFCfq4dsUz9sB3Tv7ceDxlxvfUpf8hWe2nAMeN89VfX0BS6Li6aLJHRISO-suuATZruO2pqlkHhj4Dp8XHewrCGlrDcw16b2NVKOUdprSktS4NK-y5ngOxSd7jxzMKPQsCNGmxay-fu5ZVnwoMT5Qg8ztEMq7lrolv9cV4sNgQl-i6UJUqC9PsR56fsmm4"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Content-Type: + - application/pkix-cert + Content-Length: + - '1199' + Boulder-Request-Id: + - MBbOsY_5txwuejfS3DgRcC3eo0BHW0Oe_G7Y5L0URqQ + Replay-Nonce: + - S3E9q-m_Hv211tzT0exvzN3FmyYSFZ_C8TDe15fxmF8 + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Fri, 25 Nov 2016 19:44:54 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Fri, 25 Nov 2016 19:44:54 GMT + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: !binary |- + MIIEqzCCApOgAwIBAgIRAIvhKg5ZRO08VGQx8JdhT+UwDQYJKoZIhvcNAQEL + BQAwGjEYMBYGA1UEAwwPRmFrZSBMRSBSb290IFgxMB4XDTE2MDUyMzIyMDc1 + OVoXDTM2MDUyMzIyMDc1OVowIjEgMB4GA1UEAwwXRmFrZSBMRSBJbnRlcm1l + ZGlhdGUgWDEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDtWKyS + Dn7rWZc5ggjz3ZB08jO4xti3uzINfD5sQ7Lj7hzetUT+wQob+iXSZkhnvx+I + vdbXF5/yt8aWPpUKnPymoLxsYiI5gQBLxNDzIec0OIaflWqAr29m7J8+NNtA + pEN8nZFnf3bhehZW7AxmS1m0ZnSsdHw0Fw+bgixPg2MQ9k9oefFeqa+7Kqdl + z5bbrUYV2volxhDFtnI4Mh8BiWCNxDH1Hizq+GKCcHsinDZWurCqder/afJB + nQs+SBSL6MVApHt+d35zjBD92fO2Je56dhMfzCgOKXeJ340WhW3TjD1zqLZX + eaCyUNRnfOmWZV8nEhtHOFbUCU7r/KkjMZO9AgMBAAGjgeMwgeAwDgYDVR0P + AQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMDMA0a5 + WCDMXHJw8+EuyyCm9Wg6MHoGCCsGAQUFBwEBBG4wbDA0BggrBgEFBQcwAYYo + aHR0cDovL29jc3Auc3RnLXJvb3QteDEubGV0c2VuY3J5cHQub3JnLzA0Bggr + BgEFBQcwAoYoaHR0cDovL2NlcnQuc3RnLXJvb3QteDEubGV0c2VuY3J5cHQu + b3JnLzAfBgNVHSMEGDAWgBTBJnSkikSg5vogKNhcI5pFiBh54DANBgkqhkiG + 9w0BAQsFAAOCAgEABYSu4Il+fI0MYU42OTmEj+1HqQ5DvyAeyCA6sGuZdwjF + UGeVOv3NnLyfofuUOjEbY5irFCDtnv+0ckukUZN9lz4Q2YjWGUpW4TTu3ieT + saC9AFvCSgNHJyWSVtWvB5XDxsqawl1KzHzzwr132bF2rtGtazSqVqK9E07s + GHMCf+zpDQVDVVGtqZPHwX3KqUtefE621b8RI6VCl4oD30Olf8pjuzG4JKBF + RFclzLRjo/h7IkkfjZ8wDa7faOjVXx6n+eUQ29cIMCzr8/rNWHS9pYGGQKJi + Y2xmVC9h12H99XyfzWE9vb5zKP3MVG6neX1hSdo7PEAb9fqRhHkqVsqUvJlI + RmvXvVKTwNCP3eCjRCCIPTAvjV+4ni786iXwwFYNz8l3PmPLCyQXWGohnJ8i + Bm+5nk7O2ynaPVW0U2W+pt2wSVuvdDM5zGv2f9ltNWUiYZHJ1mmO97jSY/6Y + fdOUH66iRtQtDkHBRdkNBsMbD+Em2TgBldtHNSJBfB3pm9FblgOcJ0FSWcUD + WJ7vO0+NTXlgrRofRT6pVywzxVo6dND0WzYlTWeUVsO40xJqhgUQRER9YLOL + xJ0O6C8i0xFxAMKOtSdodMB3RIwt7RFQ0uytn5Z5MqkYhlMI3J1tPRTp1nEt + 9fyGspBOO05gi148Qasp+3N+svqKomoQglNoAxU= + http_version: + recorded_at: Fri, 25 Nov 2016 19:44:54 GMT +- request: + method: patch + uri: https://api.heroku.com/apps/ssl-test-maxwoolf/features/http-sni + body: + encoding: UTF-8 + string: '{"enabled":true}' + headers: + Accept: + - application/vnd.heroku+json; version=3.sni_ssl_cert + Authorization: + - Bearer 67705361-152c-4761-96aa-ec904d6cd071 + Content-Type: + - application/json + response: + status: + code: 404 + message: Not Found + headers: + Cache-Control: + - private, no-cache + Content-Type: + - application/json + Date: + - Fri, 25 Nov 2016 19:44:55 GMT + Ratelimit-Multiplier: + - '1' + Ratelimit-Remaining: + - '4491' + Request-Id: + - 49a27510-71fe-45f9-4a52-0840a0a057c3,36dde210-58e4-c835-e65e-79cd4ae9192c + Vary: + - Accept-Encoding + Via: + - 1.1 spaces-router (+291255b) + X-Content-Type-Options: + - nosniff + X-Runtime: + - '0.080851622' + Content-Length: + - '79' + Connection: + - keep-alive + body: + encoding: UTF-8 + string: '{"resource":"feature","id":"not_found","message":"Couldn''t find that + feature."}' + http_version: + recorded_at: Fri, 25 Nov 2016 19:44:55 GMT +- request: + method: post + uri: https://api.heroku.com/apps/ssl-test-maxwoolf/sni-endpoints + body: + encoding: UTF-8 + string: '{"certificate_chain":"-----BEGIN CERTIFICATE-----\nMIIE9jCCA96gAwIBAgITAPpLacOAcxQafuqbsRTCYVD3wDANBgkqhkiG9w0BAQsF\nADAiMSAwHgYDVQQDDBdGYWtlIExFIEludGVybWVkaWF0ZSBYMTAeFw0xNjExMjUx\nODQ1MDBaFw0xNzAyMjMxODQ1MDBaMBwxGjAYBgNVBAMTEXd3dy5zdWJzdHJha3Qu\nY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwq6lDvi9L0SlKYQz\nKIOP9tV0UydCA1OwUtnwat75Ins/T/Brhmz9VKPf0thOHjSiKh2JVOnMNXWzsaE7\nV4ov1OvAFWBW4WbaSim3jQHwOPSK4vxipHfENNL3if+c6pWb4xS78aXUXTwVpE7c\nNM3EoCGQ9rp7g9w8OSqn/Rc11APPyfe0CkSvcEdvf1yvtDj3om2ZXviBgJJWI6OE\nSC+1J8Qg4XV1G72ge0ogMQLolnsCjySMF7OEKCjadOTnbUB8v6ey1Yd5ezA6sSXB\nr6sAJ9eWV3GIO4p3i9jlIK9jEUyUZhl8oZr7pRqGeDVDvoEUPgkH/FzMQbbBlRUQ\n1QX4OwIDAQABo4ICKTCCAiUwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsG\nAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQRQZjLolDg\nUCryrpcZ8JVcFLEs3TAfBgNVHSMEGDAWgBTAzANGuVggzFxycPPhLssgpvVoOjB4\nBggrBgEFBQcBAQRsMGowMwYIKwYBBQUHMAGGJ2h0dHA6Ly9vY3NwLnN0Zy1pbnQt\neDEubGV0c2VuY3J5cHQub3JnLzAzBggrBgEFBQcwAoYnaHR0cDovL2NlcnQuc3Rn\nLWludC14MS5sZXRzZW5jcnlwdC5vcmcvMCsGA1UdEQQkMCKCDXN1YnN0cmFrdC5j\nb22CEXd3dy5zdWJzdHJha3QuY29tMIH+BgNVHSAEgfYwgfMwCAYGZ4EMAQIBMIHm\nBgsrBgEEAYLfEwEBATCB1jAmBggrBgEFBQcCARYaaHR0cDovL2Nwcy5sZXRzZW5j\ncnlwdC5vcmcwgasGCCsGAQUFBwICMIGeDIGbVGhpcyBDZXJ0aWZpY2F0ZSBtYXkg\nb25seSBiZSByZWxpZWQgdXBvbiBieSBSZWx5aW5nIFBhcnRpZXMgYW5kIG9ubHkg\naW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBDZXJ0aWZpY2F0ZSBQb2xpY3kgZm91bmQg\nYXQgaHR0cHM6Ly9sZXRzZW5jcnlwdC5vcmcvcmVwb3NpdG9yeS8wDQYJKoZIhvcN\nAQELBQADggEBAE+r7xj9qkLUKSEvy8GCf4L3FvCaWWA+fEGUyqPy5ANHaKh5EUBD\nDZAfFaptSXas402bIKA+gIqx3Fq+rS87SuXwG/OB0BvXGvLe7nHAxpMNRtHx51zz\n2RSKmDpQGgDJ9z7iwEgoDsn0FwmfIR/HoTOIrQP4STC866/eXj8NrppHZf08/ZTe\ngGYyXSwaW5w12uZRqQfpO3Kj2L9XjOPh7j3mxi5E1HrSj4ZemJnQh8pC+6jwT2qf\noCjYhHkUaxPBlP2yiljHIA0a1TgVIqGI9WeH8LZmC/GG5dpLG0htwL+mmIKth/x5\nYNU5jKJWZA6ESHv83e2A3d7wgI9d792ntD4=\n-----END + CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIEqzCCApOgAwIBAgIRAIvhKg5ZRO08VGQx8JdhT+UwDQYJKoZIhvcNAQELBQAw\nGjEYMBYGA1UEAwwPRmFrZSBMRSBSb290IFgxMB4XDTE2MDUyMzIyMDc1OVoXDTM2\nMDUyMzIyMDc1OVowIjEgMB4GA1UEAwwXRmFrZSBMRSBJbnRlcm1lZGlhdGUgWDEw\nggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDtWKySDn7rWZc5ggjz3ZB0\n8jO4xti3uzINfD5sQ7Lj7hzetUT+wQob+iXSZkhnvx+IvdbXF5/yt8aWPpUKnPym\noLxsYiI5gQBLxNDzIec0OIaflWqAr29m7J8+NNtApEN8nZFnf3bhehZW7AxmS1m0\nZnSsdHw0Fw+bgixPg2MQ9k9oefFeqa+7Kqdlz5bbrUYV2volxhDFtnI4Mh8BiWCN\nxDH1Hizq+GKCcHsinDZWurCqder/afJBnQs+SBSL6MVApHt+d35zjBD92fO2Je56\ndhMfzCgOKXeJ340WhW3TjD1zqLZXeaCyUNRnfOmWZV8nEhtHOFbUCU7r/KkjMZO9\nAgMBAAGjgeMwgeAwDgYDVR0PAQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAw\nHQYDVR0OBBYEFMDMA0a5WCDMXHJw8+EuyyCm9Wg6MHoGCCsGAQUFBwEBBG4wbDA0\nBggrBgEFBQcwAYYoaHR0cDovL29jc3Auc3RnLXJvb3QteDEubGV0c2VuY3J5cHQu\nb3JnLzA0BggrBgEFBQcwAoYoaHR0cDovL2NlcnQuc3RnLXJvb3QteDEubGV0c2Vu\nY3J5cHQub3JnLzAfBgNVHSMEGDAWgBTBJnSkikSg5vogKNhcI5pFiBh54DANBgkq\nhkiG9w0BAQsFAAOCAgEABYSu4Il+fI0MYU42OTmEj+1HqQ5DvyAeyCA6sGuZdwjF\nUGeVOv3NnLyfofuUOjEbY5irFCDtnv+0ckukUZN9lz4Q2YjWGUpW4TTu3ieTsaC9\nAFvCSgNHJyWSVtWvB5XDxsqawl1KzHzzwr132bF2rtGtazSqVqK9E07sGHMCf+zp\nDQVDVVGtqZPHwX3KqUtefE621b8RI6VCl4oD30Olf8pjuzG4JKBFRFclzLRjo/h7\nIkkfjZ8wDa7faOjVXx6n+eUQ29cIMCzr8/rNWHS9pYGGQKJiY2xmVC9h12H99Xyf\nzWE9vb5zKP3MVG6neX1hSdo7PEAb9fqRhHkqVsqUvJlIRmvXvVKTwNCP3eCjRCCI\nPTAvjV+4ni786iXwwFYNz8l3PmPLCyQXWGohnJ8iBm+5nk7O2ynaPVW0U2W+pt2w\nSVuvdDM5zGv2f9ltNWUiYZHJ1mmO97jSY/6YfdOUH66iRtQtDkHBRdkNBsMbD+Em\n2TgBldtHNSJBfB3pm9FblgOcJ0FSWcUDWJ7vO0+NTXlgrRofRT6pVywzxVo6dND0\nWzYlTWeUVsO40xJqhgUQRER9YLOLxJ0O6C8i0xFxAMKOtSdodMB3RIwt7RFQ0uyt\nn5Z5MqkYhlMI3J1tPRTp1nEt9fyGspBOO05gi148Qasp+3N+svqKomoQglNoAxU=\n-----END + CERTIFICATE-----\n","private_key":"-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAwq6lDvi9L0SlKYQzKIOP9tV0UydCA1OwUtnwat75Ins/T/Br\nhmz9VKPf0thOHjSiKh2JVOnMNXWzsaE7V4ov1OvAFWBW4WbaSim3jQHwOPSK4vxi\npHfENNL3if+c6pWb4xS78aXUXTwVpE7cNM3EoCGQ9rp7g9w8OSqn/Rc11APPyfe0\nCkSvcEdvf1yvtDj3om2ZXviBgJJWI6OESC+1J8Qg4XV1G72ge0ogMQLolnsCjySM\nF7OEKCjadOTnbUB8v6ey1Yd5ezA6sSXBr6sAJ9eWV3GIO4p3i9jlIK9jEUyUZhl8\noZr7pRqGeDVDvoEUPgkH/FzMQbbBlRUQ1QX4OwIDAQABAoIBAHqj1D0TOvJ89uKp\nciTShC2FmCsN7wrzfH8k5cwdPKqZI3AzTzk2jXv1Y/mJ4+QpWgLX6nyAb/E5fYKn\nxB9IYQtrm+ybbP+/cEIJ96QvlWn7u0Z0oZtkC0kPoXrgeLRanQI3PJJk2dwGDsgc\nGaJ2AaiynIShQ0/0vEdy9LJ+HZ250gLgK4yjcV0WR+Ilvjs1EHK8i6NtTpGiGruF\nwv7N9yIfehBiQtZ9v7DT/gq21TVmW6qCc7+EJTxDtCXxcg8CsOLt7aoyGs61rjwo\n6+a8HursDNeO53yDAAFwZwKFBSZwfvcdy+KxVfp+5TsehZZkcmyP04pl+u92auRV\nt8V81EECgYEA+SqbtaO2GJeV3nFIjzqT6zVF9HStRncsVHLn50cGluKT7TqySOAT\n8QG59TbhCrTx7ST5Eu9nM0ia8q9jW/vYw+U2do9GmQ3OIl8rbKZMjy/vrPA2yzZM\nBz5h4YE9F6KxR+gXtIaGSI0kIXHw3HeAQoU02+BS6kecQHZLnMW/EtsCgYEAyAWB\nBbTS0qTIYSnfd6JIbekPLGvkEvrcD7TcCk8HztTOswEZjgPW8BCkMoAetG1dvvBv\nW6d6J1zRKbHD5KtvDVRCF+GUJBdv5GIhRdcvimQyZa6dV9uqHlmg2rd2Q+UuNjpA\nluyZKcDOCQqvBypeIUc3WOWBa278hXTGnNwSviECgYA3UWRcgUouT4kwZ4oqcmDg\nuWUcjsLhgBfRb+lYiYZG/WrGIl/umgETYsS8UkDINb/4XFsH/yq0UgxEkPfINjO7\n2imrTMfptwzqyKJFbu5UY9ocVQB1QUrD2O+2NxEvLCmbw0VwCOXLObqpyjglWkqZ\neiVwI2+FH/zqutiyp5xyPQKBgQCPB+CLRBK9rjfbwyWZVuKUNeQzz7L4H4rdcGco\nt/rNXD+yoUa01uoMINpJgnRycQJoV2ZKFCi1nRm0xvldu3ld/rKEgTp91ISeu80v\nNAE65QtkysiY2ut7aHwt6qMXSfsRq/Yj9mxP/x9WN92RMiq9gT+CwhsZx/OrOyYL\nZRPCAQKBgCCH3zbeTAU6iif+OEb5SpsSunMeoiBagFWyEsGsNBNViUQMtt5dQiRy\noAGxBOZOCOVgiCaLKAzTSxSnqZksPKm3qhwa23lIb5TZdfUhKCZE/QrTtsiiV6/B\ngjuQfeabmKl22MZUnYYCprdJNs+mHj72UIcoftuVhK11d9iy3Wsj\n-----END + RSA PRIVATE KEY-----\n"}' + headers: + Accept: + - application/vnd.heroku+json; version=3.sni_ssl_cert + Authorization: + - Bearer 67705361-152c-4761-96aa-ec904d6cd071 + Content-Type: + - application/json + response: + status: + code: 202 + message: Accepted + headers: + Cache-Control: + - private, no-cache + Content-Type: + - application/json + Date: + - Fri, 25 Nov 2016 19:44:56 GMT + Oauth-Scope: + - global + Oauth-Scope-Accepted: + - global write write-protected + Ratelimit-Multiplier: + - '1' + Ratelimit-Remaining: + - '4490' + Request-Id: + - 99fa5d8a-ec09-44e8-7703-53ff71c4e5e3,7476eb24-ac18-5871-40f0-7c9a2f2c4b3b + Vary: + - Accept-Encoding + Via: + - 1.1 spaces-router (+291255b) + X-Content-Type-Options: + - nosniff + X-Runtime: + - '0.549942558' + Transfer-Encoding: + - chunked + Connection: + - keep-alive + body: + encoding: UTF-8 + string: '{"app":{"id":"81bc00a1-056a-4987-9a61-77a07b3b36ec","name":"ssl-test-maxwoolf"},"certificate_chain":"-----BEGIN + CERTIFICATE-----\nMIIE9jCCA96gAwIBAgITAPpLacOAcxQafuqbsRTCYVD3wDANBgkqhkiG9w0BAQsF\nADAiMSAwHgYDVQQDDBdGYWtlIExFIEludGVybWVkaWF0ZSBYMTAeFw0xNjExMjUx\nODQ1MDBaFw0xNzAyMjMxODQ1MDBaMBwxGjAYBgNVBAMTEXd3dy5zdWJzdHJha3Qu\nY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwq6lDvi9L0SlKYQz\nKIOP9tV0UydCA1OwUtnwat75Ins/T/Brhmz9VKPf0thOHjSiKh2JVOnMNXWzsaE7\nV4ov1OvAFWBW4WbaSim3jQHwOPSK4vxipHfENNL3if+c6pWb4xS78aXUXTwVpE7c\nNM3EoCGQ9rp7g9w8OSqn/Rc11APPyfe0CkSvcEdvf1yvtDj3om2ZXviBgJJWI6OE\nSC+1J8Qg4XV1G72ge0ogMQLolnsCjySMF7OEKCjadOTnbUB8v6ey1Yd5ezA6sSXB\nr6sAJ9eWV3GIO4p3i9jlIK9jEUyUZhl8oZr7pRqGeDVDvoEUPgkH/FzMQbbBlRUQ\n1QX4OwIDAQABo4ICKTCCAiUwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsG\nAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQRQZjLolDg\nUCryrpcZ8JVcFLEs3TAfBgNVHSMEGDAWgBTAzANGuVggzFxycPPhLssgpvVoOjB4\nBggrBgEFBQcBAQRsMGowMwYIKwYBBQUHMAGGJ2h0dHA6Ly9vY3NwLnN0Zy1pbnQt\neDEubGV0c2VuY3J5cHQub3JnLzAzBggrBgEFBQcwAoYnaHR0cDovL2NlcnQuc3Rn\nLWludC14MS5sZXRzZW5jcnlwdC5vcmcvMCsGA1UdEQQkMCKCDXN1YnN0cmFrdC5j\nb22CEXd3dy5zdWJzdHJha3QuY29tMIH+BgNVHSAEgfYwgfMwCAYGZ4EMAQIBMIHm\nBgsrBgEEAYLfEwEBATCB1jAmBggrBgEFBQcCARYaaHR0cDovL2Nwcy5sZXRzZW5j\ncnlwdC5vcmcwgasGCCsGAQUFBwICMIGeDIGbVGhpcyBDZXJ0aWZpY2F0ZSBtYXkg\nb25seSBiZSByZWxpZWQgdXBvbiBieSBSZWx5aW5nIFBhcnRpZXMgYW5kIG9ubHkg\naW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBDZXJ0aWZpY2F0ZSBQb2xpY3kgZm91bmQg\nYXQgaHR0cHM6Ly9sZXRzZW5jcnlwdC5vcmcvcmVwb3NpdG9yeS8wDQYJKoZIhvcN\nAQELBQADggEBAE+r7xj9qkLUKSEvy8GCf4L3FvCaWWA+fEGUyqPy5ANHaKh5EUBD\nDZAfFaptSXas402bIKA+gIqx3Fq+rS87SuXwG/OB0BvXGvLe7nHAxpMNRtHx51zz\n2RSKmDpQGgDJ9z7iwEgoDsn0FwmfIR/HoTOIrQP4STC866/eXj8NrppHZf08/ZTe\ngGYyXSwaW5w12uZRqQfpO3Kj2L9XjOPh7j3mxi5E1HrSj4ZemJnQh8pC+6jwT2qf\noCjYhHkUaxPBlP2yiljHIA0a1TgVIqGI9WeH8LZmC/GG5dpLG0htwL+mmIKth/x5\nYNU5jKJWZA6ESHv83e2A3d7wgI9d792ntD4=\n-----END + CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIEqzCCApOgAwIBAgIRAIvhKg5ZRO08VGQx8JdhT+UwDQYJKoZIhvcNAQELBQAw\nGjEYMBYGA1UEAwwPRmFrZSBMRSBSb290IFgxMB4XDTE2MDUyMzIyMDc1OVoXDTM2\nMDUyMzIyMDc1OVowIjEgMB4GA1UEAwwXRmFrZSBMRSBJbnRlcm1lZGlhdGUgWDEw\nggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDtWKySDn7rWZc5ggjz3ZB0\n8jO4xti3uzINfD5sQ7Lj7hzetUT+wQob+iXSZkhnvx+IvdbXF5/yt8aWPpUKnPym\noLxsYiI5gQBLxNDzIec0OIaflWqAr29m7J8+NNtApEN8nZFnf3bhehZW7AxmS1m0\nZnSsdHw0Fw+bgixPg2MQ9k9oefFeqa+7Kqdlz5bbrUYV2volxhDFtnI4Mh8BiWCN\nxDH1Hizq+GKCcHsinDZWurCqder/afJBnQs+SBSL6MVApHt+d35zjBD92fO2Je56\ndhMfzCgOKXeJ340WhW3TjD1zqLZXeaCyUNRnfOmWZV8nEhtHOFbUCU7r/KkjMZO9\nAgMBAAGjgeMwgeAwDgYDVR0PAQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAw\nHQYDVR0OBBYEFMDMA0a5WCDMXHJw8+EuyyCm9Wg6MHoGCCsGAQUFBwEBBG4wbDA0\nBggrBgEFBQcwAYYoaHR0cDovL29jc3Auc3RnLXJvb3QteDEubGV0c2VuY3J5cHQu\nb3JnLzA0BggrBgEFBQcwAoYoaHR0cDovL2NlcnQuc3RnLXJvb3QteDEubGV0c2Vu\nY3J5cHQub3JnLzAfBgNVHSMEGDAWgBTBJnSkikSg5vogKNhcI5pFiBh54DANBgkq\nhkiG9w0BAQsFAAOCAgEABYSu4Il+fI0MYU42OTmEj+1HqQ5DvyAeyCA6sGuZdwjF\nUGeVOv3NnLyfofuUOjEbY5irFCDtnv+0ckukUZN9lz4Q2YjWGUpW4TTu3ieTsaC9\nAFvCSgNHJyWSVtWvB5XDxsqawl1KzHzzwr132bF2rtGtazSqVqK9E07sGHMCf+zp\nDQVDVVGtqZPHwX3KqUtefE621b8RI6VCl4oD30Olf8pjuzG4JKBFRFclzLRjo/h7\nIkkfjZ8wDa7faOjVXx6n+eUQ29cIMCzr8/rNWHS9pYGGQKJiY2xmVC9h12H99Xyf\nzWE9vb5zKP3MVG6neX1hSdo7PEAb9fqRhHkqVsqUvJlIRmvXvVKTwNCP3eCjRCCI\nPTAvjV+4ni786iXwwFYNz8l3PmPLCyQXWGohnJ8iBm+5nk7O2ynaPVW0U2W+pt2w\nSVuvdDM5zGv2f9ltNWUiYZHJ1mmO97jSY/6YfdOUH66iRtQtDkHBRdkNBsMbD+Em\n2TgBldtHNSJBfB3pm9FblgOcJ0FSWcUDWJ7vO0+NTXlgrRofRT6pVywzxVo6dND0\nWzYlTWeUVsO40xJqhgUQRER9YLOLxJ0O6C8i0xFxAMKOtSdodMB3RIwt7RFQ0uyt\nn5Z5MqkYhlMI3J1tPRTp1nEt9fyGspBOO05gi148Qasp+3N+svqKomoQglNoAxU=\n-----END + CERTIFICATE-----\n","cname":null,"created_at":"2016-11-25T19:44:56Z","id":"b8043b0a-ae99-4998-befd-2cf7b4ecb362","name":"velociraptor-64516","updated_at":"2016-11-25T19:44:56Z","warnings":{"ssl_cert":["provides + no domain(s) that are configured for this Heroku app"]},"ssl_cert":{"ca_signed?":false,"cert_domains":["www.substrakt.com","substrakt.com"],"expires_at":"2017-02-23T18:45:00Z","issuer":"/CN=Fake + LE Intermediate X1","self_signed?":false,"starts_at":"2016-11-25T18:45:00Z","subject":"/CN=www.substrakt.com","id":"5f4de200-2f59-4359-a009-2b9ef09d8a9e"}}' + http_version: + recorded_at: Fri, 25 Nov 2016 19:44:56 GMT +recorded_with: VCR 3.0.3 diff --git a/test/fixtures/vcr_cassettes/new-cert-provisioner-heroku.yml b/test/fixtures/vcr_cassettes/new-cert-provisioner-heroku.yml new file mode 100644 index 0000000..1513727 --- /dev/null +++ b/test/fixtures/vcr_cassettes/new-cert-provisioner-heroku.yml @@ -0,0 +1,907 @@ +--- +http_interactions: +- request: + method: head + uri: https://acme-staging.api.letsencrypt.org/acme/new-reg + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept: + - "*/*" + response: + status: + code: 405 + message: Method Not Allowed + headers: + Server: + - nginx + Content-Type: + - application/problem+json + Content-Length: + - '91' + Allow: + - POST + Boulder-Request-Id: + - ckXPPtLtoRIdqMIyof2FcDj5mMY4oPp3N61wR6pCXbM + Replay-Nonce: + - zGW2hQ3xVmiyz70kbF7fq6LlYoV1ulwYbZMIQvx9HfA + Expires: + - Fri, 25 Nov 2016 19:30:36 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Fri, 25 Nov 2016 19:30:36 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: '' + http_version: + recorded_at: Fri, 25 Nov 2016 19:30:36 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/new-reg + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiekdXMmhRM3hWbWl5ejcwa2JGN2ZxNkxsWW9WMXVsd1liWk1JUXZ4OUhmQSIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ5bWpzRS0xdGNkVEdjaUEtT2lrcFlRbk8wMkpaNEt3ZlB3NFVkQUxIOFB2dThDZ05TQTJMeDM1NF9ibFUyQUlWbk0taGlWTjQzcHlac0w0NWFibmJJTXRvR0c2dHBHaU9hRGZ2V0J1V2dndTlaeXFCeUgydXVIWXRIR3QyakdTNEhyMi1pVjdva216amc2VEJQT2F5cG15ZmE1UExMbGFtai00Njl4QkZQdlpiUXZGMGQ4RXJOQUh2MmNtbFUwY2xBUmNIeHBQdUFyZzJ3eTMtb3ZKYjdRRWNxN29LZDgxTXZmNFVnVnVkbVN2djNvOERPZDQ4ajRDM056MHk2NzR3MmpCbDFMdThLM2tpVTdmamE1M3VURkZGeDk3aWFyODczXzc0VFB1clZOeXJSQVR0eUNjV1ZQWVZ2ZE5YTVN4OUNGUHRWSDZJbGZib1duckVzTUoxYXFmX04xWHZuaEl4WjRMZERTTzBmZ2FSTW5rU09tRFluUWFZbldOTmRKd2xvLXg3TXM2a3J5SE9yNmVNa0xrWU1pU0EwTWFPd21yOGN6ejk2VWxNX01Tdzc4SE5vbzRhRkw2SFQtMVVDWVZKYWpXUnhHUE9CV3dIeExocnVwMjE0UmlzOGxJSENXSEczQzRmWFIyMFhGRWdrajZPTTVwei1sempPcGZvbk1BTU9IUnc1M3RHSklodlFISHhyUC1QREZZc01RWTlxWVdncjRybEJQRUVyN2t3UkVjRTlDYS1kLUhwNjhkX0tnRUhrUjAwS2dPOWYweER3VkZhcHhxaGNtTGF3alRPUVdFdkRJbC13Wm9QM2tFVFlNeTA5bm5YN1dieDZOcVBPbzh3RTVnU1NKWlNtSC1nS0F5YVBYN0hMNmhTN203d0w1ZFQ4Z0doZ3Z6ZmlZVSJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1yZWciLCJjb250YWN0IjpbIm1haWx0bzptYXhAc3Vic3RyYWt0LmNvbSJdfQ","signature":"oaSlihny0rkfyxYtkiPdsgxxicGJoT2HhlsnXVUNfLAvQg7hXTBdPxwHbkkvOdWL3E0kJNQSa82tH8g3tNFMVql47W0U6fK4DePriL7_y11OgAzPGzZ7C-0_hXbcwYFoAwwKbBonqacPUa0XAf3uLHGL6DwMcuhKAtFzIHxA0Y7Ga1nYGLf43_E076LhLNlD0zDTFKXnmNbnHqmTjVrSmbWqc0OmDPJCwVoN8kzTcsfLo-HsA6IWIZ3q-eMfHp7WtnVcqvgT8YTn3egPP6J-Ho-syxW9u3UDxsUok9N9w1ERidUe3I_X-i1nY9RIyZypbhwM7s0q6Y6NqOXa5LN5QZo5zAoUApKyffu_DDFmD6gErAiEsL0qccNROtdRHWqs1GcO7VZ6fijmeTQu4yiyHtxnHpXjWhVyJp9wFovMA9sHDMbvD8uhVkS4f3N8nXsw3zzTPtbLaqtimLMCLAazh0hHiRyG779g043uNQoM9XjWoEYZG3lhVhd12etbyQljWiHBIB1vDreDo7rLjMKpA1zAX0YvKi4tUi4Mbpvc-S1X14WgY48bv57basest9nN4Jjx8mTziQD0VCnv2RjFkwPOK6GhO58dV1h93BgENKxSeUie5IaqRZsLhyhGbv0hsZLe9Y-1OMJjdR-P6ZJ4M80PNkMHgWwhdYdiSgNdcbY"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 201 + message: Created + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '912' + Boulder-Request-Id: + - MZ1eRoHC20AWq4SSpfIPXFgwMW7I3dYdDmd4L9HApcU + Boulder-Requester: + - '515213' + Link: + - ;rel="next" + - ;rel="terms-of-service" + Location: + - https://acme-staging.api.letsencrypt.org/acme/reg/515213 + Replay-Nonce: + - CC10TqddTMiBhYDvMY9kRV5BdVaRZZwPYSC8tJC_Ph8 + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Fri, 25 Nov 2016 19:30:37 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Fri, 25 Nov 2016 19:30:37 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "id": 515213, + "key": { + "kty": "RSA", + "n": "ymjsE-1tcdTGciA-OikpYQnO02JZ4KwfPw4UdALH8Pvu8CgNSA2Lx354_blU2AIVnM-hiVN43pyZsL45abnbIMtoGG6tpGiOaDfvWBuWggu9ZyqByH2uuHYtHGt2jGS4Hr2-iV7okmzjg6TBPOaypmyfa5PLLlamj-469xBFPvZbQvF0d8ErNAHv2cmlU0clARcHxpPuArg2wy3-ovJb7QEcq7oKd81Mvf4UgVudmSvv3o8DOd48j4C3Nz0y674w2jBl1Lu8K3kiU7fja53uTFFFx97iar873_74TPurVNyrRATtyCcWVPYVvdNXMSx9CFPtVH6IlfboWnrEsMJ1aqf_N1XvnhIxZ4LdDSO0fgaRMnkSOmDYnQaYnWNNdJwlo-x7Ms6kryHOr6eMkLkYMiSA0MaOwmr8czz96UlM_MSw78HNoo4aFL6HT-1UCYVJajWRxGPOBWwHxLhrup214Ris8lIHCWHG3C4fXR20XFEgkj6OM5pz-lzjOpfonMAMOHRw53tGJIhvQHHxrP-PDFYsMQY9qYWgr4rlBPEEr7kwREcE9Ca-d-Hp68d_KgEHkR00KgO9f0xDwVFapxqhcmLawjTOQWEvDIl-wZoP3kETYMy09nnX7Wbx6NqPOo8wE5gSSJZSmH-gKAyaPX7HL6hS7m7wL5dT8gGhgvzfiYU", + "e": "AQAB" + }, + "contact": [ + "mailto:max@substrakt.com" + ], + "initialIp": "82.43.101.135", + "createdAt": "2016-11-25T19:30:37.369505856Z", + "Status": "" + } + http_version: + recorded_at: Fri, 25 Nov 2016 19:30:37 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/reg/515213 + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiQ0MxMFRxZGRUTWlCaFlEdk1ZOWtSVjVCZFZhUlpad1BZU0M4dEpDX1BoOCIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ5bWpzRS0xdGNkVEdjaUEtT2lrcFlRbk8wMkpaNEt3ZlB3NFVkQUxIOFB2dThDZ05TQTJMeDM1NF9ibFUyQUlWbk0taGlWTjQzcHlac0w0NWFibmJJTXRvR0c2dHBHaU9hRGZ2V0J1V2dndTlaeXFCeUgydXVIWXRIR3QyakdTNEhyMi1pVjdva216amc2VEJQT2F5cG15ZmE1UExMbGFtai00Njl4QkZQdlpiUXZGMGQ4RXJOQUh2MmNtbFUwY2xBUmNIeHBQdUFyZzJ3eTMtb3ZKYjdRRWNxN29LZDgxTXZmNFVnVnVkbVN2djNvOERPZDQ4ajRDM056MHk2NzR3MmpCbDFMdThLM2tpVTdmamE1M3VURkZGeDk3aWFyODczXzc0VFB1clZOeXJSQVR0eUNjV1ZQWVZ2ZE5YTVN4OUNGUHRWSDZJbGZib1duckVzTUoxYXFmX04xWHZuaEl4WjRMZERTTzBmZ2FSTW5rU09tRFluUWFZbldOTmRKd2xvLXg3TXM2a3J5SE9yNmVNa0xrWU1pU0EwTWFPd21yOGN6ejk2VWxNX01Tdzc4SE5vbzRhRkw2SFQtMVVDWVZKYWpXUnhHUE9CV3dIeExocnVwMjE0UmlzOGxJSENXSEczQzRmWFIyMFhGRWdrajZPTTVwei1sempPcGZvbk1BTU9IUnc1M3RHSklodlFISHhyUC1QREZZc01RWTlxWVdncjRybEJQRUVyN2t3UkVjRTlDYS1kLUhwNjhkX0tnRUhrUjAwS2dPOWYweER3VkZhcHhxaGNtTGF3alRPUVdFdkRJbC13Wm9QM2tFVFlNeTA5bm5YN1dieDZOcVBPbzh3RTVnU1NKWlNtSC1nS0F5YVBYN0hMNmhTN203d0w1ZFQ4Z0doZ3Z6ZmlZVSJ9fQ","payload":"eyJyZXNvdXJjZSI6InJlZyIsImFncmVlbWVudCI6Imh0dHBzOi8vbGV0c2VuY3J5cHQub3JnL2RvY3VtZW50cy9MRS1TQS12MS4xLjEtQXVndXN0LTEtMjAxNi5wZGYifQ","signature":"GMttEM2sWjUYQiRtJpIAS00uCEQX1ciQ1wGVQpS9IGrxx5hCcKXr4BZSSO_DJFzaFzpWGByb8PgNzOmkn1XJ2wzeiPbNt9xNH3Za-1syzAnAH5Lv75Rt-uvgpWrxVG-g5FUZH45_3RuWN9j8DLgVvqQuomEb7YAVbbxEErt6WMZ5tVSYvpAYLjaD7O5K2AHfjb_U2bOPs6UTqdNsbu65uak9YwodcqQ-89IIGBUr-UWSv5GWzc59PukcE--71QwNOMtU1JpqiJl2eHWzDvRC1krHtcz6bQyUg65STRW8b-lklu5gCwdjXAjm19YKHY-G_wuRWNxPhzhPyCSA5t_xct7NdWIW2s-9dHEgWjhFlT3MiMIJ3ccoH1Q5oojSyiexcGmq_rDOsLqNqRa-xwp_9W1Bg11pNIiFdbDLs7w1wZ9pZIWS-4UQTJljaXhCJ2_uDmFfu1z2H1YFmVHLDa2DO6gGAyINySH62ve5ViBoe8SCEUtGOhbZhvPEHep2ipKENLI9YSRMx_r6-g1-17PACk7JLREpx-J8oq80vmQmLqa-jeGJtj3drPnO0ODn-CEk0dxod_fw9hs8EwMuuDBje9-pGpjnKmkAEJItuRoVqTbOzMTGgsJFu0z0UrQsgteLmYQBw3x35y5OIDI8OrLkVjQ6xAcmsZTaNxqC21-HYQk"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 202 + message: Accepted + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '985' + Boulder-Request-Id: + - u0sJri58wlez9J8BkQ899P5s1Q2gqidfuUb0QBv0Wuw + Boulder-Requester: + - '515213' + Link: + - ;rel="next" + - ;rel="terms-of-service" + Replay-Nonce: + - AMmjdD5_Oa48OZRwqc9dteB3f7ixJvu1HrJPIvoL3XM + Expires: + - Fri, 25 Nov 2016 19:30:38 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Fri, 25 Nov 2016 19:30:38 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "id": 515213, + "key": { + "kty": "RSA", + "n": "ymjsE-1tcdTGciA-OikpYQnO02JZ4KwfPw4UdALH8Pvu8CgNSA2Lx354_blU2AIVnM-hiVN43pyZsL45abnbIMtoGG6tpGiOaDfvWBuWggu9ZyqByH2uuHYtHGt2jGS4Hr2-iV7okmzjg6TBPOaypmyfa5PLLlamj-469xBFPvZbQvF0d8ErNAHv2cmlU0clARcHxpPuArg2wy3-ovJb7QEcq7oKd81Mvf4UgVudmSvv3o8DOd48j4C3Nz0y674w2jBl1Lu8K3kiU7fja53uTFFFx97iar873_74TPurVNyrRATtyCcWVPYVvdNXMSx9CFPtVH6IlfboWnrEsMJ1aqf_N1XvnhIxZ4LdDSO0fgaRMnkSOmDYnQaYnWNNdJwlo-x7Ms6kryHOr6eMkLkYMiSA0MaOwmr8czz96UlM_MSw78HNoo4aFL6HT-1UCYVJajWRxGPOBWwHxLhrup214Ris8lIHCWHG3C4fXR20XFEgkj6OM5pz-lzjOpfonMAMOHRw53tGJIhvQHHxrP-PDFYsMQY9qYWgr4rlBPEEr7kwREcE9Ca-d-Hp68d_KgEHkR00KgO9f0xDwVFapxqhcmLawjTOQWEvDIl-wZoP3kETYMy09nnX7Wbx6NqPOo8wE5gSSJZSmH-gKAyaPX7HL6hS7m7wL5dT8gGhgvzfiYU", + "e": "AQAB" + }, + "contact": [ + "mailto:max@substrakt.com" + ], + "agreement": "https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf", + "initialIp": "82.43.101.135", + "createdAt": "2016-11-25T19:30:37Z", + "Status": "" + } + http_version: + recorded_at: Fri, 25 Nov 2016 19:30:38 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/new-authz + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiQU1tamRENV9PYTQ4T1pSd3FjOWR0ZUIzZjdpeEp2dTFIckpQSXZvTDNYTSIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ5bWpzRS0xdGNkVEdjaUEtT2lrcFlRbk8wMkpaNEt3ZlB3NFVkQUxIOFB2dThDZ05TQTJMeDM1NF9ibFUyQUlWbk0taGlWTjQzcHlac0w0NWFibmJJTXRvR0c2dHBHaU9hRGZ2V0J1V2dndTlaeXFCeUgydXVIWXRIR3QyakdTNEhyMi1pVjdva216amc2VEJQT2F5cG15ZmE1UExMbGFtai00Njl4QkZQdlpiUXZGMGQ4RXJOQUh2MmNtbFUwY2xBUmNIeHBQdUFyZzJ3eTMtb3ZKYjdRRWNxN29LZDgxTXZmNFVnVnVkbVN2djNvOERPZDQ4ajRDM056MHk2NzR3MmpCbDFMdThLM2tpVTdmamE1M3VURkZGeDk3aWFyODczXzc0VFB1clZOeXJSQVR0eUNjV1ZQWVZ2ZE5YTVN4OUNGUHRWSDZJbGZib1duckVzTUoxYXFmX04xWHZuaEl4WjRMZERTTzBmZ2FSTW5rU09tRFluUWFZbldOTmRKd2xvLXg3TXM2a3J5SE9yNmVNa0xrWU1pU0EwTWFPd21yOGN6ejk2VWxNX01Tdzc4SE5vbzRhRkw2SFQtMVVDWVZKYWpXUnhHUE9CV3dIeExocnVwMjE0UmlzOGxJSENXSEczQzRmWFIyMFhGRWdrajZPTTVwei1sempPcGZvbk1BTU9IUnc1M3RHSklodlFISHhyUC1QREZZc01RWTlxWVdncjRybEJQRUVyN2t3UkVjRTlDYS1kLUhwNjhkX0tnRUhrUjAwS2dPOWYweER3VkZhcHhxaGNtTGF3alRPUVdFdkRJbC13Wm9QM2tFVFlNeTA5bm5YN1dieDZOcVBPbzh3RTVnU1NKWlNtSC1nS0F5YVBYN0hMNmhTN203d0w1ZFQ4Z0doZ3Z6ZmlZVSJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1hdXRoeiIsImlkZW50aWZpZXIiOnsidHlwZSI6ImRucyIsInZhbHVlIjoid3d3LnN1YnN0cmFrdC5jb20ifX0","signature":"tgWE9NeFf9csc04e7qNlH11Nzve_ZGKOnK5eIN6lNDEDU_zHXngvnNC2wKYzzKosgu_iafRfut1yNr8cAoFtx_J3c6XRahi4UOm4eQ6sID5f1lBlkqwik_VAluZgWnQ5KB8ciRePn4xZVtWZlm5jKrZgoW3z_JIFloAoguC_IGIJQJXVBUpagwinTvo9saaDF5ajuU5NgLyDvXVhrQExbQ38vW0xMjgLghiJkQ8PYnpcbieBsgeeKGdE1pwUzdQIdGggMZUbxMnr_6ReUBg6-Q5t2_CkSRa777vyNNTW3WYZTpbGi8PaTfFJBW9maGgKx7cUHsDgfYp8A1-6EnMGe5XpINyyzr7YN5tMj76EGU2TUeelPx96lLw24YsI-X9qE67sQLqdrncB3j3277ZOK6_W6K94z_4q6BDS4AWKk0xVQQRFDVpeBBC2F_6fCJaC2ejNxtawaniyyLqXUIhg1AxEDaUJR2_CDIzMf6vEuieepbjyVN1VjYEUXSEQfTxD8_m94qgutkCn1uhmsWjsRdCk_ZdLow7_zedSFZmpTlPlhphyae1kekhh9r5eojFBw1intiBMfo0iNVk7lk3hukHMz-IvqERIeXdFnM9uMWPmPjdzxpcNQ8EzEgRCEo2ITbF0nXQRFlPFwaDGOXrxeTlmGKKF5SHQurwaV6VVnqU"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 201 + message: Created + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '1011' + Boulder-Request-Id: + - Y47ADtlB5pMYpr8XnJUat3ZAdCRuvhAFymIcUqebkD0 + Boulder-Requester: + - '515213' + Link: + - ;rel="next" + Location: + - https://acme-staging.api.letsencrypt.org/acme/authz/PsI-t7YLKt1WQQ5P173ExztDs9mnf3pbAbvMZ8yPPKQ + Replay-Nonce: + - 7EIdYQAgpPl80t7a6WyJpEQuLlXbMamq4kblbgJ8q_s + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Fri, 25 Nov 2016 19:30:38 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Fri, 25 Nov 2016 19:30:38 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "identifier": { + "type": "dns", + "value": "www.substrakt.com" + }, + "status": "pending", + "expires": "2016-12-02T19:30:38.580058804Z", + "challenges": [ + { + "type": "dns-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/PsI-t7YLKt1WQQ5P173ExztDs9mnf3pbAbvMZ8yPPKQ/17254940", + "token": "OdYWiVDujvpnaASua9Fl6rCiDJApS3DcAIIAZ1096Fk" + }, + { + "type": "tls-sni-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/PsI-t7YLKt1WQQ5P173ExztDs9mnf3pbAbvMZ8yPPKQ/17254941", + "token": "QdOO3Z23iQ2Z1ZAZJo1j18MEEMvHTICNxw2XFBGdmq4" + }, + { + "type": "http-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/PsI-t7YLKt1WQQ5P173ExztDs9mnf3pbAbvMZ8yPPKQ/17254942", + "token": "w7Jw-MRLx7D2niAq_9a_n-0_dUGJqBAecGap-xXZMAI" + } + ], + "combinations": [ + [ + 1 + ], + [ + 0 + ], + [ + 2 + ] + ] + } + http_version: + recorded_at: Fri, 25 Nov 2016 19:30:38 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/new-authz + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiN0VJZFlRQWdwUGw4MHQ3YTZXeUpwRVF1TGxYYk1hbXE0a2JsYmdKOHFfcyIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ5bWpzRS0xdGNkVEdjaUEtT2lrcFlRbk8wMkpaNEt3ZlB3NFVkQUxIOFB2dThDZ05TQTJMeDM1NF9ibFUyQUlWbk0taGlWTjQzcHlac0w0NWFibmJJTXRvR0c2dHBHaU9hRGZ2V0J1V2dndTlaeXFCeUgydXVIWXRIR3QyakdTNEhyMi1pVjdva216amc2VEJQT2F5cG15ZmE1UExMbGFtai00Njl4QkZQdlpiUXZGMGQ4RXJOQUh2MmNtbFUwY2xBUmNIeHBQdUFyZzJ3eTMtb3ZKYjdRRWNxN29LZDgxTXZmNFVnVnVkbVN2djNvOERPZDQ4ajRDM056MHk2NzR3MmpCbDFMdThLM2tpVTdmamE1M3VURkZGeDk3aWFyODczXzc0VFB1clZOeXJSQVR0eUNjV1ZQWVZ2ZE5YTVN4OUNGUHRWSDZJbGZib1duckVzTUoxYXFmX04xWHZuaEl4WjRMZERTTzBmZ2FSTW5rU09tRFluUWFZbldOTmRKd2xvLXg3TXM2a3J5SE9yNmVNa0xrWU1pU0EwTWFPd21yOGN6ejk2VWxNX01Tdzc4SE5vbzRhRkw2SFQtMVVDWVZKYWpXUnhHUE9CV3dIeExocnVwMjE0UmlzOGxJSENXSEczQzRmWFIyMFhGRWdrajZPTTVwei1sempPcGZvbk1BTU9IUnc1M3RHSklodlFISHhyUC1QREZZc01RWTlxWVdncjRybEJQRUVyN2t3UkVjRTlDYS1kLUhwNjhkX0tnRUhrUjAwS2dPOWYweER3VkZhcHhxaGNtTGF3alRPUVdFdkRJbC13Wm9QM2tFVFlNeTA5bm5YN1dieDZOcVBPbzh3RTVnU1NKWlNtSC1nS0F5YVBYN0hMNmhTN203d0w1ZFQ4Z0doZ3Z6ZmlZVSJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1hdXRoeiIsImlkZW50aWZpZXIiOnsidHlwZSI6ImRucyIsInZhbHVlIjoic3Vic3RyYWt0LmNvbSJ9fQ","signature":"eRyNJRqS15nHJODd07cdMhap61gRF-jt9dEfDChULpHx04drcLknO-QgrhFxMl3TbVFTD5gYE9nzIMa_GdqrRKPuvnRDkM9eSPNx9oVy-IAhB_qirFlgP4xdXntP4vUnezNJJFfad6SRRVf-lI1Y7gGXPJadrWzHLFIYlkVNHZos5UoFs5ohrU_YLu72c4KznkLwQQ3Sx3Rybug6RVpm_D8tn_YE8zmO3jhCfKfBTRkXOX8krFsQ0YbPAPgY6ktt28_dlYWDzdwXH587ZuR4iqxm8j9mYxm4SpwomWd_oYmQ-Kkup-ALz-49QsE4GNm0ASwiLNdHMvXdtlr-GaTSQjjU8hxqM-8VY0Tc5W2Lq_RKbUVB7KXJ-8I8ux_B-3Nj7GFaWcnB14ktwmPwig5QAWDXNOf2H0RYJ3hGgrRp-8J7UA6SdxuoUBRQFbpP0ijwnozthPofMYfLoyauFQO-Dgpo167GpySItOCqFgWQ1BMpEnEr_cPDIxXcvbAtcinReGsxsKpzE_sjyPU4l69CMf0HaAMuC-W0cFJrLTmN-8aBFrIeihHImTKPukdZstctc1iWEyWYJSJnH5L5U0KHWX3Ie4P3p2v0xw9Pgydr8xDtVZXT5_zoQsmG1ytFr7Y6yPDFbnOWe4Wqa1sDWI8P-VQO4ILbnC4xX9A4AeI6bKM"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 201 + message: Created + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '1007' + Boulder-Request-Id: + - HvKER6RSqCJMtUKjMPVblDq-WvFhREpzXVVF4zzqIPw + Boulder-Requester: + - '515213' + Link: + - ;rel="next" + Location: + - https://acme-staging.api.letsencrypt.org/acme/authz/fQRt7uMWq2TGQUU5dVlHK2RuUgWkTOLVQazMSm6an84 + Replay-Nonce: + - W63wY-o1CjuMizgDi056Jn2SW6954CEER3CUrGALmU8 + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Fri, 25 Nov 2016 19:30:39 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Fri, 25 Nov 2016 19:30:39 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "identifier": { + "type": "dns", + "value": "substrakt.com" + }, + "status": "pending", + "expires": "2016-12-02T19:30:39.097675028Z", + "challenges": [ + { + "type": "tls-sni-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/fQRt7uMWq2TGQUU5dVlHK2RuUgWkTOLVQazMSm6an84/17254943", + "token": "CYrZ08xeIfrh8Q13m3RiBS2E-occ2VNT9HYmPhBL9u4" + }, + { + "type": "http-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/fQRt7uMWq2TGQUU5dVlHK2RuUgWkTOLVQazMSm6an84/17254944", + "token": "uqVTEgTU8Ti9gDGCyQiD9MHc9hdx1LCTLg3jdwtp3sk" + }, + { + "type": "dns-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/fQRt7uMWq2TGQUU5dVlHK2RuUgWkTOLVQazMSm6an84/17254945", + "token": "nagb5O4bMZ5QiumOTmYOLKp36FfIZcr-Mw6rtGlZO38" + } + ], + "combinations": [ + [ + 0 + ], + [ + 2 + ], + [ + 1 + ] + ] + } + http_version: + recorded_at: Fri, 25 Nov 2016 19:30:39 GMT +- request: + method: post + uri: https://www.cloudflare.com/api_json.html + body: + encoding: US-ASCII + string: a=rec_new&z=substrakt.com&type=TXT&name=_acme-challenge.www.substrakt.com&content=o_FTGsFdaIdXA7x_tFXYXdgjI12mrmsj4C3OJVUEejM&ttl=1&service_mode=1&tkn=49029fecd405689687af84b77176e344c8259&u=max%40substrakt.com + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + Content-Type: + - application/x-www-form-urlencoded + response: + status: + code: 200 + message: OK + headers: + Date: + - Fri, 25 Nov 2016 19:30:41 GMT + Content-Type: + - application/json + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Set-Cookie: + - CF_UALE=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0 + - __cfduid=dae5db3f5643e064b088503e80f8285c01480102240; expires=Sat, 25-Nov-17 + 19:30:40 GMT; path=/; domain=.cloudflare.com; HttpOnly + - vses2=7fh9shnf23far48mb7ms7k7ta1; path=/; domain=www.cloudflare.com; secure; + HttpOnly + Expires: + - Thu, 19 Nov 1981 08:52:00 GMT + Cache-Control: + - no-store, no-cache, must-revalidate, post-check=0, pre-check=0 + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + Content-Security-Policy: + - default-src 'self' https://*; script-src 'self' 'unsafe-inline' 'unsafe-eval' + https://* data:; img-src 'self' https://* data:; style-src 'self' 'unsafe-inline' + https://*; font-src 'self' https://* data:; frame-src https://*; connect-src + 'self' https://* wss://*.zopim.com data:; + X-Xss-Protection: + - 1; mode=block + Server: + - cloudflare-nginx + Cf-Ray: + - 3077843a6b4c0cb9-LHR + body: + encoding: ASCII-8BIT + string: '{"request":{"act":"rec_new"},"response":{"rec":{"obj":{"rec_id":"669350809","rec_hash":"56d1246c6e888c25fc0b74fdace90c1a","zone_name":"substrakt.com","name":"_acme-challenge.www.substrakt.com","display_name":"_acme-challenge.www","type":"TXT","prio":null,"content":"o_FTGsFdaIdXA7x_tFXYXdgjI12mrmsj4C3OJVUEejM","display_content":"o_FTGsFdaIdXA7x_tFXYXdgjI12mrmsj4C3OJVUEejM","ttl":"1","ttl_ceil":86400,"ssl_id":"5084311","ssl_status":"V","ssl_expires_on":null,"auto_ttl":1,"service_mode":"0","props":{"proxiable":0,"cloud_on":0,"cf_open":1,"vanity_lock":0,"ssl":1,"expired_ssl":0,"expiring_ssl":0,"pending_ssl":0}}}},"result":"success","msg":null}' + http_version: + recorded_at: Fri, 25 Nov 2016 19:30:41 GMT +- request: + method: post + uri: https://www.cloudflare.com/api_json.html + body: + encoding: US-ASCII + string: a=rec_new&z=substrakt.com&type=TXT&name=_acme-challenge.substrakt.com&content=YT-qkPZCDU2NGDMA3hkgw6e9H9FeF4ugqb7zab6HACg&ttl=1&service_mode=1&tkn=49029fecd405689687af84b77176e344c8259&u=max%40substrakt.com + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + Content-Type: + - application/x-www-form-urlencoded + response: + status: + code: 200 + message: OK + headers: + Date: + - Fri, 25 Nov 2016 19:30:42 GMT + Content-Type: + - application/json + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Set-Cookie: + - CF_UALE=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0 + - __cfduid=de3ee193c59db00d8b892fd42b5585bd21480102241; expires=Sat, 25-Nov-17 + 19:30:41 GMT; path=/; domain=.cloudflare.com; HttpOnly + - vses2=br19slkmamp12tmftmq608r364; path=/; domain=www.cloudflare.com; secure; + HttpOnly + Expires: + - Thu, 19 Nov 1981 08:52:00 GMT + Cache-Control: + - no-store, no-cache, must-revalidate, post-check=0, pre-check=0 + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + Content-Security-Policy: + - default-src 'self' https://*; script-src 'self' 'unsafe-inline' 'unsafe-eval' + https://* data:; img-src 'self' https://* data:; style-src 'self' 'unsafe-inline' + https://*; font-src 'self' https://* data:; frame-src https://*; connect-src + 'self' https://* wss://*.zopim.com data:; + X-Xss-Protection: + - 1; mode=block + Server: + - cloudflare-nginx + Cf-Ray: + - 307784402e8206ee-LHR + body: + encoding: ASCII-8BIT + string: '{"request":{"act":"rec_new"},"response":{"rec":{"obj":{"rec_id":"669350815","rec_hash":"17ffb0cf99af43dbe0764a3cf15134c8","zone_name":"substrakt.com","name":"_acme-challenge.substrakt.com","display_name":"_acme-challenge","type":"TXT","prio":null,"content":"YT-qkPZCDU2NGDMA3hkgw6e9H9FeF4ugqb7zab6HACg","display_content":"YT-qkPZCDU2NGDMA3hkgw6e9H9FeF4ugqb7zab6HACg","ttl":"1","ttl_ceil":86400,"ssl_id":"5084311","ssl_status":"V","ssl_expires_on":null,"auto_ttl":1,"service_mode":"0","props":{"proxiable":0,"cloud_on":0,"cf_open":1,"vanity_lock":0,"ssl":1,"expired_ssl":0,"expiring_ssl":0,"pending_ssl":0}}}},"result":"success","msg":null}' + http_version: + recorded_at: Fri, 25 Nov 2016 19:30:42 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/challenge/PsI-t7YLKt1WQQ5P173ExztDs9mnf3pbAbvMZ8yPPKQ/17254940 + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiVzYzd1ktbzFDanVNaXpnRGkwNTZKbjJTVzY5NTRDRUVSM0NVckdBTG1VOCIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ5bWpzRS0xdGNkVEdjaUEtT2lrcFlRbk8wMkpaNEt3ZlB3NFVkQUxIOFB2dThDZ05TQTJMeDM1NF9ibFUyQUlWbk0taGlWTjQzcHlac0w0NWFibmJJTXRvR0c2dHBHaU9hRGZ2V0J1V2dndTlaeXFCeUgydXVIWXRIR3QyakdTNEhyMi1pVjdva216amc2VEJQT2F5cG15ZmE1UExMbGFtai00Njl4QkZQdlpiUXZGMGQ4RXJOQUh2MmNtbFUwY2xBUmNIeHBQdUFyZzJ3eTMtb3ZKYjdRRWNxN29LZDgxTXZmNFVnVnVkbVN2djNvOERPZDQ4ajRDM056MHk2NzR3MmpCbDFMdThLM2tpVTdmamE1M3VURkZGeDk3aWFyODczXzc0VFB1clZOeXJSQVR0eUNjV1ZQWVZ2ZE5YTVN4OUNGUHRWSDZJbGZib1duckVzTUoxYXFmX04xWHZuaEl4WjRMZERTTzBmZ2FSTW5rU09tRFluUWFZbldOTmRKd2xvLXg3TXM2a3J5SE9yNmVNa0xrWU1pU0EwTWFPd21yOGN6ejk2VWxNX01Tdzc4SE5vbzRhRkw2SFQtMVVDWVZKYWpXUnhHUE9CV3dIeExocnVwMjE0UmlzOGxJSENXSEczQzRmWFIyMFhGRWdrajZPTTVwei1sempPcGZvbk1BTU9IUnc1M3RHSklodlFISHhyUC1QREZZc01RWTlxWVdncjRybEJQRUVyN2t3UkVjRTlDYS1kLUhwNjhkX0tnRUhrUjAwS2dPOWYweER3VkZhcHhxaGNtTGF3alRPUVdFdkRJbC13Wm9QM2tFVFlNeTA5bm5YN1dieDZOcVBPbzh3RTVnU1NKWlNtSC1nS0F5YVBYN0hMNmhTN203d0w1ZFQ4Z0doZ3Z6ZmlZVSJ9fQ","payload":"eyJyZXNvdXJjZSI6ImNoYWxsZW5nZSIsInR5cGUiOiJkbnMtMDEiLCJrZXlBdXRob3JpemF0aW9uIjoiT2RZV2lWRHVqdnBuYUFTdWE5Rmw2ckNpREpBcFMzRGNBSUlBWjEwOTZGay4wMlFKUWZiVFphTFZIV0Fnc3VibnlTUUk3Xzd3SElLQXNYMG12bXVfZEFRIn0","signature":"tIUTE4UZPWNLqNoqC3psu-SUX6CQmkVBxpGe0SouryQWefbolsh4FqL37nVGSIf0hpHsrnucQi9WPpRPO4p29Ua2HMwFEZOKZ0derKCZnqNIEeyKINHqM-NU4Z7P99cfto6OyF6XxRzPCXbkM9ZGOjkjr8Ufs2_Cdn_iYo48-B4C9pANaX99lqilaOqut-jWNYJ1ilJyvfuDZWl2oYTI8p-0fxv2mNgQoIvOSGzRqsFweEHqPh1kINGgqbX95ewpHwFNrQT8Y4jjACx9GwTS9_J_bZYu-3POmhbsLCs1NcmUfYVipnTOSVEGw0BncZlECFkM_xr_NL7XBnX63y8gS0NYYH3jlk_rCnAcmDkmSS4HHSK9AbcI7rEYC1mmtg4uxFgHhj43KrM-aRYyMaLP3lN_oQyEQoOHpcwjQ8t4lOGEE-RG5bfZYnOVq27FgE6l3xK4KpenM--3ZYATE0Sk7vvMiR8nki9xdm8cBaPEoJPd3x7Du0EeQPDntWe14rVhnkR_O3ew8xlSoGYa_OmZtbsRaPfc03ItklUp3gBy7ut28XyYWS5AKviIquANtg9pYxz_2t_puVBIz_9xwUEjhibsV3_Byyp7laG8JpoJAwZgLHa0AbDHz_KyBsqTDSlt8wXOyn7K8EJ5nQWPgHoioh37wJe1m-zd6Td5Fsd44Lw"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 202 + message: Accepted + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '337' + Boulder-Request-Id: + - 8fme7b_hOsHezipfdi3UlNn33DlNAAs2fX3Kk3CU4CA + Boulder-Requester: + - '515213' + Link: + - ;rel="up" + Location: + - https://acme-staging.api.letsencrypt.org/acme/challenge/PsI-t7YLKt1WQQ5P173ExztDs9mnf3pbAbvMZ8yPPKQ/17254940 + Replay-Nonce: + - G6FOhng_d8iQ0YyGUG005F19uoZSjChjHmxi8Na_T0E + Expires: + - Fri, 25 Nov 2016 19:31:42 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Fri, 25 Nov 2016 19:31:42 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "type": "dns-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/PsI-t7YLKt1WQQ5P173ExztDs9mnf3pbAbvMZ8yPPKQ/17254940", + "token": "OdYWiVDujvpnaASua9Fl6rCiDJApS3DcAIIAZ1096Fk", + "keyAuthorization": "OdYWiVDujvpnaASua9Fl6rCiDJApS3DcAIIAZ1096Fk.02QJQfbTZaLVHWAgsubnySQI7_7wHIKAsX0mvmu_dAQ" + } + http_version: + recorded_at: Fri, 25 Nov 2016 19:31:42 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/challenge/fQRt7uMWq2TGQUU5dVlHK2RuUgWkTOLVQazMSm6an84/17254945 + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiRzZGT2huZ19kOGlRMFl5R1VHMDA1RjE5dW9aU2pDaGpIbXhpOE5hX1QwRSIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ5bWpzRS0xdGNkVEdjaUEtT2lrcFlRbk8wMkpaNEt3ZlB3NFVkQUxIOFB2dThDZ05TQTJMeDM1NF9ibFUyQUlWbk0taGlWTjQzcHlac0w0NWFibmJJTXRvR0c2dHBHaU9hRGZ2V0J1V2dndTlaeXFCeUgydXVIWXRIR3QyakdTNEhyMi1pVjdva216amc2VEJQT2F5cG15ZmE1UExMbGFtai00Njl4QkZQdlpiUXZGMGQ4RXJOQUh2MmNtbFUwY2xBUmNIeHBQdUFyZzJ3eTMtb3ZKYjdRRWNxN29LZDgxTXZmNFVnVnVkbVN2djNvOERPZDQ4ajRDM056MHk2NzR3MmpCbDFMdThLM2tpVTdmamE1M3VURkZGeDk3aWFyODczXzc0VFB1clZOeXJSQVR0eUNjV1ZQWVZ2ZE5YTVN4OUNGUHRWSDZJbGZib1duckVzTUoxYXFmX04xWHZuaEl4WjRMZERTTzBmZ2FSTW5rU09tRFluUWFZbldOTmRKd2xvLXg3TXM2a3J5SE9yNmVNa0xrWU1pU0EwTWFPd21yOGN6ejk2VWxNX01Tdzc4SE5vbzRhRkw2SFQtMVVDWVZKYWpXUnhHUE9CV3dIeExocnVwMjE0UmlzOGxJSENXSEczQzRmWFIyMFhGRWdrajZPTTVwei1sempPcGZvbk1BTU9IUnc1M3RHSklodlFISHhyUC1QREZZc01RWTlxWVdncjRybEJQRUVyN2t3UkVjRTlDYS1kLUhwNjhkX0tnRUhrUjAwS2dPOWYweER3VkZhcHhxaGNtTGF3alRPUVdFdkRJbC13Wm9QM2tFVFlNeTA5bm5YN1dieDZOcVBPbzh3RTVnU1NKWlNtSC1nS0F5YVBYN0hMNmhTN203d0w1ZFQ4Z0doZ3Z6ZmlZVSJ9fQ","payload":"eyJyZXNvdXJjZSI6ImNoYWxsZW5nZSIsInR5cGUiOiJkbnMtMDEiLCJrZXlBdXRob3JpemF0aW9uIjoibmFnYjVPNGJNWjVRaXVtT1RtWU9MS3AzNkZmSVpjci1NdzZydEdsWk8zOC4wMlFKUWZiVFphTFZIV0Fnc3VibnlTUUk3Xzd3SElLQXNYMG12bXVfZEFRIn0","signature":"XE2AlYAbiRD61cEZ1cxnaCuy5zCMGUhmkQ1dhyK4faUJzJtkau9Oo45IKrVxoitze_ykzF6HpkReJcBY_U1JIyNgWJZ050zPIac-jztss6AsmhDJ1YyWUidyTY8lzGuY-WeU7Ji8Sv3dxrTXxrFL9Qb2L4Ah3oX4Nev9Hq3Jp65oxyOIKOBsKx4Fx1hxCHg7FtT1DUhb2XAA5RRPyscD9p6r3vNWUkQaZQrMlq_y8wZ62SHGFe0KSXbTuZx7D3JlU8n24HsHXfk51kBNZvslT59tJUaz3K6NL62khMUnLOzaETYBLj2PHXgfsL3-xaLZhh33iKfUb6-RrxExif3MxNRGMvaF1IZZKA3Ss56vmVbu4gI5cNSECf9g5Fl4fuMZ732e9YEfyc1M0IIwgIiqOT2I0hMhkCOdptZvgGkMmigEG9-9WSs-9UPZDs4JlWFJ3_SHANvnAK_5J_w0Md7-RSeshe_FSKaTrj61OyWGae4cEes4CGSKqr7jYvJLJ_GRUYPXQqezhDRNrj9-BDBOItjKJ3mjRhkUcgXU5ui4R-5TlHb3khxPLvs-2y-IIckplUsJByaiJV6JX9gF3-YQxH5JLxyNZKZ6OrPO4KZm6hRAGnRzzk7LPTpftJ1FjnVUbaDk7lu_ev13rnkQQPcE18aoFRrQMXE-9M1j9vseYKA"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 202 + message: Accepted + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '337' + Boulder-Request-Id: + - Awf5Ec1c1UNuSaTem3h03TBivPe-jhGMQuTxh8pHHEU + Boulder-Requester: + - '515213' + Link: + - ;rel="up" + Location: + - https://acme-staging.api.letsencrypt.org/acme/challenge/fQRt7uMWq2TGQUU5dVlHK2RuUgWkTOLVQazMSm6an84/17254945 + Replay-Nonce: + - oEVupN5se6K2xODYry9dYwt9jb5NWe39wPYaDNPDXY4 + Expires: + - Fri, 25 Nov 2016 19:31:43 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Fri, 25 Nov 2016 19:31:43 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "type": "dns-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/fQRt7uMWq2TGQUU5dVlHK2RuUgWkTOLVQazMSm6an84/17254945", + "token": "nagb5O4bMZ5QiumOTmYOLKp36FfIZcr-Mw6rtGlZO38", + "keyAuthorization": "nagb5O4bMZ5QiumOTmYOLKp36FfIZcr-Mw6rtGlZO38.02QJQfbTZaLVHWAgsubnySQI7_7wHIKAsX0mvmu_dAQ" + } + http_version: + recorded_at: Fri, 25 Nov 2016 19:31:43 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/new-cert + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoib0VWdXBONXNlNksyeE9EWXJ5OWRZd3Q5amI1TldlMzl3UFlhRE5QRFhZNCIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ5bWpzRS0xdGNkVEdjaUEtT2lrcFlRbk8wMkpaNEt3ZlB3NFVkQUxIOFB2dThDZ05TQTJMeDM1NF9ibFUyQUlWbk0taGlWTjQzcHlac0w0NWFibmJJTXRvR0c2dHBHaU9hRGZ2V0J1V2dndTlaeXFCeUgydXVIWXRIR3QyakdTNEhyMi1pVjdva216amc2VEJQT2F5cG15ZmE1UExMbGFtai00Njl4QkZQdlpiUXZGMGQ4RXJOQUh2MmNtbFUwY2xBUmNIeHBQdUFyZzJ3eTMtb3ZKYjdRRWNxN29LZDgxTXZmNFVnVnVkbVN2djNvOERPZDQ4ajRDM056MHk2NzR3MmpCbDFMdThLM2tpVTdmamE1M3VURkZGeDk3aWFyODczXzc0VFB1clZOeXJSQVR0eUNjV1ZQWVZ2ZE5YTVN4OUNGUHRWSDZJbGZib1duckVzTUoxYXFmX04xWHZuaEl4WjRMZERTTzBmZ2FSTW5rU09tRFluUWFZbldOTmRKd2xvLXg3TXM2a3J5SE9yNmVNa0xrWU1pU0EwTWFPd21yOGN6ejk2VWxNX01Tdzc4SE5vbzRhRkw2SFQtMVVDWVZKYWpXUnhHUE9CV3dIeExocnVwMjE0UmlzOGxJSENXSEczQzRmWFIyMFhGRWdrajZPTTVwei1sempPcGZvbk1BTU9IUnc1M3RHSklodlFISHhyUC1QREZZc01RWTlxWVdncjRybEJQRUVyN2t3UkVjRTlDYS1kLUhwNjhkX0tnRUhrUjAwS2dPOWYweER3VkZhcHhxaGNtTGF3alRPUVdFdkRJbC13Wm9QM2tFVFlNeTA5bm5YN1dieDZOcVBPbzh3RTVnU1NKWlNtSC1nS0F5YVBYN0hMNmhTN203d0w1ZFQ4Z0doZ3Z6ZmlZVSJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1jZXJ0IiwiY3NyIjoiTUlJQ256Q0NBWWNDQVFJd0hERWFNQmdHQTFVRUF3d1JkM2QzTG5OMVluTjBjbUZyZEM1amIyMHdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDX25UNngtREl2akZSY05nTFNxbGJaOFZzVG9leE51X1BwZXc0T0JIclBSd0s4Zy1oMFVfNmdONWFiU2o2Q1JJdU4zaUVfXzVQZ1VwSnR3UV80SmJhRFpxS2FsWUhXc0VUeHI0bXZoQ0ZEN2kzRzdCdEhuQXJEZ1B2WUtacHVGVVdXNkxOMlFwVUhmNTdITmZyM0VER0loa1NsZlBlN0txbkxWZU5kTTJOZEZ2STB2WDZYLXBGU0NfeUJjV19yQ3B0bjJGc2EyR0d3eDRWenl3RGM3QzhpblJFTEMzY2QwTlRSeDQ2R2pxczgycEZYMF9rSWdpaDJWWEJma3hZaG5VQS1Vd1VhdzczTDFianBTMGtCTzNLWjdWY3NHa01YaTRvSV9SYWctVmpxU2hNaEFKeWdhdDFZTExKUWEyMjF1S3ZTQXA1Z3hIeU1Dcm9GdTNBcEZJaDFBZ01CQUFHZ1BqQThCZ2txaGtpRzl3MEJDUTR4THpBdE1Dc0dBMVVkRVFRa01DS0NFWGQzZHk1emRXSnpkSEpoYTNRdVkyOXRnZzF6ZFdKemRISmhhM1F1WTI5dE1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQjRYNTJiLWlwTjJfZkhFTXU5UUNWckNVaUE5Q0RjY2lVazQ4bjRrZGExM3ZkZ25kT2JoQUx0STdCOG1lWFlheFJaNnkyTk5xcWl5TkhjRWwtZ0NDblBTMzZxZ3g0eFl2Ym9lU0dkVDJXOEtHdG82aWVhdy1mNUFkNW02dVpFc0tOYlgzc3BmZjNybjVobThsQ09BeWtlOFU3dmFJdks1OW5aZktpUXR5REdfVXRwUlZoQ1RlUHAtdmlHNlRmVEczYmJiM1ppcm9MbVVla1BPZnhSTzJDTm8wZ2I1WDRWcTB2Vl9iZXlhRjEzVkRETGRDdnBQV1Bub3RJOEVSMUhyYzBfaTZqUG5jN3BpQ0Qya2FDRm5ldmMtYm1rQWljZUF1cERVOUtRMWtZWnl2X21DRlVnQ1J3MmlvSFltZko5dzF6UVNlNVFxc2JSSVhzYXdRaFJ5d3dFIn0","signature":"H4X-RI_Ii2FPvsJSzEutJCZ6YCRGUVjO_9mssX3akA7SkvPSSlwm7F3L6DJgvKKKXJEJ9ydtcjN9gQBvx9Kt69kHqYEySrSVJiYQsT5DfDIFfVRJ_GE57b3z5ESadLr-5bNfDfSFoBnREf8sNkJaV5q0iZkSDNBhcfv-EJakS9hh76_OWuWpjV6lnmSLajx4MuFWdCNtSCocwnT9qJYWOeB5RBiOspSwSgDpprF6wjn91AfyBzID-uuTCowcqYUVrDIU7ULUaGF-Id041aAhtgxY1HGM2vP8DqfcjMcg0Z1GaJNaiZNbUYiBlZ8FKchhYcz5tb54BIbfasdhJhI14H-_1fHe3tSZ56O8T33NG84t1OLnXu4d7l6FqzijY0EHulrHl6ogc4CHaf6tOaqFl0QE6WS4Z_reO0lzajfp30MeO56AGuL2A33Y84iMSBTqQBkNvsG-9B8rMrPmYgTca3EizjKHq6q6_rmQet7i5cbiCiSxHfIJAehg2YoZbjjrO2CHrOyoBt4exfWfuiN9ecKQ9zBywFNFyWnk3kGIO__-dbD5Ljp1iLilrOoRrWAHEL-qa5hIsEZ0eB5Hdkiu21-WGjG7G4Ooru2aXaYhRtnEYAMAnFrN0zH-MLPJlEtbEyhxnJ1c5Gy4IoNLQCtM664NWvSNtzgJYdT14m2-5OA"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 201 + message: Created + headers: + Server: + - nginx + Content-Type: + - application/pkix-cert + Content-Length: + - '1274' + Boulder-Request-Id: + - JT0eyM0CDqE_9xOiZ-fDvZ_v-DnTCtaXv0e6yrpa2_8 + Boulder-Requester: + - '515213' + Link: + - ;rel="up" + Location: + - https://acme-staging.api.letsencrypt.org/acme/cert/faaf54635f5cf9ec386dcf7530d3ac0cb159 + Replay-Nonce: + - AzI4YSu3U5pgGfwq-qUuFXxfiDWSihClsI-CuuznQ50 + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Fri, 25 Nov 2016 19:31:43 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Fri, 25 Nov 2016 19:31:43 GMT + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: !binary |- + MIIE9jCCA96gAwIBAgITAPqvVGNfXPnsOG3PdTDTrAyxWTANBgkqhkiG9w0B + AQsFADAiMSAwHgYDVQQDDBdGYWtlIExFIEludGVybWVkaWF0ZSBYMTAeFw0x + NjExMjUxODMyMDBaFw0xNzAyMjMxODMyMDBaMBwxGjAYBgNVBAMTEXd3dy5z + dWJzdHJha3QuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA + v50+sfgyL4xUXDYC0qpW2fFbE6HsTbvz6XsODgR6z0cCvIPodFP+oDeWm0o+ + gkSLjd4hP/+T4FKSbcEP+CW2g2aimpWB1rBE8a+Jr4QhQ+4txuwbR5wKw4D7 + 2CmabhVFluizdkKVB3+exzX69xAxiIZEpXz3uyqpy1XjXTNjXRbyNL1+l/qR + Ugv8gXFv6wqbZ9hbGthhsMeFc8sA3OwvIp0RCwt3HdDU0ceOho6rPNqRV9P5 + CIIodlVwX5MWIZ1APlMFGsO9y9W46UtJATtyme1XLBpDF4uKCP0WoPlY6koT + IQCcoGrdWCyyUGtttbir0gKeYMR8jAq6BbtwKRSIdQIDAQABo4ICKTCCAiUw + DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD + AjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQG+gwoYoIjYWSO9Hf//pVDA5Y1 + KDAfBgNVHSMEGDAWgBTAzANGuVggzFxycPPhLssgpvVoOjB4BggrBgEFBQcB + AQRsMGowMwYIKwYBBQUHMAGGJ2h0dHA6Ly9vY3NwLnN0Zy1pbnQteDEubGV0 + c2VuY3J5cHQub3JnLzAzBggrBgEFBQcwAoYnaHR0cDovL2NlcnQuc3RnLWlu + dC14MS5sZXRzZW5jcnlwdC5vcmcvMCsGA1UdEQQkMCKCDXN1YnN0cmFrdC5j + b22CEXd3dy5zdWJzdHJha3QuY29tMIH+BgNVHSAEgfYwgfMwCAYGZ4EMAQIB + MIHmBgsrBgEEAYLfEwEBATCB1jAmBggrBgEFBQcCARYaaHR0cDovL2Nwcy5s + ZXRzZW5jcnlwdC5vcmcwgasGCCsGAQUFBwICMIGeDIGbVGhpcyBDZXJ0aWZp + Y2F0ZSBtYXkgb25seSBiZSByZWxpZWQgdXBvbiBieSBSZWx5aW5nIFBhcnRp + ZXMgYW5kIG9ubHkgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBDZXJ0aWZpY2F0 + ZSBQb2xpY3kgZm91bmQgYXQgaHR0cHM6Ly9sZXRzZW5jcnlwdC5vcmcvcmVw + b3NpdG9yeS8wDQYJKoZIhvcNAQELBQADggEBAHZfwhmXxyplkYAZr+ZZ8JJv + offPAzGUAu1xBWGYeDxf6VDiSRWa3INMi7++PADmSK57z05RuPJTh5wRRXsQ + VpJvO/CO0jTD7CNiZxhy8F6IjGJ3Rd+ltYrZNluYl5PnSzGysKZMxiEAMfAW + imo52TqM02QT2uOuEuwbCFJI9qh5gCqTS3QpthFj/rlsQ8Jy2HxhDpflqX9F + ZgBraCGBOpkrCnZMog3TM8UwdAijRiRuSKHucry1BpuNX8FZeYIHIwK4k+q3 + 9lBX5KOKKvT0XaQd0Z9ZgPkOuBOLiV7KI0PK8CyHIkfYkhfzhl/IXwvpRv4s + pn4qRHELJ0xhB4Zf79Y= + http_version: + recorded_at: Fri, 25 Nov 2016 19:31:43 GMT +- request: + method: get + uri: https://acme-staging.api.letsencrypt.org/acme/issuer-cert + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiQXpJNFlTdTNVNXBnR2Z3cS1xVXVGWHhmaURXU2loQ2xzSS1DdXV6blE1MCIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ5bWpzRS0xdGNkVEdjaUEtT2lrcFlRbk8wMkpaNEt3ZlB3NFVkQUxIOFB2dThDZ05TQTJMeDM1NF9ibFUyQUlWbk0taGlWTjQzcHlac0w0NWFibmJJTXRvR0c2dHBHaU9hRGZ2V0J1V2dndTlaeXFCeUgydXVIWXRIR3QyakdTNEhyMi1pVjdva216amc2VEJQT2F5cG15ZmE1UExMbGFtai00Njl4QkZQdlpiUXZGMGQ4RXJOQUh2MmNtbFUwY2xBUmNIeHBQdUFyZzJ3eTMtb3ZKYjdRRWNxN29LZDgxTXZmNFVnVnVkbVN2djNvOERPZDQ4ajRDM056MHk2NzR3MmpCbDFMdThLM2tpVTdmamE1M3VURkZGeDk3aWFyODczXzc0VFB1clZOeXJSQVR0eUNjV1ZQWVZ2ZE5YTVN4OUNGUHRWSDZJbGZib1duckVzTUoxYXFmX04xWHZuaEl4WjRMZERTTzBmZ2FSTW5rU09tRFluUWFZbldOTmRKd2xvLXg3TXM2a3J5SE9yNmVNa0xrWU1pU0EwTWFPd21yOGN6ejk2VWxNX01Tdzc4SE5vbzRhRkw2SFQtMVVDWVZKYWpXUnhHUE9CV3dIeExocnVwMjE0UmlzOGxJSENXSEczQzRmWFIyMFhGRWdrajZPTTVwei1sempPcGZvbk1BTU9IUnc1M3RHSklodlFISHhyUC1QREZZc01RWTlxWVdncjRybEJQRUVyN2t3UkVjRTlDYS1kLUhwNjhkX0tnRUhrUjAwS2dPOWYweER3VkZhcHhxaGNtTGF3alRPUVdFdkRJbC13Wm9QM2tFVFlNeTA5bm5YN1dieDZOcVBPbzh3RTVnU1NKWlNtSC1nS0F5YVBYN0hMNmhTN203d0w1ZFQ4Z0doZ3Z6ZmlZVSJ9fQ","payload":"e30","signature":"nBKkqOziJZBCBSuBmFHb_N093VTkdcKktMHqej4GkmZ7djNZq5c_jxWEti8ztcrB3LEkLOVMzIBG4Z9CrzywI3QOm11FSBkWSiudbB9ZEQldRmanr9CJYLoARRHBwrWWZax9ZA0EqFyCxwG2R4_ga4Gw99jqRgjs6gqy3Hfdt2VhP2Y_ubXhSCOX9qP9PSLmlrRvRPVXas8fVONvEmEM6Ta0-onnwnJ6j_xpxDwBQJXk5lcBSgnzjQg4TBN2AflQb8vIr7Jr0Y7Lj4A6Ypwm0qWzAbiOt7LKQRNA0Iia0WHwRuKt9QhNJF2eCQ2eLDlx3OXrsPtKCwENnA0WCim-gRe4rHN2_zMk4vlUbhUeYPrDWitAILvK2UA5z4GLCG-Om8GlDKFtJ_-3IC8e1m8maOLjRVeXENaLpO5zilNE7dtmgdA0t0At82eeLCgfbK2oZZ-J0WoFir6vcocN6lHQHZvJfWwROA-P7E1eliQNjzJDCigW1fzPTtF2RwrMfsuKh6II37JD-rn0OsfoLHdPdR0-7kR_GrdD8FRg-X8LHIFpvCrz7Z-9rTDIcmomgjT5Jjmt1p784V1eIbiXUG9Tbu2Iv5qgA3nWMrUaCbrS9F0PyQL73474zYzt0aOWJ0qN-gfFL5aLVEaDboUkCqQjX35cjWIMqWdsPAjzXqhFsjU"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Content-Type: + - application/pkix-cert + Content-Length: + - '1199' + Boulder-Request-Id: + - 0_umcR-GGHXnOwp5YgnJ_xoFEiYOfsFxHHwA6A7mtFY + Replay-Nonce: + - 0rnPhQj8e1mGzQlEDNPPPMHRyjkqpQmx8KzvdWZ2yTs + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Fri, 25 Nov 2016 19:31:44 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Fri, 25 Nov 2016 19:31:44 GMT + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: !binary |- + MIIEqzCCApOgAwIBAgIRAIvhKg5ZRO08VGQx8JdhT+UwDQYJKoZIhvcNAQEL + BQAwGjEYMBYGA1UEAwwPRmFrZSBMRSBSb290IFgxMB4XDTE2MDUyMzIyMDc1 + OVoXDTM2MDUyMzIyMDc1OVowIjEgMB4GA1UEAwwXRmFrZSBMRSBJbnRlcm1l + ZGlhdGUgWDEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDtWKyS + Dn7rWZc5ggjz3ZB08jO4xti3uzINfD5sQ7Lj7hzetUT+wQob+iXSZkhnvx+I + vdbXF5/yt8aWPpUKnPymoLxsYiI5gQBLxNDzIec0OIaflWqAr29m7J8+NNtA + pEN8nZFnf3bhehZW7AxmS1m0ZnSsdHw0Fw+bgixPg2MQ9k9oefFeqa+7Kqdl + z5bbrUYV2volxhDFtnI4Mh8BiWCNxDH1Hizq+GKCcHsinDZWurCqder/afJB + nQs+SBSL6MVApHt+d35zjBD92fO2Je56dhMfzCgOKXeJ340WhW3TjD1zqLZX + eaCyUNRnfOmWZV8nEhtHOFbUCU7r/KkjMZO9AgMBAAGjgeMwgeAwDgYDVR0P + AQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMDMA0a5 + WCDMXHJw8+EuyyCm9Wg6MHoGCCsGAQUFBwEBBG4wbDA0BggrBgEFBQcwAYYo + aHR0cDovL29jc3Auc3RnLXJvb3QteDEubGV0c2VuY3J5cHQub3JnLzA0Bggr + BgEFBQcwAoYoaHR0cDovL2NlcnQuc3RnLXJvb3QteDEubGV0c2VuY3J5cHQu + b3JnLzAfBgNVHSMEGDAWgBTBJnSkikSg5vogKNhcI5pFiBh54DANBgkqhkiG + 9w0BAQsFAAOCAgEABYSu4Il+fI0MYU42OTmEj+1HqQ5DvyAeyCA6sGuZdwjF + UGeVOv3NnLyfofuUOjEbY5irFCDtnv+0ckukUZN9lz4Q2YjWGUpW4TTu3ieT + saC9AFvCSgNHJyWSVtWvB5XDxsqawl1KzHzzwr132bF2rtGtazSqVqK9E07s + GHMCf+zpDQVDVVGtqZPHwX3KqUtefE621b8RI6VCl4oD30Olf8pjuzG4JKBF + RFclzLRjo/h7IkkfjZ8wDa7faOjVXx6n+eUQ29cIMCzr8/rNWHS9pYGGQKJi + Y2xmVC9h12H99XyfzWE9vb5zKP3MVG6neX1hSdo7PEAb9fqRhHkqVsqUvJlI + RmvXvVKTwNCP3eCjRCCIPTAvjV+4ni786iXwwFYNz8l3PmPLCyQXWGohnJ8i + Bm+5nk7O2ynaPVW0U2W+pt2wSVuvdDM5zGv2f9ltNWUiYZHJ1mmO97jSY/6Y + fdOUH66iRtQtDkHBRdkNBsMbD+Em2TgBldtHNSJBfB3pm9FblgOcJ0FSWcUD + WJ7vO0+NTXlgrRofRT6pVywzxVo6dND0WzYlTWeUVsO40xJqhgUQRER9YLOL + xJ0O6C8i0xFxAMKOtSdodMB3RIwt7RFQ0uytn5Z5MqkYhlMI3J1tPRTp1nEt + 9fyGspBOO05gi148Qasp+3N+svqKomoQglNoAxU= + http_version: + recorded_at: Fri, 25 Nov 2016 19:31:44 GMT +- request: + method: patch + uri: https://api.heroku.com/apps/ssl-test-maxwoolf/features/http-sni + body: + encoding: UTF-8 + string: '{"enabled":true}' + headers: + Accept: + - application/vnd.heroku+json; version=3.sni_ssl_cert + Authorization: + - Bearer 67705361-152c-4761-96aa-ec904d6cd071 + Content-Type: + - application/json + response: + status: + code: 404 + message: Not Found + headers: + Cache-Control: + - private, no-cache + Content-Type: + - application/json + Date: + - Fri, 25 Nov 2016 19:31:44 GMT + Ratelimit-Multiplier: + - '1' + Ratelimit-Remaining: + - '4499' + Request-Id: + - 3be92bad-f23d-40a9-64bc-19730e18e4a5,4771ce9b-e980-bb76-88f3-769d8c305ada + Vary: + - Accept-Encoding + Via: + - 1.1 spaces-router (+291255b) + X-Content-Type-Options: + - nosniff + X-Runtime: + - '0.06963218' + Content-Length: + - '79' + Connection: + - keep-alive + body: + encoding: UTF-8 + string: '{"resource":"feature","id":"not_found","message":"Couldn''t find that + feature."}' + http_version: + recorded_at: Fri, 25 Nov 2016 19:31:44 GMT +- request: + method: post + uri: https://api.heroku.com/apps/ssl-test-maxwoolf/sni-endpoints + body: + encoding: UTF-8 + string: '{"certificate_chain":"-----BEGIN CERTIFICATE-----\nMIIE9jCCA96gAwIBAgITAPqvVGNfXPnsOG3PdTDTrAyxWTANBgkqhkiG9w0BAQsF\nADAiMSAwHgYDVQQDDBdGYWtlIExFIEludGVybWVkaWF0ZSBYMTAeFw0xNjExMjUx\nODMyMDBaFw0xNzAyMjMxODMyMDBaMBwxGjAYBgNVBAMTEXd3dy5zdWJzdHJha3Qu\nY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv50+sfgyL4xUXDYC\n0qpW2fFbE6HsTbvz6XsODgR6z0cCvIPodFP+oDeWm0o+gkSLjd4hP/+T4FKSbcEP\n+CW2g2aimpWB1rBE8a+Jr4QhQ+4txuwbR5wKw4D72CmabhVFluizdkKVB3+exzX6\n9xAxiIZEpXz3uyqpy1XjXTNjXRbyNL1+l/qRUgv8gXFv6wqbZ9hbGthhsMeFc8sA\n3OwvIp0RCwt3HdDU0ceOho6rPNqRV9P5CIIodlVwX5MWIZ1APlMFGsO9y9W46UtJ\nATtyme1XLBpDF4uKCP0WoPlY6koTIQCcoGrdWCyyUGtttbir0gKeYMR8jAq6Bbtw\nKRSIdQIDAQABo4ICKTCCAiUwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsG\nAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQG+gwoYoIj\nYWSO9Hf//pVDA5Y1KDAfBgNVHSMEGDAWgBTAzANGuVggzFxycPPhLssgpvVoOjB4\nBggrBgEFBQcBAQRsMGowMwYIKwYBBQUHMAGGJ2h0dHA6Ly9vY3NwLnN0Zy1pbnQt\neDEubGV0c2VuY3J5cHQub3JnLzAzBggrBgEFBQcwAoYnaHR0cDovL2NlcnQuc3Rn\nLWludC14MS5sZXRzZW5jcnlwdC5vcmcvMCsGA1UdEQQkMCKCDXN1YnN0cmFrdC5j\nb22CEXd3dy5zdWJzdHJha3QuY29tMIH+BgNVHSAEgfYwgfMwCAYGZ4EMAQIBMIHm\nBgsrBgEEAYLfEwEBATCB1jAmBggrBgEFBQcCARYaaHR0cDovL2Nwcy5sZXRzZW5j\ncnlwdC5vcmcwgasGCCsGAQUFBwICMIGeDIGbVGhpcyBDZXJ0aWZpY2F0ZSBtYXkg\nb25seSBiZSByZWxpZWQgdXBvbiBieSBSZWx5aW5nIFBhcnRpZXMgYW5kIG9ubHkg\naW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBDZXJ0aWZpY2F0ZSBQb2xpY3kgZm91bmQg\nYXQgaHR0cHM6Ly9sZXRzZW5jcnlwdC5vcmcvcmVwb3NpdG9yeS8wDQYJKoZIhvcN\nAQELBQADggEBAHZfwhmXxyplkYAZr+ZZ8JJvoffPAzGUAu1xBWGYeDxf6VDiSRWa\n3INMi7++PADmSK57z05RuPJTh5wRRXsQVpJvO/CO0jTD7CNiZxhy8F6IjGJ3Rd+l\ntYrZNluYl5PnSzGysKZMxiEAMfAWimo52TqM02QT2uOuEuwbCFJI9qh5gCqTS3Qp\nthFj/rlsQ8Jy2HxhDpflqX9FZgBraCGBOpkrCnZMog3TM8UwdAijRiRuSKHucry1\nBpuNX8FZeYIHIwK4k+q39lBX5KOKKvT0XaQd0Z9ZgPkOuBOLiV7KI0PK8CyHIkfY\nkhfzhl/IXwvpRv4spn4qRHELJ0xhB4Zf79Y=\n-----END + CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIEqzCCApOgAwIBAgIRAIvhKg5ZRO08VGQx8JdhT+UwDQYJKoZIhvcNAQELBQAw\nGjEYMBYGA1UEAwwPRmFrZSBMRSBSb290IFgxMB4XDTE2MDUyMzIyMDc1OVoXDTM2\nMDUyMzIyMDc1OVowIjEgMB4GA1UEAwwXRmFrZSBMRSBJbnRlcm1lZGlhdGUgWDEw\nggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDtWKySDn7rWZc5ggjz3ZB0\n8jO4xti3uzINfD5sQ7Lj7hzetUT+wQob+iXSZkhnvx+IvdbXF5/yt8aWPpUKnPym\noLxsYiI5gQBLxNDzIec0OIaflWqAr29m7J8+NNtApEN8nZFnf3bhehZW7AxmS1m0\nZnSsdHw0Fw+bgixPg2MQ9k9oefFeqa+7Kqdlz5bbrUYV2volxhDFtnI4Mh8BiWCN\nxDH1Hizq+GKCcHsinDZWurCqder/afJBnQs+SBSL6MVApHt+d35zjBD92fO2Je56\ndhMfzCgOKXeJ340WhW3TjD1zqLZXeaCyUNRnfOmWZV8nEhtHOFbUCU7r/KkjMZO9\nAgMBAAGjgeMwgeAwDgYDVR0PAQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAw\nHQYDVR0OBBYEFMDMA0a5WCDMXHJw8+EuyyCm9Wg6MHoGCCsGAQUFBwEBBG4wbDA0\nBggrBgEFBQcwAYYoaHR0cDovL29jc3Auc3RnLXJvb3QteDEubGV0c2VuY3J5cHQu\nb3JnLzA0BggrBgEFBQcwAoYoaHR0cDovL2NlcnQuc3RnLXJvb3QteDEubGV0c2Vu\nY3J5cHQub3JnLzAfBgNVHSMEGDAWgBTBJnSkikSg5vogKNhcI5pFiBh54DANBgkq\nhkiG9w0BAQsFAAOCAgEABYSu4Il+fI0MYU42OTmEj+1HqQ5DvyAeyCA6sGuZdwjF\nUGeVOv3NnLyfofuUOjEbY5irFCDtnv+0ckukUZN9lz4Q2YjWGUpW4TTu3ieTsaC9\nAFvCSgNHJyWSVtWvB5XDxsqawl1KzHzzwr132bF2rtGtazSqVqK9E07sGHMCf+zp\nDQVDVVGtqZPHwX3KqUtefE621b8RI6VCl4oD30Olf8pjuzG4JKBFRFclzLRjo/h7\nIkkfjZ8wDa7faOjVXx6n+eUQ29cIMCzr8/rNWHS9pYGGQKJiY2xmVC9h12H99Xyf\nzWE9vb5zKP3MVG6neX1hSdo7PEAb9fqRhHkqVsqUvJlIRmvXvVKTwNCP3eCjRCCI\nPTAvjV+4ni786iXwwFYNz8l3PmPLCyQXWGohnJ8iBm+5nk7O2ynaPVW0U2W+pt2w\nSVuvdDM5zGv2f9ltNWUiYZHJ1mmO97jSY/6YfdOUH66iRtQtDkHBRdkNBsMbD+Em\n2TgBldtHNSJBfB3pm9FblgOcJ0FSWcUDWJ7vO0+NTXlgrRofRT6pVywzxVo6dND0\nWzYlTWeUVsO40xJqhgUQRER9YLOLxJ0O6C8i0xFxAMKOtSdodMB3RIwt7RFQ0uyt\nn5Z5MqkYhlMI3J1tPRTp1nEt9fyGspBOO05gi148Qasp+3N+svqKomoQglNoAxU=\n-----END + CERTIFICATE-----\n","private_key":"-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEAv50+sfgyL4xUXDYC0qpW2fFbE6HsTbvz6XsODgR6z0cCvIPo\ndFP+oDeWm0o+gkSLjd4hP/+T4FKSbcEP+CW2g2aimpWB1rBE8a+Jr4QhQ+4txuwb\nR5wKw4D72CmabhVFluizdkKVB3+exzX69xAxiIZEpXz3uyqpy1XjXTNjXRbyNL1+\nl/qRUgv8gXFv6wqbZ9hbGthhsMeFc8sA3OwvIp0RCwt3HdDU0ceOho6rPNqRV9P5\nCIIodlVwX5MWIZ1APlMFGsO9y9W46UtJATtyme1XLBpDF4uKCP0WoPlY6koTIQCc\noGrdWCyyUGtttbir0gKeYMR8jAq6BbtwKRSIdQIDAQABAoIBAQCUPMU9D8Nbj5fQ\nAqTqb4djclpAdPuII8kOLvnvlD2iT9BpIS9bl4OcVYT5PFXhl7/TEC7vAP1ZBOht\nane9RQfO3j8bkmBxQ8sCowfEtla54/CcPRrZqnmVSBsN3xmu4lwE5J+59Mawl2Wx\nviwaqPd5JE7FLEnHDblwKlEMUG4lm/ydogatdQ3ivQcETA/wO2/lRmN4+OPYXHES\nc3+h/8plN6FImiRDS86voSmnFnvWv3SOYEeWwFQMtV744Y18y0ExAOMTyN2D0P7g\nsLM6j+2xg/s4EW5cN2M/kCD5iCI3Kz13BER2ZKPnceWZF1qgjfkL4GMPbeJvpqnD\nTnm8nFWBAoGBAOrFXJd9ynn396gwT1o9I/BlrNqBsaF4TX+RT2qRf7Ygg8VNYVX0\nHJJA7vVxlEDqQaZPrfjcm+bakgFfTAsc1aMOdVg0QY08gfzMiM7Q2saeYKTpne9O\n7afSfb6YxgGPxdWjYReMhI2OZMIzSb4yHDq5zV0dl/fVz6Ec3ACRaaOVAoGBANDw\n3L4/J4vVSR6+QFAoY0/pfjWtHoGk/N7/CH1rcZSbbZRtmiZD9GKUpNO2TLzufX6K\nUWI3hexkiwpjpftCIk2N+QLroPVDeGDjzTo7/rxs93K0flhE5jYTUVPktYgFebgw\ntblNrWASTHwK6MMheLxb3YFJjSQJdiaZJQI9xBlhAoGBAIh4UWp+ZMShsATEkFwU\nTl/fuqsJ2QfTtrkA7vkzutlT7UUzxfEBBdq+hCmI7HUPtznF94tCMh3v0A+cJcgP\n6t/t96heN/yxv54EB0KxhXsPdX5njrcdWmjDovS4OeGOgaG+ZyIZPLRMoaWByswU\ntPQuLYKDQWN/lkJBVGHAJXhBAoGARG1NbcTTF7l/G+FkwJupgqdOXRfYMM8uvX06\nc5C3ftq0NXL7k+KXa52QqYE/enSEhueXpZnXc0auPnXKCxJql4mSboFqkkhJaTnR\noWu6jk0FcPxpkFDoL/d9oAL77JMWfNr++LPWvurfP5R3DEiu+MkBLvE+lvm+Rv/K\nngRKb6ECgYEAu8yfzl+LH3Ur6wUw6RuO/3qfM+UbpD/XfUCSkJH3DerJKrAZ4wJn\na5eyjRWmNUs6j7nWCrG57zY8N9K+GbJv8YB1azPmpSavSHG5cs+kDgZFm/7gyLl0\nsqvARpkOHO+z1KSwbbLyCjnG4hn8ZnG/PqZxFrOfs/uyDwks/V3q+IQ=\n-----END + RSA PRIVATE KEY-----\n"}' + headers: + Accept: + - application/vnd.heroku+json; version=3.sni_ssl_cert + Authorization: + - Bearer 67705361-152c-4761-96aa-ec904d6cd071 + Content-Type: + - application/json + response: + status: + code: 422 + message: status code 422 + headers: + Cache-Control: + - private, no-cache + Content-Type: + - application/json + Date: + - Fri, 25 Nov 2016 19:31:45 GMT + Oauth-Scope: + - global + Oauth-Scope-Accepted: + - global write write-protected + Ratelimit-Multiplier: + - '1' + Ratelimit-Remaining: + - '4498' + Request-Id: + - 65d10cec-e4fc-49a2-7197-19feac55f389,2044eadf-e49d-3898-9dcd-5f483da89757 + Vary: + - Accept-Encoding + Via: + - 1.1 spaces-router (+291255b) + X-Content-Type-Options: + - nosniff + X-Runtime: + - '0.089489278' + Content-Length: + - '123' + Connection: + - keep-alive + body: + encoding: UTF-8 + string: '{"id":"invalid_params","message":"You need to be running on either + Hobby or Professional dynos to be able to use SNI SSL."}' + http_version: + recorded_at: Fri, 25 Nov 2016 19:31:45 GMT +- request: + method: get + uri: https://api.heroku.com/apps/ssl-test-maxwoolf/sni-endpoints + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/vnd.heroku+json; version=3.sni_ssl_cert + Authorization: + - Bearer 67705361-152c-4761-96aa-ec904d6cd071 + Content-Type: + - application/json + response: + status: + code: 200 + message: OK + headers: + Cache-Control: + - private, no-cache + Content-Type: + - application/json + Date: + - Fri, 25 Nov 2016 19:31:46 GMT + Oauth-Scope: + - global + Oauth-Scope-Accepted: + - global read read-protected write write-protected + Ratelimit-Multiplier: + - '1' + Ratelimit-Remaining: + - '4497' + Request-Id: + - 48be2da2-1b23-4bd1-5a48-1ec46a7ff0e6,dc5fafc9-6aaa-b1fc-7bfc-6568eb715825 + Vary: + - Accept-Encoding + Via: + - 1.1 spaces-router (+291255b) + X-Content-Type-Options: + - nosniff + X-Runtime: + - '0.091705926' + Content-Length: + - '2' + Connection: + - keep-alive + body: + encoding: UTF-8 + string: "[]" + http_version: + recorded_at: Fri, 25 Nov 2016 19:31:46 GMT +recorded_with: VCR 3.0.3 diff --git a/test/fixtures/vcr_cassettes/new-certificate-debug.yml b/test/fixtures/vcr_cassettes/new-certificate-debug.yml new file mode 100644 index 0000000..e74e508 --- /dev/null +++ b/test/fixtures/vcr_cassettes/new-certificate-debug.yml @@ -0,0 +1,753 @@ +--- +http_interactions: +- request: + method: head + uri: https://acme-staging.api.letsencrypt.org/acme/new-reg + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept: + - "*/*" + response: + status: + code: 405 + message: Method Not Allowed + headers: + Server: + - nginx + Content-Type: + - application/problem+json + Content-Length: + - '91' + Allow: + - POST + Boulder-Request-Id: + - UmDCM2NElmHs7drnsrKqAP3rV7-NSfGScKJ7JGfuqbQ + Replay-Nonce: + - 9CkUVGzi198oJn8I-TEo72V1KqrVvGWz2XeMDm4ZCxk + Expires: + - Tue, 15 Nov 2016 16:36:44 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 16:36:44 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: '' + http_version: + recorded_at: Tue, 15 Nov 2016 16:36:44 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/new-reg + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiOUNrVVZHemkxOThvSm44SS1URW83MlYxS3FyVnZHV3oyWGVNRG00WkN4ayIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ0dWZ4T3ZwMTJuTk1nVlM0WVNSMEdUc2U0SlJfWjdxb3d1RHFELTJWTTd2YkdHU01HMklab2YyYTdJS1JoZ3dGM0lZN2xHWXBYT3hybUg5QkFKbWpLWXdPS1g1cFBJaktMRTY3cFVocVdidkVwOWdlSTltTWVjRzVaZ2tLRU9VQlZ2T2Fldkh4VTc4YlE4QmdWbVFqdTVHVDA4dGFkZXRzU21fX3NXYmE3U1YyeGRfQXFmY0dCUHNQeDFjV1FId08zMy0tY2MyWDVSTWwwTVNjS0trLUdyUUtQQkE0cGJySk45cmZXUTVLSTVCZUJ1WXJNcDRUdG5tWjg2RzFjN1pxVTlsNDVGWkNLemdEUExRcjNYVWxsQXN0UzdPOWE4VFhlc1JjbTBrQkRwcUpLMGozQWVHRG14bG5wY1lwNVhrMDdFQVZGYk5MeWhuWDQ4Y2hWZ0tGMzQ3RVV3R3pnQmJwWG96Wm5obEpaMDhUaVo2NkMwREo5S3NVNnFVcUdibTc0TjhQS3UyZm1FUlZlRlpSOFlZUWNaZWtQX1ByZkRONGpnZVhaUm01bUlMZDdNTy0wOXhaVFB1R2V0dlBfU0N1b0FRRmVra05CMHFjQUY1ak1NZW1VYVh5RFFrNHI1Nk5uNVFYRXk2bXRjRzdUaTB5WW13NVJMbzFXXzZnbUh2T1ZnTkh5Mk9WNkhRbDYyNmdXMk13MEZzbk9uYVJybzBVZC00aVBCQUhiWnhNU3JDVFhvTEJFMkZYck84bXpUdFVxLVB1NWIxejd1dk95a3JCRzNZVG96OVZtN3NKNHVseFZGaEJlWmtwTDN3Q2F0NDdsMEZNM2tJczZtSkdQTW14dXF3WDBYdVZqb1U2UVd2QzY5YWJlelE4b2hSMzlidkxsWjhaX2cwUy1GayJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1yZWciLCJjb250YWN0IjpbIm1haWx0bzpkZXZAc3Vic3RyYWt0LmNvbSJdfQ","signature":"o-bK4x3NX0-FQbctII_vpFfDU6z6NX6xxTG9i7uTqPY6UlKkDXDX8jmoF5WPeJyGxUuh5H48scrKpCnzuyykGFEJA1W4q6Ax6dwBE-DjBzd6JpnkO2mwBZ-PblS6WHo2KnvPUluQZ2gll_TxdIWOdmiiY-YZ5zr3jWiU1RueP8sOT8uh1Qb-4kX2mYOnck3HfY_9o7sGJuUCfDzs1pf2Fe9RJgpeomn3lFu2yqYWLUbCozoKG0A3Hb1NCGeEJpO7xtJiTjl9lO6r6-N_sLhv7N1QnRM1MjIO3mpZX5GEWSjMkTAtGdAelrNRljJU3T6_D2iR6smt80oE3nbqlDnTyJeC_Z52giKYTMox1Y6U5zmlmjbuc_0kuUOOBUypdX9x0fcp475VjI8NBKbJSYof0P5hH8VTawRX3biVRJkZUD8XPNjTFENvU5fB_ND3G1WBXfi2K1-BrvFRlE0_zr87eviRZzI_VPWnF_b5lmxq-_9itCxMuyjF5fQXqW5Z6rkWLhutOwQ354SjgMRrHJ4iMwL3aWYtUVLkXTSgzs5eACdqsXEeAGB9QkRfVZe8RF5-lC-I0zXwmj_saHHJJ5wgbJ1sPFPZRoAp5X3Oc8ruZendtua64Y0zaXrA3F270IGkJsamC_L75QKe72WbXW8jKWnzArE5ifJVHjd-BSuUDYc"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 201 + message: Created + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '912' + Boulder-Request-Id: + - "-cSZuFLU_zNkItr6Awm9p2VJBxwmWvPm8WypXdBVBTk" + Boulder-Requester: + - '496535' + Link: + - ;rel="next" + - ;rel="terms-of-service" + Location: + - https://acme-staging.api.letsencrypt.org/acme/reg/496535 + Replay-Nonce: + - 2jXQyClQgEpY8mSymigS4TjG4TqfMy-4p1HCwwK-zho + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Tue, 15 Nov 2016 16:36:44 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 16:36:44 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "id": 496535, + "key": { + "kty": "RSA", + "n": "tufxOvp12nNMgVS4YSR0GTse4JR_Z7qowuDqD-2VM7vbGGSMG2IZof2a7IKRhgwF3IY7lGYpXOxrmH9BAJmjKYwOKX5pPIjKLE67pUhqWbvEp9geI9mMecG5ZgkKEOUBVvOaevHxU78bQ8BgVmQju5GT08tadetsSm__sWba7SV2xd_AqfcGBPsPx1cWQHwO33--cc2X5RMl0MScKKk-GrQKPBA4pbrJN9rfWQ5KI5BeBuYrMp4TtnmZ86G1c7ZqU9l45FZCKzgDPLQr3XUllAstS7O9a8TXesRcm0kBDpqJK0j3AeGDmxlnpcYp5Xk07EAVFbNLyhnX48chVgKF347EUwGzgBbpXozZnhlJZ08TiZ66C0DJ9KsU6qUqGbm74N8PKu2fmERVeFZR8YYQcZekP_PrfDN4jgeXZRm5mILd7MO-09xZTPuGetvP_SCuoAQFekkNB0qcAF5jMMemUaXyDQk4r56Nn5QXEy6mtcG7Ti0yYmw5RLo1W_6gmHvOVgNHy2OV6HQl626gW2Mw0FsnOnaRro0Ud-4iPBAHbZxMSrCTXoLBE2FXrO8mzTtUq-Pu5b1z7uvOykrBG3YToz9Vm7sJ4ulxVFhBeZkpL3wCat47l0FM3kIs6mJGPMmxuqwX0XuVjoU6QWvC69abezQ8ohR39bvLlZ8Z_g0S-Fk", + "e": "AQAB" + }, + "contact": [ + "mailto:dev@substrakt.com" + ], + "initialIp": "213.123.191.198", + "createdAt": "2016-11-15T16:36:44.7778982Z", + "Status": "" + } + http_version: + recorded_at: Tue, 15 Nov 2016 16:36:44 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/reg/496535 + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiMmpYUXlDbFFnRXBZOG1TeW1pZ1M0VGpHNFRxZk15LTRwMUhDd3dLLXpobyIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ0dWZ4T3ZwMTJuTk1nVlM0WVNSMEdUc2U0SlJfWjdxb3d1RHFELTJWTTd2YkdHU01HMklab2YyYTdJS1JoZ3dGM0lZN2xHWXBYT3hybUg5QkFKbWpLWXdPS1g1cFBJaktMRTY3cFVocVdidkVwOWdlSTltTWVjRzVaZ2tLRU9VQlZ2T2Fldkh4VTc4YlE4QmdWbVFqdTVHVDA4dGFkZXRzU21fX3NXYmE3U1YyeGRfQXFmY0dCUHNQeDFjV1FId08zMy0tY2MyWDVSTWwwTVNjS0trLUdyUUtQQkE0cGJySk45cmZXUTVLSTVCZUJ1WXJNcDRUdG5tWjg2RzFjN1pxVTlsNDVGWkNLemdEUExRcjNYVWxsQXN0UzdPOWE4VFhlc1JjbTBrQkRwcUpLMGozQWVHRG14bG5wY1lwNVhrMDdFQVZGYk5MeWhuWDQ4Y2hWZ0tGMzQ3RVV3R3pnQmJwWG96Wm5obEpaMDhUaVo2NkMwREo5S3NVNnFVcUdibTc0TjhQS3UyZm1FUlZlRlpSOFlZUWNaZWtQX1ByZkRONGpnZVhaUm01bUlMZDdNTy0wOXhaVFB1R2V0dlBfU0N1b0FRRmVra05CMHFjQUY1ak1NZW1VYVh5RFFrNHI1Nk5uNVFYRXk2bXRjRzdUaTB5WW13NVJMbzFXXzZnbUh2T1ZnTkh5Mk9WNkhRbDYyNmdXMk13MEZzbk9uYVJybzBVZC00aVBCQUhiWnhNU3JDVFhvTEJFMkZYck84bXpUdFVxLVB1NWIxejd1dk95a3JCRzNZVG96OVZtN3NKNHVseFZGaEJlWmtwTDN3Q2F0NDdsMEZNM2tJczZtSkdQTW14dXF3WDBYdVZqb1U2UVd2QzY5YWJlelE4b2hSMzlidkxsWjhaX2cwUy1GayJ9fQ","payload":"eyJyZXNvdXJjZSI6InJlZyIsImFncmVlbWVudCI6Imh0dHBzOi8vbGV0c2VuY3J5cHQub3JnL2RvY3VtZW50cy9MRS1TQS12MS4xLjEtQXVndXN0LTEtMjAxNi5wZGYifQ","signature":"moRQPAWJLj_v_2nuKAGKMQfuD16TVv7HtNu0gUC_CuwyQqnaFQXhrwLqW3If5I1K-YvlNVkO9gJ0_-Fz1ZmFt2xC5FVrUkZG-KZ0P4hbdd2XkG4BNnGwvvZ_6V2ymaCcdQwQBhf2fuwtWE4PaiJpMdDCAUKcDPdunp10CxG1Qphx7MlLopgaEoLXWAt-H3E3wQVoPC4dwlOg7RXI_bJOYyWsrz4dToaaINZYPpjtGw7I0rt1vSOA-z-p98TMstaLLmWlmszNjbduCysgjN3ZiCNbe55uqbu4XJXU8qk7ihiA1vIgPId_Hrl4bl_raUyIBVmZoPCaop6f7nj-gX3Qqf-WUHvZTyLv3RjnL_0kblCRudnAb4CoQRx7ee2F_jG5y4o732EUAvXbelTqY218Lhw0vV5wwvhPQiozJkt7RYmrQKlnK4mLKA8CST6YvDSFerA7I807hqnkW2D0m7_LsOZK5y_lMB9MmnQBFzCHCis6zmiNYS1Q8vEh5xqwSwAffIAqh0fL6IOIAiadm7qsvJ2cUrfnbZ0wp4V0HbZaIIXS6V4OPiYSOeFra80kGsrM67jESm4ASruuLifluQZ9DrdVG_FtRCp60St-lDSrj3f50qF4D8uare84_gEd0JtRBm10NNwe_Rkm-Um7b9snit7ZZRvR_rukKQeu4vvTbaA"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 202 + message: Accepted + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '987' + Boulder-Request-Id: + - 4239c_TKE1vsolpHi1qLoIt9ABB4GngsRQ3K7vyB6-M + Boulder-Requester: + - '496535' + Link: + - ;rel="next" + - ;rel="terms-of-service" + Replay-Nonce: + - _X1w-n8XaqRLk29xTv0CSCy0XNI2dsE42NWdCAMGSQ0 + Expires: + - Tue, 15 Nov 2016 16:36:45 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 16:36:45 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "id": 496535, + "key": { + "kty": "RSA", + "n": "tufxOvp12nNMgVS4YSR0GTse4JR_Z7qowuDqD-2VM7vbGGSMG2IZof2a7IKRhgwF3IY7lGYpXOxrmH9BAJmjKYwOKX5pPIjKLE67pUhqWbvEp9geI9mMecG5ZgkKEOUBVvOaevHxU78bQ8BgVmQju5GT08tadetsSm__sWba7SV2xd_AqfcGBPsPx1cWQHwO33--cc2X5RMl0MScKKk-GrQKPBA4pbrJN9rfWQ5KI5BeBuYrMp4TtnmZ86G1c7ZqU9l45FZCKzgDPLQr3XUllAstS7O9a8TXesRcm0kBDpqJK0j3AeGDmxlnpcYp5Xk07EAVFbNLyhnX48chVgKF347EUwGzgBbpXozZnhlJZ08TiZ66C0DJ9KsU6qUqGbm74N8PKu2fmERVeFZR8YYQcZekP_PrfDN4jgeXZRm5mILd7MO-09xZTPuGetvP_SCuoAQFekkNB0qcAF5jMMemUaXyDQk4r56Nn5QXEy6mtcG7Ti0yYmw5RLo1W_6gmHvOVgNHy2OV6HQl626gW2Mw0FsnOnaRro0Ud-4iPBAHbZxMSrCTXoLBE2FXrO8mzTtUq-Pu5b1z7uvOykrBG3YToz9Vm7sJ4ulxVFhBeZkpL3wCat47l0FM3kIs6mJGPMmxuqwX0XuVjoU6QWvC69abezQ8ohR39bvLlZ8Z_g0S-Fk", + "e": "AQAB" + }, + "contact": [ + "mailto:dev@substrakt.com" + ], + "agreement": "https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf", + "initialIp": "213.123.191.198", + "createdAt": "2016-11-15T16:36:44Z", + "Status": "" + } + http_version: + recorded_at: Tue, 15 Nov 2016 16:36:45 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/new-authz + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiX1gxdy1uOFhhcVJMazI5eFR2MENTQ3kwWE5JMmRzRTQyTldkQ0FNR1NRMCIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ0dWZ4T3ZwMTJuTk1nVlM0WVNSMEdUc2U0SlJfWjdxb3d1RHFELTJWTTd2YkdHU01HMklab2YyYTdJS1JoZ3dGM0lZN2xHWXBYT3hybUg5QkFKbWpLWXdPS1g1cFBJaktMRTY3cFVocVdidkVwOWdlSTltTWVjRzVaZ2tLRU9VQlZ2T2Fldkh4VTc4YlE4QmdWbVFqdTVHVDA4dGFkZXRzU21fX3NXYmE3U1YyeGRfQXFmY0dCUHNQeDFjV1FId08zMy0tY2MyWDVSTWwwTVNjS0trLUdyUUtQQkE0cGJySk45cmZXUTVLSTVCZUJ1WXJNcDRUdG5tWjg2RzFjN1pxVTlsNDVGWkNLemdEUExRcjNYVWxsQXN0UzdPOWE4VFhlc1JjbTBrQkRwcUpLMGozQWVHRG14bG5wY1lwNVhrMDdFQVZGYk5MeWhuWDQ4Y2hWZ0tGMzQ3RVV3R3pnQmJwWG96Wm5obEpaMDhUaVo2NkMwREo5S3NVNnFVcUdibTc0TjhQS3UyZm1FUlZlRlpSOFlZUWNaZWtQX1ByZkRONGpnZVhaUm01bUlMZDdNTy0wOXhaVFB1R2V0dlBfU0N1b0FRRmVra05CMHFjQUY1ak1NZW1VYVh5RFFrNHI1Nk5uNVFYRXk2bXRjRzdUaTB5WW13NVJMbzFXXzZnbUh2T1ZnTkh5Mk9WNkhRbDYyNmdXMk13MEZzbk9uYVJybzBVZC00aVBCQUhiWnhNU3JDVFhvTEJFMkZYck84bXpUdFVxLVB1NWIxejd1dk95a3JCRzNZVG96OVZtN3NKNHVseFZGaEJlWmtwTDN3Q2F0NDdsMEZNM2tJczZtSkdQTW14dXF3WDBYdVZqb1U2UVd2QzY5YWJlelE4b2hSMzlidkxsWjhaX2cwUy1GayJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1hdXRoeiIsImlkZW50aWZpZXIiOnsidHlwZSI6ImRucyIsInZhbHVlIjoid3d3LnN1YnN0cmFrdC5jb20ifX0","signature":"SSg0eBgJI6AZU4U7ViZefOYPs7X4qRV6pTNHWbUcGLaW_3TBuru5ryMRGWztPIh58_mQF7Mniv6gfHw8ZeoaaTfmSs49fBvBhKgKJvY9mwL2Hrl8nRbcSxsEaK4YLJD_vl2ThHMtvcPb47mn7vXa74YnP3h0_0I1OJZNwgxqZp3SfUljrhzlU-mWj3uKEpL_SUsZ0E1g_SZEQj22gGU62beoWAk-l2e8g4i_GZD3jZ-IBZRDie2YvYPKqzjVe72jviFFucvnrVzGCBnF1YeOuz9kwHgykMY24xNrn3ule1Xdm7m2WiNAuGF-D7kboLnrZaz2UneNt0CQJ1IF2uQMH2DSsMVSND9N9W3TFKjiga8BGkihpN_T4NTS43yt9HYrIUwGm2UPZaHKULaMRWOQ7M7XeUvWDbBaGyLIatkdUivbHuitkO0gY2xlVhvIZQEh1oSrmeoy4_pUxg5BixOSTywIPbTQEIZFsEauWnuq8K-ja1CVFRsURVnUT5jMvt--PQPwge_ePvZOE6-q8u9gtkKkZqwnCctE0eGcA62DtSvvtK4eKh4Sd2G0wWhOge27hbqa_aCSTdkeHjkf3m9aFy_zvIVcjdmRiZ2zhl2fwSqqAXhJ6cmbiX3OrygVNMp54h-NCBPh1bnh31hjnbTw3p7nlTARI0yVeTLfeEI4WI8"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 201 + message: Created + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '1011' + Boulder-Request-Id: + - ZP1qsewyK4Lnx42Q7iilU2egW-i9g_dN8wsublCg7Aw + Boulder-Requester: + - '496535' + Link: + - ;rel="next" + Location: + - https://acme-staging.api.letsencrypt.org/acme/authz/VE0RYNsvF5-NR8DpGJNU1p6wb9BI7PFV0JojBsQdN00 + Replay-Nonce: + - "-YzXk-zUoydu7L3gKEYzJ8lqtiRCwVeDGHX__pzk6ZM" + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Tue, 15 Nov 2016 16:36:45 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 16:36:45 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "identifier": { + "type": "dns", + "value": "www.substrakt.com" + }, + "status": "pending", + "expires": "2016-11-22T16:36:45.668349568Z", + "challenges": [ + { + "type": "dns-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/VE0RYNsvF5-NR8DpGJNU1p6wb9BI7PFV0JojBsQdN00/16908053", + "token": "xse3uRLUeYRI7O0EwONnv74gML7J1TYSB0vlvI0y3ns" + }, + { + "type": "http-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/VE0RYNsvF5-NR8DpGJNU1p6wb9BI7PFV0JojBsQdN00/16908054", + "token": "njdWRqwZKPk3gCtQGgIhANgLqfmcn7KzHCehodsfyis" + }, + { + "type": "tls-sni-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/VE0RYNsvF5-NR8DpGJNU1p6wb9BI7PFV0JojBsQdN00/16908055", + "token": "Cj_oEAkLTHNZyQaErHs4qqZKM3KBYmF0jNY6gcjjqwU" + } + ], + "combinations": [ + [ + 1 + ], + [ + 0 + ], + [ + 2 + ] + ] + } + http_version: + recorded_at: Tue, 15 Nov 2016 16:36:45 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/new-authz + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiLVl6WGstelVveWR1N0wzZ0tFWXpKOGxxdGlSQ3dWZURHSFhfX3B6azZaTSIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ0dWZ4T3ZwMTJuTk1nVlM0WVNSMEdUc2U0SlJfWjdxb3d1RHFELTJWTTd2YkdHU01HMklab2YyYTdJS1JoZ3dGM0lZN2xHWXBYT3hybUg5QkFKbWpLWXdPS1g1cFBJaktMRTY3cFVocVdidkVwOWdlSTltTWVjRzVaZ2tLRU9VQlZ2T2Fldkh4VTc4YlE4QmdWbVFqdTVHVDA4dGFkZXRzU21fX3NXYmE3U1YyeGRfQXFmY0dCUHNQeDFjV1FId08zMy0tY2MyWDVSTWwwTVNjS0trLUdyUUtQQkE0cGJySk45cmZXUTVLSTVCZUJ1WXJNcDRUdG5tWjg2RzFjN1pxVTlsNDVGWkNLemdEUExRcjNYVWxsQXN0UzdPOWE4VFhlc1JjbTBrQkRwcUpLMGozQWVHRG14bG5wY1lwNVhrMDdFQVZGYk5MeWhuWDQ4Y2hWZ0tGMzQ3RVV3R3pnQmJwWG96Wm5obEpaMDhUaVo2NkMwREo5S3NVNnFVcUdibTc0TjhQS3UyZm1FUlZlRlpSOFlZUWNaZWtQX1ByZkRONGpnZVhaUm01bUlMZDdNTy0wOXhaVFB1R2V0dlBfU0N1b0FRRmVra05CMHFjQUY1ak1NZW1VYVh5RFFrNHI1Nk5uNVFYRXk2bXRjRzdUaTB5WW13NVJMbzFXXzZnbUh2T1ZnTkh5Mk9WNkhRbDYyNmdXMk13MEZzbk9uYVJybzBVZC00aVBCQUhiWnhNU3JDVFhvTEJFMkZYck84bXpUdFVxLVB1NWIxejd1dk95a3JCRzNZVG96OVZtN3NKNHVseFZGaEJlWmtwTDN3Q2F0NDdsMEZNM2tJczZtSkdQTW14dXF3WDBYdVZqb1U2UVd2QzY5YWJlelE4b2hSMzlidkxsWjhaX2cwUy1GayJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1hdXRoeiIsImlkZW50aWZpZXIiOnsidHlwZSI6ImRucyIsInZhbHVlIjoic3Vic3RyYWt0LmNvbSJ9fQ","signature":"SZ5upylCf-DmwHkd-k3WRLtQaqZOubUAI06IeFEY7FfpBSvq0uwO5sN2x0R1YqvVxRrnf7Ri2Teioyn3aCq8U_vvQD7Ky98bsRuZLRtspf-DsAAue9NHc2OIhNVIxNWg4fh5kPFXyGMUJkIuI7jG50TTt4HrIWuQcot5ooZtXmR5FWBCFRzEgfxcVy0RYMimi5_yO_5K7YF-YAdSKfuYb5SlxPC9KaBZnz5eXCYDjSuNK15vFTPFXoH1o-Qcl0dO8XXi6qKWwV3hdOeSSyY1NxCHYexzb1PI6rqkOAj5ByIep4HvvSXlyz3HdoRfzohq7Zr1dPmGoAOmsXA0hrYxGvjpmCKzsEoIAc-ulMkysQYIIeTgddxzXRBy-KsdBLXq_wux35IkWcnbrmsO54Sz_sy46mUDYK8q7PFk_CmGI9-w4VJUt_Bbyj1hvE1_T5P8ul1pP-fkCEM247vx298AQtUQPmJgh4Z7bgXePJrgqKHj40OQfNFFERnwV7dDtVtAAp9K4tQaZNgQnuJWhp1khdrtSblvYmNf4W1cjATnDZIgJR8LGHGiYEr27fBtCQsDdEpDohMRuxiTIwxxPALisUWi9TmbyevJ0HhuJppa63h0lkrOSIHLT3MxwhJHMp55EQ5xaBHH1L7JMBIzqN66ZOzhW8WB5NMUPmfT0tZ06fs"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 201 + message: Created + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '1007' + Boulder-Request-Id: + - dFcLfmUl36e-qJbUrzMGrkn7E8zhXA68Z9PnySMCwFY + Boulder-Requester: + - '496535' + Link: + - ;rel="next" + Location: + - https://acme-staging.api.letsencrypt.org/acme/authz/mRC2viBR-USIfVdacaqcJuymOgHdY8GklltntDuz5fM + Replay-Nonce: + - FbOAuykqQc1gX6fCRc0pCjCCy6Sb6frttqPaP58mpP8 + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Tue, 15 Nov 2016 16:36:46 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 16:36:46 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "identifier": { + "type": "dns", + "value": "substrakt.com" + }, + "status": "pending", + "expires": "2016-11-22T16:36:46.083171704Z", + "challenges": [ + { + "type": "dns-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/mRC2viBR-USIfVdacaqcJuymOgHdY8GklltntDuz5fM/16908056", + "token": "siRU154fswJLgHsTgFxW-ssHiMfE9SHzQQcnxeg8XuM" + }, + { + "type": "tls-sni-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/mRC2viBR-USIfVdacaqcJuymOgHdY8GklltntDuz5fM/16908057", + "token": "X2wEu2cuwlB2Jm1zY471oPuRnM6uK9ZG89U2-gtA5TA" + }, + { + "type": "http-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/mRC2viBR-USIfVdacaqcJuymOgHdY8GklltntDuz5fM/16908058", + "token": "5-2o3K7S4LOqAnztR2de8g-zgCVsWe-bDpPNYPEb-Ds" + } + ], + "combinations": [ + [ + 2 + ], + [ + 0 + ], + [ + 1 + ] + ] + } + http_version: + recorded_at: Tue, 15 Nov 2016 16:36:46 GMT +- request: + method: post + uri: https://www.cloudflare.com/api_json.html + body: + encoding: US-ASCII + string: a=rec_new&z=substrakt.com&type=TXT&name=_acme-challenge.www.substrakt.com&content=FPaRZwkj4yv5SngqmxnpqXgqiIK3wmhHzCaC2MF6XDI&ttl=1&service_mode=1&tkn=4dd49e8832f9df199f3fd412069b4d014d38c&u=max%40substrakt.com + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + Content-Type: + - application/x-www-form-urlencoded + response: + status: + code: 200 + message: OK + headers: + Date: + - Tue, 15 Nov 2016 16:36:47 GMT + Content-Type: + - application/json + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Set-Cookie: + - CF_UALE=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0 + - __cfduid=d8a1a97834d10502cff8de4c585a0bf971479227806; expires=Wed, 15-Nov-17 + 16:36:46 GMT; path=/; domain=.cloudflare.com; HttpOnly + - vses2=50lmktv03kefegeghtlr14tuv4; path=/; domain=www.cloudflare.com; secure; + HttpOnly + Expires: + - Thu, 19 Nov 1981 08:52:00 GMT + Cache-Control: + - no-store, no-cache, must-revalidate, post-check=0, pre-check=0 + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + Content-Security-Policy: + - default-src 'self' https://*; script-src 'self' 'unsafe-inline' 'unsafe-eval' + https://* data:; img-src 'self' https://* data:; style-src 'self' 'unsafe-inline' + https://*; font-src 'self' https://* data:; frame-src https://*; connect-src + 'self' https://* wss://*.zopim.com data:; + X-Xss-Protection: + - 1; mode=block + Server: + - cloudflare-nginx + Cf-Ray: + - 30241fbdba213512-LHR + body: + encoding: ASCII-8BIT + string: '{"request":{"act":"rec_new"},"response":{"rec":{"obj":{"rec_id":"658605949","rec_hash":"d036ad8fc7ca1cbf7ef2ca02ac2c4d11","zone_name":"substrakt.com","name":"_acme-challenge.www.substrakt.com","display_name":"_acme-challenge.www","type":"TXT","prio":null,"content":"FPaRZwkj4yv5SngqmxnpqXgqiIK3wmhHzCaC2MF6XDI","display_content":"FPaRZwkj4yv5SngqmxnpqXgqiIK3wmhHzCaC2MF6XDI","ttl":"1","ttl_ceil":86400,"ssl_id":"5084311","ssl_status":"V","ssl_expires_on":null,"auto_ttl":1,"service_mode":"0","props":{"proxiable":0,"cloud_on":0,"cf_open":1,"vanity_lock":0,"ssl":1,"expired_ssl":0,"expiring_ssl":0,"pending_ssl":0}}}},"result":"success","msg":null}' + http_version: + recorded_at: Tue, 15 Nov 2016 16:36:47 GMT +- request: + method: post + uri: https://www.cloudflare.com/api_json.html + body: + encoding: US-ASCII + string: a=rec_new&z=substrakt.com&type=TXT&name=_acme-challenge.substrakt.com&content=2WybHhZOxToJIv0gd6_cE07iW4-BJdWCrvgW8s646KM&ttl=1&service_mode=1&tkn=4dd49e8832f9df199f3fd412069b4d014d38c&u=max%40substrakt.com + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + Content-Type: + - application/x-www-form-urlencoded + response: + status: + code: 200 + message: OK + headers: + Date: + - Tue, 15 Nov 2016 16:36:47 GMT + Content-Type: + - application/json + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Set-Cookie: + - CF_UALE=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0 + - __cfduid=d9e45b7fbc3042d31dc690a21958e8b3f1479227807; expires=Wed, 15-Nov-17 + 16:36:47 GMT; path=/; domain=.cloudflare.com; HttpOnly + - vses2=1o9ub6nqouq8cd3j7nroje53r4; path=/; domain=www.cloudflare.com; secure; + HttpOnly + Expires: + - Thu, 19 Nov 1981 08:52:00 GMT + Cache-Control: + - no-store, no-cache, must-revalidate, post-check=0, pre-check=0 + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + Content-Security-Policy: + - default-src 'self' https://*; script-src 'self' 'unsafe-inline' 'unsafe-eval' + https://* data:; img-src 'self' https://* data:; style-src 'self' 'unsafe-inline' + https://*; font-src 'self' https://* data:; frame-src https://*; connect-src + 'self' https://* wss://*.zopim.com data:; + X-Xss-Protection: + - 1; mode=block + Server: + - cloudflare-nginx + Cf-Ray: + - 30241fc2befc34c4-LHR + body: + encoding: ASCII-8BIT + string: '{"request":{"act":"rec_new"},"response":{"rec":{"obj":{"rec_id":"658605958","rec_hash":"c386be8b50de176e452b4b1065dc46af","zone_name":"substrakt.com","name":"_acme-challenge.substrakt.com","display_name":"_acme-challenge","type":"TXT","prio":null,"content":"2WybHhZOxToJIv0gd6_cE07iW4-BJdWCrvgW8s646KM","display_content":"2WybHhZOxToJIv0gd6_cE07iW4-BJdWCrvgW8s646KM","ttl":"1","ttl_ceil":86400,"ssl_id":"5084311","ssl_status":"V","ssl_expires_on":null,"auto_ttl":1,"service_mode":"0","props":{"proxiable":0,"cloud_on":0,"cf_open":1,"vanity_lock":0,"ssl":1,"expired_ssl":0,"expiring_ssl":0,"pending_ssl":0}}}},"result":"success","msg":null}' + http_version: + recorded_at: Tue, 15 Nov 2016 16:36:47 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/challenge/VE0RYNsvF5-NR8DpGJNU1p6wb9BI7PFV0JojBsQdN00/16908053 + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiRmJPQXV5a3FRYzFnWDZmQ1JjMHBDakNDeTZTYjZmcnR0cVBhUDU4bXBQOCIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ0dWZ4T3ZwMTJuTk1nVlM0WVNSMEdUc2U0SlJfWjdxb3d1RHFELTJWTTd2YkdHU01HMklab2YyYTdJS1JoZ3dGM0lZN2xHWXBYT3hybUg5QkFKbWpLWXdPS1g1cFBJaktMRTY3cFVocVdidkVwOWdlSTltTWVjRzVaZ2tLRU9VQlZ2T2Fldkh4VTc4YlE4QmdWbVFqdTVHVDA4dGFkZXRzU21fX3NXYmE3U1YyeGRfQXFmY0dCUHNQeDFjV1FId08zMy0tY2MyWDVSTWwwTVNjS0trLUdyUUtQQkE0cGJySk45cmZXUTVLSTVCZUJ1WXJNcDRUdG5tWjg2RzFjN1pxVTlsNDVGWkNLemdEUExRcjNYVWxsQXN0UzdPOWE4VFhlc1JjbTBrQkRwcUpLMGozQWVHRG14bG5wY1lwNVhrMDdFQVZGYk5MeWhuWDQ4Y2hWZ0tGMzQ3RVV3R3pnQmJwWG96Wm5obEpaMDhUaVo2NkMwREo5S3NVNnFVcUdibTc0TjhQS3UyZm1FUlZlRlpSOFlZUWNaZWtQX1ByZkRONGpnZVhaUm01bUlMZDdNTy0wOXhaVFB1R2V0dlBfU0N1b0FRRmVra05CMHFjQUY1ak1NZW1VYVh5RFFrNHI1Nk5uNVFYRXk2bXRjRzdUaTB5WW13NVJMbzFXXzZnbUh2T1ZnTkh5Mk9WNkhRbDYyNmdXMk13MEZzbk9uYVJybzBVZC00aVBCQUhiWnhNU3JDVFhvTEJFMkZYck84bXpUdFVxLVB1NWIxejd1dk95a3JCRzNZVG96OVZtN3NKNHVseFZGaEJlWmtwTDN3Q2F0NDdsMEZNM2tJczZtSkdQTW14dXF3WDBYdVZqb1U2UVd2QzY5YWJlelE4b2hSMzlidkxsWjhaX2cwUy1GayJ9fQ","payload":"eyJyZXNvdXJjZSI6ImNoYWxsZW5nZSIsInR5cGUiOiJkbnMtMDEiLCJrZXlBdXRob3JpemF0aW9uIjoieHNlM3VSTFVlWVJJN08wRXdPTm52NzRnTUw3SjFUWVNCMHZsdkkweTNucy5QLUM0RzF6cWEtTE5SdXpmZmw5SEJ0RDFlX3Q1N2JXNk43VVQ1WDZ6RWdVIn0","signature":"Z5m5DWO2rSd6MlYujZ6wCb17Y1pF5Iij8yyZFDpXKUa99-P-5mKnHTMOoP6RA1tRQoUuictBvVUrvqXQ7EbnAeqf2P1jD8XBFVccjGNjrolNUWRv67Ew_3yoW0STsARJPhl3LnnpIfCpbo3rbeIJAy8II4sfWDz8hIhfVVK-F4bDfxEuUo9HrLjAJjlBUkz7EaH6wrz1P4Q5s2a-CCDQ2IbjOB09omrZ5gmcIPAACmXHuu7zfRINw6dNOQPZ9uv0-Fakx7PjwLA_vp0kp2l5hsyhCFJTbOHw4Inbgg3BjfykPNxQLVQiLdo09tZvUhBeqxXUVQMqNwiJzdQSFaUFngkb8tFdJe8JCY5t0wbP9T9g_nCvLhJD_TmGz1XMZW13-gjQcRTizOfSaouzHJZqYA6HZoy-5tNI84Z_yCVfQS7nSxHfvTtERueKTaM0f8PskqirCPtZOmlx4Vj4MYr4yOURXiBBqxjgEObawNIwnzQycbn2jSz9xIQZnAf-PbH78eelQg0P6AUkUl_6ngCz9DvHaEVp0PTkgVoHSo-8Kh4_81Flne6VSch4XjCHaJaFgb6_51xsg7uafxCusr8BWLVXnp8y_0tnxE5aN4BWgPVsCmXEFgGEHnetPdETicTqnJ8XGK7mqvmv9d_QgufCOmMaSeEkLjuXPsrczLlIYIA"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 202 + message: Accepted + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '337' + Boulder-Request-Id: + - aO_ssLwlD9LPzDXWgGRixJxu5DISt0LdCDGSYPL1f0E + Boulder-Requester: + - '496535' + Link: + - ;rel="up" + Location: + - https://acme-staging.api.letsencrypt.org/acme/challenge/VE0RYNsvF5-NR8DpGJNU1p6wb9BI7PFV0JojBsQdN00/16908053 + Replay-Nonce: + - 6Vc0rpw61lTA2cR_SS2hbay8ZdItqzEKKHBNdXTwjg8 + Expires: + - Tue, 15 Nov 2016 16:37:48 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 16:37:48 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "type": "dns-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/VE0RYNsvF5-NR8DpGJNU1p6wb9BI7PFV0JojBsQdN00/16908053", + "token": "xse3uRLUeYRI7O0EwONnv74gML7J1TYSB0vlvI0y3ns", + "keyAuthorization": "xse3uRLUeYRI7O0EwONnv74gML7J1TYSB0vlvI0y3ns.P-C4G1zqa-LNRuzffl9HBtD1e_t57bW6N7UT5X6zEgU" + } + http_version: + recorded_at: Tue, 15 Nov 2016 16:37:48 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/challenge/mRC2viBR-USIfVdacaqcJuymOgHdY8GklltntDuz5fM/16908056 + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiNlZjMHJwdzYxbFRBMmNSX1NTMmhiYXk4WmRJdHF6RUtLSEJOZFhUd2pnOCIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ0dWZ4T3ZwMTJuTk1nVlM0WVNSMEdUc2U0SlJfWjdxb3d1RHFELTJWTTd2YkdHU01HMklab2YyYTdJS1JoZ3dGM0lZN2xHWXBYT3hybUg5QkFKbWpLWXdPS1g1cFBJaktMRTY3cFVocVdidkVwOWdlSTltTWVjRzVaZ2tLRU9VQlZ2T2Fldkh4VTc4YlE4QmdWbVFqdTVHVDA4dGFkZXRzU21fX3NXYmE3U1YyeGRfQXFmY0dCUHNQeDFjV1FId08zMy0tY2MyWDVSTWwwTVNjS0trLUdyUUtQQkE0cGJySk45cmZXUTVLSTVCZUJ1WXJNcDRUdG5tWjg2RzFjN1pxVTlsNDVGWkNLemdEUExRcjNYVWxsQXN0UzdPOWE4VFhlc1JjbTBrQkRwcUpLMGozQWVHRG14bG5wY1lwNVhrMDdFQVZGYk5MeWhuWDQ4Y2hWZ0tGMzQ3RVV3R3pnQmJwWG96Wm5obEpaMDhUaVo2NkMwREo5S3NVNnFVcUdibTc0TjhQS3UyZm1FUlZlRlpSOFlZUWNaZWtQX1ByZkRONGpnZVhaUm01bUlMZDdNTy0wOXhaVFB1R2V0dlBfU0N1b0FRRmVra05CMHFjQUY1ak1NZW1VYVh5RFFrNHI1Nk5uNVFYRXk2bXRjRzdUaTB5WW13NVJMbzFXXzZnbUh2T1ZnTkh5Mk9WNkhRbDYyNmdXMk13MEZzbk9uYVJybzBVZC00aVBCQUhiWnhNU3JDVFhvTEJFMkZYck84bXpUdFVxLVB1NWIxejd1dk95a3JCRzNZVG96OVZtN3NKNHVseFZGaEJlWmtwTDN3Q2F0NDdsMEZNM2tJczZtSkdQTW14dXF3WDBYdVZqb1U2UVd2QzY5YWJlelE4b2hSMzlidkxsWjhaX2cwUy1GayJ9fQ","payload":"eyJyZXNvdXJjZSI6ImNoYWxsZW5nZSIsInR5cGUiOiJkbnMtMDEiLCJrZXlBdXRob3JpemF0aW9uIjoic2lSVTE1NGZzd0pMZ0hzVGdGeFctc3NIaU1mRTlTSHpRUWNueGVnOFh1TS5QLUM0RzF6cWEtTE5SdXpmZmw5SEJ0RDFlX3Q1N2JXNk43VVQ1WDZ6RWdVIn0","signature":"Kv4drTbMlt8hoeA0JGVra7YH-6zVdPN69jLBxBzGItk3xmpvqlwCawE5C_73IiMc1MTkoCWNDNyYJMfr_D2SSxnIPGFaqrWO6WT4d3xGuGLfDqrIxiFCZtEiB_FiMbTGq_UxahBXv8z7MJyxd4Nb-MGZUNxHW9M-rt5bIJ6m8T7ISfDyNofYVgEFq75jQilWkjcnNS1awop7NhzsBixY0UboQrauqzOpLr1J8tgsOxvFGvqYL9c-tBtm6_iMe4OViDTNOzB1T3WQO4t0ka78pozBuLYIdbPt4HVacjMyg_XFR8stlb7JTCHrZ61crVid60ZOU4r8EQ0h6PacNMCtdCPtP4nL62-CgXQsIR85ZyHaTFWLfryRgSbB8ljwWsRTonmyWiuoSO44s2FmBYNBrAOOM5K-4OHDDM2BJT2t5xtSv_Y1MCdWbPGnLB7Fp7Nq6xMsjVl8s9G7w0JK2Ybx2_3Gjk4xsQReHrPenp-pQU-wshMtpUPKA3JW7ms74WofZiz53tYO7yXCl5fv1mU2gUQxBALWH-uj6mNrXwaUyLwABx42My50IK-JrUPeXlUVwbFc5WZ90aRIl7WfjSNvsqp_r-fdD021QhUOxMRtvOiBOCrfoJhXsM1pC6-vCzrXM1fzFt6lQIXN55xv5pX3zSzjOaoBMRsEYER2Eh0Ep-I"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 202 + message: Accepted + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '337' + Boulder-Request-Id: + - Yq-sgvmLItpqBOZ4VA6wB1L_4CSp-1MEaTE6D02GzFs + Boulder-Requester: + - '496535' + Link: + - ;rel="up" + Location: + - https://acme-staging.api.letsencrypt.org/acme/challenge/mRC2viBR-USIfVdacaqcJuymOgHdY8GklltntDuz5fM/16908056 + Replay-Nonce: + - eXd79tQVWvkW40RyTJfXHdesDHZTrwVNsRuupxRJY2w + Expires: + - Tue, 15 Nov 2016 16:37:49 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 16:37:49 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "type": "dns-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/mRC2viBR-USIfVdacaqcJuymOgHdY8GklltntDuz5fM/16908056", + "token": "siRU154fswJLgHsTgFxW-ssHiMfE9SHzQQcnxeg8XuM", + "keyAuthorization": "siRU154fswJLgHsTgFxW-ssHiMfE9SHzQQcnxeg8XuM.P-C4G1zqa-LNRuzffl9HBtD1e_t57bW6N7UT5X6zEgU" + } + http_version: + recorded_at: Tue, 15 Nov 2016 16:37:49 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/new-cert + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiZVhkNzl0UVZXdmtXNDBSeVRKZlhIZGVzREhaVHJ3Vk5zUnV1cHhSSlkydyIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ0dWZ4T3ZwMTJuTk1nVlM0WVNSMEdUc2U0SlJfWjdxb3d1RHFELTJWTTd2YkdHU01HMklab2YyYTdJS1JoZ3dGM0lZN2xHWXBYT3hybUg5QkFKbWpLWXdPS1g1cFBJaktMRTY3cFVocVdidkVwOWdlSTltTWVjRzVaZ2tLRU9VQlZ2T2Fldkh4VTc4YlE4QmdWbVFqdTVHVDA4dGFkZXRzU21fX3NXYmE3U1YyeGRfQXFmY0dCUHNQeDFjV1FId08zMy0tY2MyWDVSTWwwTVNjS0trLUdyUUtQQkE0cGJySk45cmZXUTVLSTVCZUJ1WXJNcDRUdG5tWjg2RzFjN1pxVTlsNDVGWkNLemdEUExRcjNYVWxsQXN0UzdPOWE4VFhlc1JjbTBrQkRwcUpLMGozQWVHRG14bG5wY1lwNVhrMDdFQVZGYk5MeWhuWDQ4Y2hWZ0tGMzQ3RVV3R3pnQmJwWG96Wm5obEpaMDhUaVo2NkMwREo5S3NVNnFVcUdibTc0TjhQS3UyZm1FUlZlRlpSOFlZUWNaZWtQX1ByZkRONGpnZVhaUm01bUlMZDdNTy0wOXhaVFB1R2V0dlBfU0N1b0FRRmVra05CMHFjQUY1ak1NZW1VYVh5RFFrNHI1Nk5uNVFYRXk2bXRjRzdUaTB5WW13NVJMbzFXXzZnbUh2T1ZnTkh5Mk9WNkhRbDYyNmdXMk13MEZzbk9uYVJybzBVZC00aVBCQUhiWnhNU3JDVFhvTEJFMkZYck84bXpUdFVxLVB1NWIxejd1dk95a3JCRzNZVG96OVZtN3NKNHVseFZGaEJlWmtwTDN3Q2F0NDdsMEZNM2tJczZtSkdQTW14dXF3WDBYdVZqb1U2UVd2QzY5YWJlelE4b2hSMzlidkxsWjhaX2cwUy1GayJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1jZXJ0IiwiY3NyIjoiTUlJQ256Q0NBWWNDQVFJd0hERWFNQmdHQTFVRUF3d1JkM2QzTG5OMVluTjBjbUZyZEM1amIyMHdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEREVjVHlKNzhqdnFTdkdwZ01ndEtSRVhkdEN3SWF0bXhOMkhvaDFMRnNzYmJiQVFvOThwUmNEQWNsbVBIUWtjRFQ3Zk9TUTByOWJ1dXdqbFFXdF9tSUtucnZuVTk4R1lIVndmSkpNb2Y1bXZTcFVYSmM3ZE9FNUNCQ3VPaUFkMTZzM3ZLSzVzVkp0bkNjek1RSk5LM3hJazBYcVo4UHNXRVRGMmhuMUxKVERqaHpPNl9UaFFmZkl5c292NGNVaFIxR2MzZ09iZ04xeGIwZlpPUDRUNUJPU19UNWIzOEwxeHRnUlI4ek8weFVqRlgyM184RmtNSE9hOElkbW1NbzJkWnd6bHRpaE5nbXhrMk5oc1MtN2c5cGNVREhEQ3lXME5JTUt2TEJPN01TVTZ6dDg2SE9vQTFfaXQ1N3JSWWNuemRWN1I5blpyQkUyRm14ZHl3QldETzNBZ01CQUFHZ1BqQThCZ2txaGtpRzl3MEJDUTR4THpBdE1Dc0dBMVVkRVFRa01DS0NFWGQzZHk1emRXSnpkSEpoYTNRdVkyOXRnZzF6ZFdKemRISmhhM1F1WTI5dE1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQTMyT0UyYnAxVHdsOHVsMW1nYkpYU3ZRRldrUjFHZHA3U1VwOF9yQm5tWGU2NzNxRHlWZW0zazVqV3V0ajlxeWhxVVhNcGlsZnVvU3NZMWlsYVM1bXlPRmNScTlicDJPLUNhQkhjVTRJd1RnV3NTcUhHWU9Md2JKNFJpQUhqMGQyenBLSDZ4ZkJtN0xPUG8zeGR5WXlfMHVGMVM2N0cyTFE0MXJCQ3RGM1dVeEZzdU1KWVp5aEctdTlqS3hiYThfYUROdl9hX0g1dVJiblp6a2ZCQjZTS2xReldTZEl5Nk5aUmNESkFVdldWUS1fckhyRWZ5UFpRT2g4ZkI3R0EwYl9CbTVFQ05IbzZhSFA2RUt1aU90N0FMVjNlMW9xWFZPNTNnLWpCV19POGFpa05IWlZ3aEV5VE9pelRpZ19URy11TW54b1FDVExSWUNaVlZEblZkTU1pIn0","signature":"SpdHAa0GX11VzQTJHoxxoGkfUgcu3VHbGGetGMeN22skA4n-9cY5r2TjuUPVE-Xvh_7a6K6sOGIDDAOO4ERw6D8MWP9jL-IOF_i_g-RI5EHIcaaHLYoK94TLhV14fWIuXET89SYzai8XTHpnC36WC1_Voo-mNROk58ixv3EDNPgb8a3udzGKbY4mJ4RnTVlfUdyIbal9DMWqM-dUq55qFC0iBN_HLZsaYGyop6oHul67wOwYJueAGya2jcXfOwQSgoYM9FNnQmgewj1gXSXX7WyD8y20ZFTGi-bUAPut2IwM-goXbqZ3ZxGb0-qxMOAO2qN-FK7i-MONJo89A-3a6o48k8RrEPXE1Mfpl7hlmb_d1F1ByUGVVriBLpySu_zVN7-E2Oo1z2Jjgj6aVX-4jegcIRT3WLaqhTknu-MBuq1kUECyqrVEV9kTJzC95LNmVshlGXqZKldwjQjbWkkCc9TRub06n_MnqDubA63Xxmr7aWP4z0QcI3sHgs_aEyX46b4lkkbQZDCljYr0T3n6etrxbDkNm-01YZTH_uU5Fy_MsHyfNjdJqoAFIWW5kNnEUb8lPPqM-dyyAnpdSJOg1myNBkDgY9tBN3oJmws9SC16oqG8zqIBwryH5XUqP_6q06BfEGePR6WSpHA9IMZ-kU8HRO2IDgD_e-HxJg-sqD0"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 201 + message: Created + headers: + Server: + - nginx + Content-Type: + - application/pkix-cert + Content-Length: + - '1274' + Boulder-Request-Id: + - o2sSQ6w-CMLkztfeShm84diOMIyWc0MPcixq0UaDsIQ + Boulder-Requester: + - '496535' + Link: + - ;rel="up" + Location: + - https://acme-staging.api.letsencrypt.org/acme/cert/fa5edbfa9a06496a35270087cce7f7fcf871 + Replay-Nonce: + - nScLaMmUfBwal5ALVzgjcVt19xbwr_CkFVeJWIDn8Q8 + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Tue, 15 Nov 2016 16:37:49 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 16:37:49 GMT + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: !binary |- + MIIE9jCCA96gAwIBAgITAPpe2/qaBklqNScAh8zn9/z4cTANBgkqhkiG9w0B + AQsFADAiMSAwHgYDVQQDDBdGYWtlIExFIEludGVybWVkaWF0ZSBYMTAeFw0x + NjExMTUxNTM4MDBaFw0xNzAyMTMxNTM4MDBaMBwxGjAYBgNVBAMTEXd3dy5z + dWJzdHJha3QuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA + wxHE8ie/I76krxqYDILSkRF3bQsCGrZsTdh6IdSxbLG22wEKPfKUXAwHJZjx + 0JHA0+3zkkNK/W7rsI5UFrf5iCp6751PfBmB1cHySTKH+Zr0qVFyXO3ThOQg + QrjogHderN7yiubFSbZwnMzECTSt8SJNF6mfD7FhExdoZ9SyUw44czuv04UH + 3yMrKL+HFIUdRnN4Dm4DdcW9H2Tj+E+QTkv0+W9/C9cbYEUfMztMVIxV9t// + BZDBzmvCHZpjKNnWcM5bYoTYJsZNjYbEvu4PaXFAxwwsltDSDCrywTuzElOs + 7fOhzqANf4ree60WHJ83Ve0fZ2awRNhZsXcsAVgztwIDAQABo4ICKTCCAiUw + DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD + AjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBRttCc8h+f6uvzp6Na4hEU9pVZ+ + jzAfBgNVHSMEGDAWgBTAzANGuVggzFxycPPhLssgpvVoOjB4BggrBgEFBQcB + AQRsMGowMwYIKwYBBQUHMAGGJ2h0dHA6Ly9vY3NwLnN0Zy1pbnQteDEubGV0 + c2VuY3J5cHQub3JnLzAzBggrBgEFBQcwAoYnaHR0cDovL2NlcnQuc3RnLWlu + dC14MS5sZXRzZW5jcnlwdC5vcmcvMCsGA1UdEQQkMCKCDXN1YnN0cmFrdC5j + b22CEXd3dy5zdWJzdHJha3QuY29tMIH+BgNVHSAEgfYwgfMwCAYGZ4EMAQIB + MIHmBgsrBgEEAYLfEwEBATCB1jAmBggrBgEFBQcCARYaaHR0cDovL2Nwcy5s + ZXRzZW5jcnlwdC5vcmcwgasGCCsGAQUFBwICMIGeDIGbVGhpcyBDZXJ0aWZp + Y2F0ZSBtYXkgb25seSBiZSByZWxpZWQgdXBvbiBieSBSZWx5aW5nIFBhcnRp + ZXMgYW5kIG9ubHkgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBDZXJ0aWZpY2F0 + ZSBQb2xpY3kgZm91bmQgYXQgaHR0cHM6Ly9sZXRzZW5jcnlwdC5vcmcvcmVw + b3NpdG9yeS8wDQYJKoZIhvcNAQELBQADggEBAFlPuz21/BZCDpM8FVJrUM+G + qtfWNegAbf8i+zVs29vQ29B2V/vs1Cqex9PjiLTzAM2CdJSWK2HgxfYCcZpx + fzKymouCVZ9smdESoDxcHH6w0HZ4IukEp9D9vqbQw3+lNfhUDTVDPCGJ39i8 + LaX387X4xh5OVp/JwoKuQvW8gGdX0/uQ95mPfF44A2NAHkOIsqXst9hBVnNX + UBHmWjW5I2D0RvWCx3cSt7lbyRWCJdWdlZbUwmhP979pGsiR/C+yYwkbjoBt + a1j4L9hpDqHDOfYVKnWT3V/3SeisObEyYEtIK/7Tj051hlnu1Oiq2EExGbjH + kTRXUNrwz3Q5OAnveN8= + http_version: + recorded_at: Tue, 15 Nov 2016 16:37:49 GMT +- request: + method: get + uri: https://acme-staging.api.letsencrypt.org/acme/issuer-cert + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiblNjTGFNbVVmQndhbDVBTFZ6Z2pjVnQxOXhid3JfQ2tGVmVKV0lEbjhROCIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ0dWZ4T3ZwMTJuTk1nVlM0WVNSMEdUc2U0SlJfWjdxb3d1RHFELTJWTTd2YkdHU01HMklab2YyYTdJS1JoZ3dGM0lZN2xHWXBYT3hybUg5QkFKbWpLWXdPS1g1cFBJaktMRTY3cFVocVdidkVwOWdlSTltTWVjRzVaZ2tLRU9VQlZ2T2Fldkh4VTc4YlE4QmdWbVFqdTVHVDA4dGFkZXRzU21fX3NXYmE3U1YyeGRfQXFmY0dCUHNQeDFjV1FId08zMy0tY2MyWDVSTWwwTVNjS0trLUdyUUtQQkE0cGJySk45cmZXUTVLSTVCZUJ1WXJNcDRUdG5tWjg2RzFjN1pxVTlsNDVGWkNLemdEUExRcjNYVWxsQXN0UzdPOWE4VFhlc1JjbTBrQkRwcUpLMGozQWVHRG14bG5wY1lwNVhrMDdFQVZGYk5MeWhuWDQ4Y2hWZ0tGMzQ3RVV3R3pnQmJwWG96Wm5obEpaMDhUaVo2NkMwREo5S3NVNnFVcUdibTc0TjhQS3UyZm1FUlZlRlpSOFlZUWNaZWtQX1ByZkRONGpnZVhaUm01bUlMZDdNTy0wOXhaVFB1R2V0dlBfU0N1b0FRRmVra05CMHFjQUY1ak1NZW1VYVh5RFFrNHI1Nk5uNVFYRXk2bXRjRzdUaTB5WW13NVJMbzFXXzZnbUh2T1ZnTkh5Mk9WNkhRbDYyNmdXMk13MEZzbk9uYVJybzBVZC00aVBCQUhiWnhNU3JDVFhvTEJFMkZYck84bXpUdFVxLVB1NWIxejd1dk95a3JCRzNZVG96OVZtN3NKNHVseFZGaEJlWmtwTDN3Q2F0NDdsMEZNM2tJczZtSkdQTW14dXF3WDBYdVZqb1U2UVd2QzY5YWJlelE4b2hSMzlidkxsWjhaX2cwUy1GayJ9fQ","payload":"e30","signature":"JzwgYy6AXMI1B7pWj0n2uL9ZAS41KJmsfPmO5nkGOad8sdpzMNGPbcH2rYF7xwJMGk1feXynDgIalyIvJdx6HMrZXfMkiil537xY_zRtKicfZGpyfzEsBBH_dKiEHP0g61YmvgK5wwWoCQ6XjZ8vcNJ9wdz17SYIWhib_7iT4SKwjJwKmLoSe3sRtiCdDOrxYHlw1flzkITbocsRQNeIsTT-Lljb5pZMmmfHgKdbAaLjySsQSmhdBg2R9gn5gqV88R3d331L8YZcQcsd9_wWek9lQmGEyg6f_QD42gna-xIBpzE-mv9GV95F10gjEQrilpJ_3WKOPVZ62NLamdfe7VaonMApVU6oTjltvKTxG-2rr6MsH3IoqDaDp8Y4je1311RyPlFckhzr1Zo4WT3fJJC_h7cwouCIz2QrTzxlNjh1-_aLqxFVpJdNOVlI_txUNYhUaveidAOswX5M4M2NyptNJUnFlbTBUl1HHNNj03ASDjKCn4lyNvHUT-vKBzNzZSvV5o9fIVaxDqVuTsm0SgbmRisd8xf1UvHalcggMDE6tgZmioqigcazYYm0CDkCIHSaT1mOATcck5_5RYCH1tJtrjAHIz_0qo1d7zhm1es5KP28UYjruIAfO4bWsOY0bDhkan-HsDlOYSzuYjlmi6IDNv5L8uxWjPHRv7m8zkY"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Content-Type: + - application/pkix-cert + Content-Length: + - '1199' + Boulder-Request-Id: + - lcRF4REn_BN2kgZJgqKG91xxs0Au3cdIGlRCik6wfRY + Replay-Nonce: + - 7u8-i4WO5Xe_5ZOFTGcUZQv7jP1Fq4yViM8wCDXLMjY + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Tue, 15 Nov 2016 16:37:49 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 16:37:49 GMT + Connection: + - keep-alive + body: + encoding: ASCII-8BIT + string: !binary |- + MIIEqzCCApOgAwIBAgIRAIvhKg5ZRO08VGQx8JdhT+UwDQYJKoZIhvcNAQEL + BQAwGjEYMBYGA1UEAwwPRmFrZSBMRSBSb290IFgxMB4XDTE2MDUyMzIyMDc1 + OVoXDTM2MDUyMzIyMDc1OVowIjEgMB4GA1UEAwwXRmFrZSBMRSBJbnRlcm1l + ZGlhdGUgWDEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDtWKyS + Dn7rWZc5ggjz3ZB08jO4xti3uzINfD5sQ7Lj7hzetUT+wQob+iXSZkhnvx+I + vdbXF5/yt8aWPpUKnPymoLxsYiI5gQBLxNDzIec0OIaflWqAr29m7J8+NNtA + pEN8nZFnf3bhehZW7AxmS1m0ZnSsdHw0Fw+bgixPg2MQ9k9oefFeqa+7Kqdl + z5bbrUYV2volxhDFtnI4Mh8BiWCNxDH1Hizq+GKCcHsinDZWurCqder/afJB + nQs+SBSL6MVApHt+d35zjBD92fO2Je56dhMfzCgOKXeJ340WhW3TjD1zqLZX + eaCyUNRnfOmWZV8nEhtHOFbUCU7r/KkjMZO9AgMBAAGjgeMwgeAwDgYDVR0P + AQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMDMA0a5 + WCDMXHJw8+EuyyCm9Wg6MHoGCCsGAQUFBwEBBG4wbDA0BggrBgEFBQcwAYYo + aHR0cDovL29jc3Auc3RnLXJvb3QteDEubGV0c2VuY3J5cHQub3JnLzA0Bggr + BgEFBQcwAoYoaHR0cDovL2NlcnQuc3RnLXJvb3QteDEubGV0c2VuY3J5cHQu + b3JnLzAfBgNVHSMEGDAWgBTBJnSkikSg5vogKNhcI5pFiBh54DANBgkqhkiG + 9w0BAQsFAAOCAgEABYSu4Il+fI0MYU42OTmEj+1HqQ5DvyAeyCA6sGuZdwjF + UGeVOv3NnLyfofuUOjEbY5irFCDtnv+0ckukUZN9lz4Q2YjWGUpW4TTu3ieT + saC9AFvCSgNHJyWSVtWvB5XDxsqawl1KzHzzwr132bF2rtGtazSqVqK9E07s + GHMCf+zpDQVDVVGtqZPHwX3KqUtefE621b8RI6VCl4oD30Olf8pjuzG4JKBF + RFclzLRjo/h7IkkfjZ8wDa7faOjVXx6n+eUQ29cIMCzr8/rNWHS9pYGGQKJi + Y2xmVC9h12H99XyfzWE9vb5zKP3MVG6neX1hSdo7PEAb9fqRhHkqVsqUvJlI + RmvXvVKTwNCP3eCjRCCIPTAvjV+4ni786iXwwFYNz8l3PmPLCyQXWGohnJ8i + Bm+5nk7O2ynaPVW0U2W+pt2wSVuvdDM5zGv2f9ltNWUiYZHJ1mmO97jSY/6Y + fdOUH66iRtQtDkHBRdkNBsMbD+Em2TgBldtHNSJBfB3pm9FblgOcJ0FSWcUD + WJ7vO0+NTXlgrRofRT6pVywzxVo6dND0WzYlTWeUVsO40xJqhgUQRER9YLOL + xJ0O6C8i0xFxAMKOtSdodMB3RIwt7RFQ0uytn5Z5MqkYhlMI3J1tPRTp1nEt + 9fyGspBOO05gi148Qasp+3N+svqKomoQglNoAxU= + http_version: + recorded_at: Tue, 15 Nov 2016 16:37:49 GMT +recorded_with: VCR 3.0.3 diff --git a/test/fixtures/vcr_cassettes/new-reg-debug-2.yml b/test/fixtures/vcr_cassettes/new-reg-debug-2.yml new file mode 100644 index 0000000..248f7fd --- /dev/null +++ b/test/fixtures/vcr_cassettes/new-reg-debug-2.yml @@ -0,0 +1,361 @@ +--- +http_interactions: +- request: + method: head + uri: https://acme-staging.api.letsencrypt.org/acme/new-reg + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept: + - "*/*" + response: + status: + code: 405 + message: Method Not Allowed + headers: + Server: + - nginx + Content-Type: + - application/problem+json + Content-Length: + - '91' + Allow: + - POST + Boulder-Request-Id: + - 420HoWAXBZhJc70rmv_eKJfYqeOiYWbpfJA9-0wwudA + Replay-Nonce: + - VKSfQsXUjiVU7zaq4tJA2yDCwEK_R7gBRfmCHeVmGW0 + Expires: + - Tue, 15 Nov 2016 16:26:46 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 16:26:46 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: '' + http_version: + recorded_at: Tue, 15 Nov 2016 16:26:46 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/new-reg + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiVktTZlFzWFVqaVZVN3phcTR0SkEyeURDd0VLX1I3Z0JSZm1DSGVWbUdXMCIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ5V0hGYjNPV0NqQnBDdXN1WUhZQnFCdDR5WDdwbmhfMTF0REYxUENWUTg1RkltRzlwX0xrYU5oVVE0NENaMFJXZXpyenB1ODBzNjNxSXM5SFZVeVJzUnRObnNBMjgyUnZraDhXclQ0VnViY2FnOXFNaExTbkVweGdURURRSy1oNnVGd0xqam9MQktyVXZiMmZiUFVReENhaTBFbGFKOG91TndtR0VJcHVtYWpoYy0wV041bXRFSWY1Y3NFOXdCYXF1VkRCSURadkVsWVlkeTdSaW41ZVpTYmNMNHNUUmM3TWFncDN3STVRclJyLWl6aXJldmRTVmNKVVVvNHJiUzRtNmdpbTNvZGZrXzVmRS1Yb0JXQ08tSWxYNi1GNnpCdk5aOGdhOTF2cmZVRDRhT19VakNYZWFZRmhNVWx2Smpnc1U5blFaaUdBSGN1bkJ3NmV3RHp4eVZfbFEyLVc2SDhHTkZpVGwzWHJIcExsSl9NQXJkbEZYUllTOGtHV1dsYVJ2SGttdHU2NjZPSFNaT1NYUHFqR1cwLTNab0NONHlwSzNQY1VLdEozZ2Z2TDQ3X0V2REw0bWdKbW5LeXhObzQwS2pTMGFOOVJpSTRQMWxRZWdxT3EtdV83VExGeHRKVUZoSW1PcU0wYUxqbkZyTk1FWUxZbFBhazJQMGNlNFgzYlJ0MzJvVzE3NmJ0S1hQMlV2WncyYVBGck9hQmwyb0huVmtUQnJ5ZTRxbm1XTUlHbDFTeTVvTGZORWd2Vi1RdHVwdUloQVNhSm5oRk9PTWx2bzdmeDZjQ1NxWjhERllZY3h0QS1aejVCMHhFTzBFTGVwOTc5bFRlc1pDRXhyS0tEYkhfYlNCYUxwVXZ1U0FacTFfV0hoSEl1SllET28tbkF0QTFwSEJsMi0yVSJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1yZWciLCJjb250YWN0IjpbIm1haWx0bzpkZXZAc3Vic3RyYWt0LmNvbSJdfQ","signature":"o6PbqBFzL7f4V9_b1X76Dij4Yc5n0WkooeUfutYgBm-3k_IfmmnvKysKTEfPw1O7r0BiXXJRgugxW6fShAkFvqXq5o6boU2N9zuy0f-A8i3IsoRZjr6cFd7GuENc55jOuPDgcHPvoRMnccUOrKA5feov3lhD-TYU_aV2qJUnaEBKuFuX_wALAk74Luq2plI0p3KtmH5TzFrQUhr36mF59nmSlXdZzvLt2I4azOb7oC9qgAGZdEoBIJc-FHHEkm2BK8VWts15Ypbosjvny0RjBXUH3dP82zVoFLuVvmYAhex8RmvBWk4Whqo-0kTlzeBfbhcHmtFc-20aVqkHzTsMpvFpsR_LyJ7JElKld8BdikplXmm2LIKqOTSxvikqvGdrEA6FgmiIG2ny372BO1lh_JpIorZeEMD2QJb3WCxdfTohL6Tog0lolp_50FcZfURMGMdACEn_wbrk0eF1I0XUD7Su40_5nbYRDjmjrHym4R7G7I3GcBasXUb2wqK22RklEUw0co38wuzIMbPyQICcC4M1AM42tt7S1EyQ2Y1bQpB8S1sShmIGYy-QnNYvI_O_UJeQW_rOGAxR2YFuQ8vjHxN_-ncgEszrjhtx1FmuP0UG_aAEehvaeu7t5rrz1BpZ41_KONfHz30_APCnUOnIT7l-jkyXbZf3ZS99F-uaWjs"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 201 + message: Created + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '914' + Boulder-Request-Id: + - ZJ9VURsWuEDZmRV5ygkjYkt153OwrL9oBN-orBG55AY + Boulder-Requester: + - '496517' + Link: + - ;rel="next" + - ;rel="terms-of-service" + Location: + - https://acme-staging.api.letsencrypt.org/acme/reg/496517 + Replay-Nonce: + - Z9zv7WMKz-ZwH6ihOS1Jb9UIHYnHOMuKCYUOI_MTiHI + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Tue, 15 Nov 2016 16:26:47 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 16:26:47 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "id": 496517, + "key": { + "kty": "RSA", + "n": "yWHFb3OWCjBpCusuYHYBqBt4yX7pnh_11tDF1PCVQ85FImG9p_LkaNhUQ44CZ0RWezrzpu80s63qIs9HVUyRsRtNnsA282Rvkh8WrT4Vubcag9qMhLSnEpxgTEDQK-h6uFwLjjoLBKrUvb2fbPUQxCai0ElaJ8ouNwmGEIpumajhc-0WN5mtEIf5csE9wBaquVDBIDZvElYYdy7Rin5eZSbcL4sTRc7Magp3wI5QrRr-izirevdSVcJUUo4rbS4m6gim3odfk_5fE-XoBWCO-IlX6-F6zBvNZ8ga91vrfUD4aO_UjCXeaYFhMUlvJjgsU9nQZiGAHcunBw6ewDzxyV_lQ2-W6H8GNFiTl3XrHpLlJ_MArdlFXRYS8kGWWlaRvHkmtu666OHSZOSXPqjGW0-3ZoCN4ypK3PcUKtJ3gfvL47_EvDL4mgJmnKyxNo40KjS0aN9RiI4P1lQegqOq-u_7TLFxtJUFhImOqM0aLjnFrNMEYLYlPak2P0ce4X3bRt32oW176btKXP2UvZw2aPFrOaBl2oHnVkTBrye4qnmWMIGl1Sy5oLfNEgvV-QtupuIhASaJnhFOOMlvo7fx6cCSqZ8DFYYcxtA-Zz5B0xEO0ELep979lTesZCExrKKDbH_bSBaLpUvuSAZq1_WHhHIuJYDOo-nAtA1pHBl2-2U", + "e": "AQAB" + }, + "contact": [ + "mailto:dev@substrakt.com" + ], + "initialIp": "213.123.191.198", + "createdAt": "2016-11-15T16:26:47.787178899Z", + "Status": "" + } + http_version: + recorded_at: Tue, 15 Nov 2016 16:26:47 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/reg/496517 + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiWjl6djdXTUt6LVp3SDZpaE9TMUpiOVVJSFluSE9NdUtDWVVPSV9NVGlISSIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ5V0hGYjNPV0NqQnBDdXN1WUhZQnFCdDR5WDdwbmhfMTF0REYxUENWUTg1RkltRzlwX0xrYU5oVVE0NENaMFJXZXpyenB1ODBzNjNxSXM5SFZVeVJzUnRObnNBMjgyUnZraDhXclQ0VnViY2FnOXFNaExTbkVweGdURURRSy1oNnVGd0xqam9MQktyVXZiMmZiUFVReENhaTBFbGFKOG91TndtR0VJcHVtYWpoYy0wV041bXRFSWY1Y3NFOXdCYXF1VkRCSURadkVsWVlkeTdSaW41ZVpTYmNMNHNUUmM3TWFncDN3STVRclJyLWl6aXJldmRTVmNKVVVvNHJiUzRtNmdpbTNvZGZrXzVmRS1Yb0JXQ08tSWxYNi1GNnpCdk5aOGdhOTF2cmZVRDRhT19VakNYZWFZRmhNVWx2Smpnc1U5blFaaUdBSGN1bkJ3NmV3RHp4eVZfbFEyLVc2SDhHTkZpVGwzWHJIcExsSl9NQXJkbEZYUllTOGtHV1dsYVJ2SGttdHU2NjZPSFNaT1NYUHFqR1cwLTNab0NONHlwSzNQY1VLdEozZ2Z2TDQ3X0V2REw0bWdKbW5LeXhObzQwS2pTMGFOOVJpSTRQMWxRZWdxT3EtdV83VExGeHRKVUZoSW1PcU0wYUxqbkZyTk1FWUxZbFBhazJQMGNlNFgzYlJ0MzJvVzE3NmJ0S1hQMlV2WncyYVBGck9hQmwyb0huVmtUQnJ5ZTRxbm1XTUlHbDFTeTVvTGZORWd2Vi1RdHVwdUloQVNhSm5oRk9PTWx2bzdmeDZjQ1NxWjhERllZY3h0QS1aejVCMHhFTzBFTGVwOTc5bFRlc1pDRXhyS0tEYkhfYlNCYUxwVXZ1U0FacTFfV0hoSEl1SllET28tbkF0QTFwSEJsMi0yVSJ9fQ","payload":"eyJyZXNvdXJjZSI6InJlZyIsImFncmVlbWVudCI6Imh0dHBzOi8vbGV0c2VuY3J5cHQub3JnL2RvY3VtZW50cy9MRS1TQS12MS4xLjEtQXVndXN0LTEtMjAxNi5wZGYifQ","signature":"Jgh71n49Q2KX0dK0qn0ID8f4Phn5p-BW-tpvxfL_Nr3hudN-s6rL1vCJIGPujlB0_GNkHEADVpvugTCtD6-lyvGsRESVLUY_kOU4GsH9wUmnatKMQpqhJHRSXg6-hvyR3olHEwUNvqwIOWmYhPSPHAdcQwvkFSm9LNXIwXP780AhkmfjPIYIrYgAb6AigPEH2HcLha08oyAtUR5t5fe9yc9IEukU8HhhSfsTUcaUCkQY39tAxtwv6lzooFNSqFChRN3QrW1jR5JaO-94k7p1abaBa2Y2A7VhHQ-lqDsEM-tJ9G1_KH1kDDldIvqr-DEskoCdHH0TYwkg3oKPlfeV52N8F12yJYxbiNT80tifUzbj_Jif5F-toA9wClVH0z5jynFk98keiSV51YdjcxuM15UAJ6NnkEthJbNUxXFoYgQaCHRdPB2qWEQgt3FIMDn6mjyGjONC6M6DE4bRcqUkAK3N8pEffOL-MnspMU0PnDuAo0RlF8UB6WESgHQc624iNLpadp8QiFEvX5HwEsggm_pP4_5UFGO-CoeG11iOEQNdMkYrJr8H8VsWpiTa4GGzyg0P-USmBpW34Rcmb3KpdlJ_KgiuxFru6z8STOyI8ktkbZ14QY23H8wGbMVNnpi--BjxJYLqhU2yr4PlPdKmuYI1uPwVWKkjyshQ3JrrlH0"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 202 + message: Accepted + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '987' + Boulder-Request-Id: + - iPmcCUnnrlTqj2iQgQlDtmZ8i8EGY886YnlK402mlZg + Boulder-Requester: + - '496517' + Link: + - ;rel="next" + - ;rel="terms-of-service" + Replay-Nonce: + - ziaYyUQTW8Ce4FlnRDTGEz5ux4at_96HdTG1lBOb-24 + Expires: + - Tue, 15 Nov 2016 16:26:48 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 16:26:48 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "id": 496517, + "key": { + "kty": "RSA", + "n": "yWHFb3OWCjBpCusuYHYBqBt4yX7pnh_11tDF1PCVQ85FImG9p_LkaNhUQ44CZ0RWezrzpu80s63qIs9HVUyRsRtNnsA282Rvkh8WrT4Vubcag9qMhLSnEpxgTEDQK-h6uFwLjjoLBKrUvb2fbPUQxCai0ElaJ8ouNwmGEIpumajhc-0WN5mtEIf5csE9wBaquVDBIDZvElYYdy7Rin5eZSbcL4sTRc7Magp3wI5QrRr-izirevdSVcJUUo4rbS4m6gim3odfk_5fE-XoBWCO-IlX6-F6zBvNZ8ga91vrfUD4aO_UjCXeaYFhMUlvJjgsU9nQZiGAHcunBw6ewDzxyV_lQ2-W6H8GNFiTl3XrHpLlJ_MArdlFXRYS8kGWWlaRvHkmtu666OHSZOSXPqjGW0-3ZoCN4ypK3PcUKtJ3gfvL47_EvDL4mgJmnKyxNo40KjS0aN9RiI4P1lQegqOq-u_7TLFxtJUFhImOqM0aLjnFrNMEYLYlPak2P0ce4X3bRt32oW176btKXP2UvZw2aPFrOaBl2oHnVkTBrye4qnmWMIGl1Sy5oLfNEgvV-QtupuIhASaJnhFOOMlvo7fx6cCSqZ8DFYYcxtA-Zz5B0xEO0ELep979lTesZCExrKKDbH_bSBaLpUvuSAZq1_WHhHIuJYDOo-nAtA1pHBl2-2U", + "e": "AQAB" + }, + "contact": [ + "mailto:dev@substrakt.com" + ], + "agreement": "https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf", + "initialIp": "213.123.191.198", + "createdAt": "2016-11-15T16:26:47Z", + "Status": "" + } + http_version: + recorded_at: Tue, 15 Nov 2016 16:26:48 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/new-authz + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiemlhWXlVUVRXOENlNEZsblJEVEdFejV1eDRhdF85NkhkVEcxbEJPYi0yNCIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ5V0hGYjNPV0NqQnBDdXN1WUhZQnFCdDR5WDdwbmhfMTF0REYxUENWUTg1RkltRzlwX0xrYU5oVVE0NENaMFJXZXpyenB1ODBzNjNxSXM5SFZVeVJzUnRObnNBMjgyUnZraDhXclQ0VnViY2FnOXFNaExTbkVweGdURURRSy1oNnVGd0xqam9MQktyVXZiMmZiUFVReENhaTBFbGFKOG91TndtR0VJcHVtYWpoYy0wV041bXRFSWY1Y3NFOXdCYXF1VkRCSURadkVsWVlkeTdSaW41ZVpTYmNMNHNUUmM3TWFncDN3STVRclJyLWl6aXJldmRTVmNKVVVvNHJiUzRtNmdpbTNvZGZrXzVmRS1Yb0JXQ08tSWxYNi1GNnpCdk5aOGdhOTF2cmZVRDRhT19VakNYZWFZRmhNVWx2Smpnc1U5blFaaUdBSGN1bkJ3NmV3RHp4eVZfbFEyLVc2SDhHTkZpVGwzWHJIcExsSl9NQXJkbEZYUllTOGtHV1dsYVJ2SGttdHU2NjZPSFNaT1NYUHFqR1cwLTNab0NONHlwSzNQY1VLdEozZ2Z2TDQ3X0V2REw0bWdKbW5LeXhObzQwS2pTMGFOOVJpSTRQMWxRZWdxT3EtdV83VExGeHRKVUZoSW1PcU0wYUxqbkZyTk1FWUxZbFBhazJQMGNlNFgzYlJ0MzJvVzE3NmJ0S1hQMlV2WncyYVBGck9hQmwyb0huVmtUQnJ5ZTRxbm1XTUlHbDFTeTVvTGZORWd2Vi1RdHVwdUloQVNhSm5oRk9PTWx2bzdmeDZjQ1NxWjhERllZY3h0QS1aejVCMHhFTzBFTGVwOTc5bFRlc1pDRXhyS0tEYkhfYlNCYUxwVXZ1U0FacTFfV0hoSEl1SllET28tbkF0QTFwSEJsMi0yVSJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1hdXRoeiIsImlkZW50aWZpZXIiOnsidHlwZSI6ImRucyIsInZhbHVlIjoid3d3LnN1YnN0cmFrdC5jb20ifX0","signature":"vVv5ZLhcVPORb597oQLMFdgPWUQ8KY2Mx98YxhcJO01Dl--4XIf0W_oooMUP97_dRCQ9xHOW1s4cbB7u-6WbUAzjzFNmwaFbGYDodJlj18ajdJUbqZg1Iay4nvYBUB1ENlcn9nevQ5xXb33QaICPNy7Dnni-9hOKw7rVUxREsTGdEPeKYsVVwAwyL1s_aCCGZ1VDDme1typkMuC23o3vHzreceYE6b4MXF8o-FDCYBcuDUCS0JllJbuDJhPTEc51cu_eDeaqSLxxmDemCAEgFllnw1b_NqNAzCDsK5H090avvVdG0L8cdCMwWR8KDfKNIS0uA25NyQsNvzKGJo3jXEWD2cHnP1ADQMglAZmhH6NZnq2c60FHxMgGucsg2na0yN5GfG1yF7nTyko1njILcfHOic3YT1YxQt0KFQqz1ZfC7rjE96UDsNg9f6W8baGUB07CiP_4AZZg870TWc8ERp7RZMhpvtM35NOb9weRZUZDkMwLLDKAhQxQNgyHSAsl_ZcPOy4OQeHm-iFsvJQCrRqAVkCqcmKaAj8vwPLtRNZQjSEjcFKwcCIoYdBehylpelBv20GALJ12xGO0lSr1ztuOjRIurnP5O2d8b3vsN2CsZ2K4EgIrlxvRXYeeAy9M_kb9ioZ3XTgu9UzuRlah-ymHQi9D3Kep0G2JvvaCKLI"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 201 + message: Created + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '1011' + Boulder-Request-Id: + - CZWjVTdOQk5g4yVsokrZIqsxY6xXxzFIjFk_T-Q2JeE + Boulder-Requester: + - '496517' + Link: + - ;rel="next" + Location: + - https://acme-staging.api.letsencrypt.org/acme/authz/_M2pOUKiPq2r9VHwjRDlFVIpuElXSVwbIGouX-IBN2E + Replay-Nonce: + - XuSjRweNlG5agu-j1-99CmcPqAIsKzUT4hrwb3QJ7Co + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Tue, 15 Nov 2016 16:26:48 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 16:26:48 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "identifier": { + "type": "dns", + "value": "www.substrakt.com" + }, + "status": "pending", + "expires": "2016-11-22T16:26:48.579388398Z", + "challenges": [ + { + "type": "dns-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/_M2pOUKiPq2r9VHwjRDlFVIpuElXSVwbIGouX-IBN2E/16907876", + "token": "Eh5Vrd9Vnzcw3ZECvt3QnT6tzGnTI4ZjCuJrb5FFUSY" + }, + { + "type": "tls-sni-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/_M2pOUKiPq2r9VHwjRDlFVIpuElXSVwbIGouX-IBN2E/16907877", + "token": "N3FfTUQSPUSrn04FrLFLBOj-005hgjh3p07c8ZJmZbo" + }, + { + "type": "http-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/_M2pOUKiPq2r9VHwjRDlFVIpuElXSVwbIGouX-IBN2E/16907878", + "token": "bvBr7Ca6BFIDWeC-I-9IoU9QugVuBiyl4nfIfZYGBfw" + } + ], + "combinations": [ + [ + 0 + ], + [ + 1 + ], + [ + 2 + ] + ] + } + http_version: + recorded_at: Tue, 15 Nov 2016 16:26:48 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/new-authz + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiWHVTalJ3ZU5sRzVhZ3UtajEtOTlDbWNQcUFJc0t6VVQ0aHJ3YjNRSjdDbyIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ5V0hGYjNPV0NqQnBDdXN1WUhZQnFCdDR5WDdwbmhfMTF0REYxUENWUTg1RkltRzlwX0xrYU5oVVE0NENaMFJXZXpyenB1ODBzNjNxSXM5SFZVeVJzUnRObnNBMjgyUnZraDhXclQ0VnViY2FnOXFNaExTbkVweGdURURRSy1oNnVGd0xqam9MQktyVXZiMmZiUFVReENhaTBFbGFKOG91TndtR0VJcHVtYWpoYy0wV041bXRFSWY1Y3NFOXdCYXF1VkRCSURadkVsWVlkeTdSaW41ZVpTYmNMNHNUUmM3TWFncDN3STVRclJyLWl6aXJldmRTVmNKVVVvNHJiUzRtNmdpbTNvZGZrXzVmRS1Yb0JXQ08tSWxYNi1GNnpCdk5aOGdhOTF2cmZVRDRhT19VakNYZWFZRmhNVWx2Smpnc1U5blFaaUdBSGN1bkJ3NmV3RHp4eVZfbFEyLVc2SDhHTkZpVGwzWHJIcExsSl9NQXJkbEZYUllTOGtHV1dsYVJ2SGttdHU2NjZPSFNaT1NYUHFqR1cwLTNab0NONHlwSzNQY1VLdEozZ2Z2TDQ3X0V2REw0bWdKbW5LeXhObzQwS2pTMGFOOVJpSTRQMWxRZWdxT3EtdV83VExGeHRKVUZoSW1PcU0wYUxqbkZyTk1FWUxZbFBhazJQMGNlNFgzYlJ0MzJvVzE3NmJ0S1hQMlV2WncyYVBGck9hQmwyb0huVmtUQnJ5ZTRxbm1XTUlHbDFTeTVvTGZORWd2Vi1RdHVwdUloQVNhSm5oRk9PTWx2bzdmeDZjQ1NxWjhERllZY3h0QS1aejVCMHhFTzBFTGVwOTc5bFRlc1pDRXhyS0tEYkhfYlNCYUxwVXZ1U0FacTFfV0hoSEl1SllET28tbkF0QTFwSEJsMi0yVSJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1hdXRoeiIsImlkZW50aWZpZXIiOnsidHlwZSI6ImRucyIsInZhbHVlIjoic3Vic3RyYWt0LmNvbSJ9fQ","signature":"lKWqZT5IQdGuaXXkAhZvnjsqBxxGo5nrjDkhLG2OB5tHe4BmUJ54VdsRFEv-obm514_DtFV8FR8erl_mQkx_gO7hShlD_WDi0QToPJB9MMyNNt0-gJPUbSNbeDSjVwU1HaVggBaPhSgdxBzMGuyR9fJX27aNtsp-IfwgNiu2Cj9vtdt1LQ9Dto7phd-A_fYKCAraBBDPawMHe8GUWlMoYYOP3lNjnWUCa_SFK8Q5sWmPdS1PtHxX1xCOZZRUSr7VOgfAWLNFGNf2WCtaCGGSuZBYlnl4Iy4WhAcZAnMEcTPZhkdM6iSLt-iQJPqlY-fBTCD_GX7V8tjaO5Jug3jYcVFgBTPIkAJVFA41U-ywhjMw-8SFJ_xp4TN_TMXy2jR9dG2OlVqExqprp0UVbhkzAS5YW5uMZT77DF_drZaV1LN_DSm1crjIrsZZ5r6gEfmAAbeXhQJUC0AYNRZMoVzk2RA5G1gNn91gaijmQHxagseME2YbKXi5rVj7SbpyN6FtFfRaQdFh75A54jVbCl8kkQprvHBuaBuCol2oJlj0Epji3ElUBxxpShtTJv-fBj2js1NqCS5vs1CFUctQkdToGBpNTTOz-STqwIMbG8wcd240zBzZJ5iqcX_SG7wpbYBnY8eTxxJCHqgDZouHnCM17hOy2F3jP-ALmXUjqjmGYd4"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 201 + message: Created + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '1007' + Boulder-Request-Id: + - L8InKaf5bKfqoj_ucCHClikRy3uGPBC86jF4CkDUvaw + Boulder-Requester: + - '496517' + Link: + - ;rel="next" + Location: + - https://acme-staging.api.letsencrypt.org/acme/authz/d5edjqYDWl0iXXfgxVC9VTAsWFxraH7boqRk8_k2cSw + Replay-Nonce: + - XK3TcnCS5y7UrMXZz1FBpERoFrCOFa9qkyAR0qNzxVE + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Tue, 15 Nov 2016 16:26:49 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 16:26:49 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "identifier": { + "type": "dns", + "value": "substrakt.com" + }, + "status": "pending", + "expires": "2016-11-22T16:26:49.029240851Z", + "challenges": [ + { + "type": "http-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/d5edjqYDWl0iXXfgxVC9VTAsWFxraH7boqRk8_k2cSw/16907879", + "token": "G4AsCzR9u1dsKS0S-uv9JYujuzk-YQLwVh3F2WJeI4w" + }, + { + "type": "dns-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/d5edjqYDWl0iXXfgxVC9VTAsWFxraH7boqRk8_k2cSw/16907880", + "token": "dC8zcW-yrzcV5tcC8WW9kP_dYcD4m86oo5lA1ftr-Cw" + }, + { + "type": "tls-sni-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/d5edjqYDWl0iXXfgxVC9VTAsWFxraH7boqRk8_k2cSw/16907881", + "token": "gUsRLXxSdX50yvZt4NnqL4Gf3KZmuS8SjJfaHLnz8_U" + } + ], + "combinations": [ + [ + 1 + ], + [ + 0 + ], + [ + 2 + ] + ] + } + http_version: + recorded_at: Tue, 15 Nov 2016 16:26:49 GMT +recorded_with: VCR 3.0.3 diff --git a/test/fixtures/vcr_cassettes/new-reg-debug-3.yml b/test/fixtures/vcr_cassettes/new-reg-debug-3.yml new file mode 100644 index 0000000..b38023c --- /dev/null +++ b/test/fixtures/vcr_cassettes/new-reg-debug-3.yml @@ -0,0 +1,647 @@ +--- +http_interactions: +- request: + method: head + uri: https://acme-staging.api.letsencrypt.org/acme/new-reg + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept: + - "*/*" + response: + status: + code: 405 + message: Method Not Allowed + headers: + Server: + - nginx + Content-Type: + - application/problem+json + Content-Length: + - '91' + Allow: + - POST + Boulder-Request-Id: + - gQZhv5OitYQ0_uglsePMfep2ieCGIWjLbbdqgLJyzJU + Replay-Nonce: + - WWi7MkLBE8EL3aMZTD7VHX7O0qErOAjqjaS4RIb-9NM + Expires: + - Tue, 15 Nov 2016 16:38:57 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 16:38:57 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: '' + http_version: + recorded_at: Tue, 15 Nov 2016 16:38:57 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/new-reg + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiV1dpN01rTEJFOEVMM2FNWlREN1ZIWDdPMHFFck9BanFqYVM0UkliLTlOTSIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ6SlRRcVptNlVPbjZhdDEzZzJBNHNWSGJlQktXbURhcjBLWE4wQW9qLS1SUEV0d0F0cm5DYTZFWjNNcGszRTNlUWtsSU4xY2s4M2xMUUN5WjJCVFR5RkdrMTBwNFFranhFRmRwRkszUzBHb2RsN2hxekVFOXdSVUJHaFZZWk53aUVfc015M0pEQVlJYzdLcHdwWm1KaXRoRjRkcE5LblpyNzlBcnhDa2MydHdRSnFDRGlqc0hsMWJpQjNkRGNaSFFSODZYOTlNN3h4ZHUyYVlfaXhabWIxNHBkeGdFRE9taEdDR2pZQWhrQnNlYU1NSnM4Z3RlNlBFZXFiUlpFdnhuUndOZkpETExHaFFHbU9VWXBqUG9UZzNtdnZaTkUybFdfdDJaeWw4STNEc2U5TEgySlZ5NXEwMUNiSVNyT2JFMkhDclJXWDkzSTlLaU9mZXRmV0RVUGVha3F6RUhWNWJFczl0a0stZVhFQTk4NFN5dTJoVjlaWTdBLWlOdGtDX2lSdnA0X0VrUFF6WUdxUmtuaEFiUTBPVWJjNVlGZ0UyX2RMdHhNRjZ3VFEzSFE2U2hBeXdqdldXR2d3VWlkME9hNFg5b29qalJ5NXNySlcwRmVBNGNiTzhKdTBtQkZNX002czVPdjdfa3RhVzlrQi15OWZSeXptOENMOWEzVjhjXzlidHMyajdURGNiM0RXRnJsMnhEWVU5LTJ2S1UweW1aUDZYVWE4ZlMweTJSMXBYTW1jQ292a3V1OWFJSUdjSmdmRUxCalVseWRIMU5xX2NvNHlobXRQeWFCSmR3V2I1TURSRjIyS3BEdHlxMDZvX1A5bG54RjAtRzRmSUtFVENmNFVDSGNESFU1YWpiLXJVRk1VVTViTjZiU0wybXVnV1VJOHhHX1VkbmJLayJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1yZWciLCJjb250YWN0IjpbIm1haWx0bzpkZXZAc3Vic3RyYWt0LmNvbSJdfQ","signature":"dOpkHUfPaqcZLRilK6DeSRdI4i1f4Sq6MYnWQZSItuQOo30_Nm5FoKkfXrVEMXG0zoCTBLYs93Xt9Wa6TncJ1DV45o5fbGgX3mXaYEp51n5lUq8jOA--pnUuBiJgyKYOHJOXUorVDItsenpFPElhmeusHiZkc3sQLKvixIf0ddxftyQ09Z50PLX8d-OwQdiPv2w-Qi2gEPn1MfGw2Smvwsrew2uYl8qpkR6t_XYbN8_M_f8onupIzPskX6yPPvMZGVt3WrPkrNkIam2RpTtU4HdCIfzbKvLZmwwkKWXQa_PwkoumuGkADDMzen2FJFj7gspOtRCGCZmDI7jnvN3weJRXvzXt70xm6tI5Z2HikEVGkq_f1souBQN2wBJRX5xkuPSVuy0l99OzCftljSc5Hc4v1H9UdTs06HVYvzULMj_06zuKKXyv9GOG3rFbzrp66t9y9-GlK2nRAUJKEhc92qBvyE_2kF6F4OBASyHF1Z4v4gKhUZzELNvipWlaK-1-l4G18Dc4YDYAwStgX3LF1WE-OC3bMtToj7wBjJxH0L_ck9E_BPcRhIQHKg1NOsgKOapq-3lcGCznFfRwRLpIBUCZzjXSaPExWKVw2qtg8Ogpq-mkbXmUlLRNUwQ17H3C-hHJ_x1bAj3YLFTt66BjrtPd0UPTWdDBP-LDQBqdnjg"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 201 + message: Created + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '914' + Boulder-Request-Id: + - HElooDP_ZXMjEHmo2sO7Z2rvkPA6vTh-8Wx1eIIaWnk + Boulder-Requester: + - '496542' + Link: + - ;rel="next" + - ;rel="terms-of-service" + Location: + - https://acme-staging.api.letsencrypt.org/acme/reg/496542 + Replay-Nonce: + - AQ64pO4Gh3SpjtTn_zhqrQdRb5DGOnmTPpdU_TbKe24 + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Tue, 15 Nov 2016 16:38:58 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 16:38:58 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "id": 496542, + "key": { + "kty": "RSA", + "n": "zJTQqZm6UOn6at13g2A4sVHbeBKWmDar0KXN0Aoj--RPEtwAtrnCa6EZ3Mpk3E3eQklIN1ck83lLQCyZ2BTTyFGk10p4QkjxEFdpFK3S0Godl7hqzEE9wRUBGhVYZNwiE_sMy3JDAYIc7KpwpZmJithF4dpNKnZr79ArxCkc2twQJqCDijsHl1biB3dDcZHQR86X99M7xxdu2aY_ixZmb14pdxgEDOmhGCGjYAhkBseaMMJs8gte6PEeqbRZEvxnRwNfJDLLGhQGmOUYpjPoTg3mvvZNE2lW_t2Zyl8I3Dse9LH2JVy5q01CbISrObE2HCrRWX93I9KiOfetfWDUPeakqzEHV5bEs9tkK-eXEA984Syu2hV9ZY7A-iNtkC_iRvp4_EkPQzYGqRknhAbQ0OUbc5YFgE2_dLtxMF6wTQ3HQ6ShAywjvWWGgwUid0Oa4X9oojjRy5srJW0FeA4cbO8Ju0mBFM_M6s5Ov7_ktaW9kB-y9fRyzm8CL9a3V8c_9bts2j7TDcb3DWFrl2xDYU9-2vKU0ymZP6XUa8fS0y2R1pXMmcCovkuu9aIIGcJgfELBjUlydH1Nq_co4yhmtPyaBJdwWb5MDRF22KpDtyq06o_P9lnxF0-G4fIKETCf4UCHcDHU5ajb-rUFMUU5bN6bSL2mugWUI8xG_UdnbKk", + "e": "AQAB" + }, + "contact": [ + "mailto:dev@substrakt.com" + ], + "initialIp": "213.123.191.198", + "createdAt": "2016-11-15T16:38:57.894212463Z", + "Status": "" + } + http_version: + recorded_at: Tue, 15 Nov 2016 16:38:58 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/reg/496542 + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiQVE2NHBPNEdoM1NwanRUbl96aHFyUWRSYjVER09ubVRQcGRVX1RiS2UyNCIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ6SlRRcVptNlVPbjZhdDEzZzJBNHNWSGJlQktXbURhcjBLWE4wQW9qLS1SUEV0d0F0cm5DYTZFWjNNcGszRTNlUWtsSU4xY2s4M2xMUUN5WjJCVFR5RkdrMTBwNFFranhFRmRwRkszUzBHb2RsN2hxekVFOXdSVUJHaFZZWk53aUVfc015M0pEQVlJYzdLcHdwWm1KaXRoRjRkcE5LblpyNzlBcnhDa2MydHdRSnFDRGlqc0hsMWJpQjNkRGNaSFFSODZYOTlNN3h4ZHUyYVlfaXhabWIxNHBkeGdFRE9taEdDR2pZQWhrQnNlYU1NSnM4Z3RlNlBFZXFiUlpFdnhuUndOZkpETExHaFFHbU9VWXBqUG9UZzNtdnZaTkUybFdfdDJaeWw4STNEc2U5TEgySlZ5NXEwMUNiSVNyT2JFMkhDclJXWDkzSTlLaU9mZXRmV0RVUGVha3F6RUhWNWJFczl0a0stZVhFQTk4NFN5dTJoVjlaWTdBLWlOdGtDX2lSdnA0X0VrUFF6WUdxUmtuaEFiUTBPVWJjNVlGZ0UyX2RMdHhNRjZ3VFEzSFE2U2hBeXdqdldXR2d3VWlkME9hNFg5b29qalJ5NXNySlcwRmVBNGNiTzhKdTBtQkZNX002czVPdjdfa3RhVzlrQi15OWZSeXptOENMOWEzVjhjXzlidHMyajdURGNiM0RXRnJsMnhEWVU5LTJ2S1UweW1aUDZYVWE4ZlMweTJSMXBYTW1jQ292a3V1OWFJSUdjSmdmRUxCalVseWRIMU5xX2NvNHlobXRQeWFCSmR3V2I1TURSRjIyS3BEdHlxMDZvX1A5bG54RjAtRzRmSUtFVENmNFVDSGNESFU1YWpiLXJVRk1VVTViTjZiU0wybXVnV1VJOHhHX1VkbmJLayJ9fQ","payload":"eyJyZXNvdXJjZSI6InJlZyIsImFncmVlbWVudCI6Imh0dHBzOi8vbGV0c2VuY3J5cHQub3JnL2RvY3VtZW50cy9MRS1TQS12MS4xLjEtQXVndXN0LTEtMjAxNi5wZGYifQ","signature":"BI2K0pwdwr6oDvK72wyb7PC0OikTW2YULmGDb41nznoBXvn9nT7d9HKwUo3PMLiep0YFpgBkbbd8WU2l_wunu6U0TGRNwJBdr0bmAryzKWfqhhM1ds7TGAY2qzZvqMquFPcSmC7ItX3SY09J9Q2d9PfIL4sWM7QdzHRFxTpfZGnfbtMR-9doB6-8JDGCI7WdVhBqZeX66jue13DbGv0ezDu-iLeEbDfbB-N5boyytMLEqxInM0qTwDxS4b5AJ6QORSRHcWNusMpeF87rtupUc7qzI12p9KFdpIsC_c7t_46SgBoTD43aQ6iki-_JgLcSyfhTLQstqVeVJpgfVVkBy0p3vApHWzVq2Rf4xvri1mCAwbW-dLHj7WYRtqMC-gDbS3TLxLS0R5CwrX8Ns_GyzAc8PmzGr40kJ_GfFNSvcV8o87T0QZRJbLdNmjVo_r4tCdzRgGgfyuRkKPExuio1T924eLGqDhAA64M6orYIoBNcjSwBVlZJL2A0d7gJRrCz_XIufyYFFtCZJig7V1oWfUBjRsbva1Lhdf3iH8p7yjsct5Z3lAoCMNRt84lArxWVq2l7aI09U2_KRnTAPLNx6vkFAHHYcDHcQV7OhkWPabRI0h3RGgj4QOwhufUGEjLvufX7IQRRQg2mTDOLX3zijzhNEszYjzy_xX_sDVc6K88"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 202 + message: Accepted + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '987' + Boulder-Request-Id: + - ucDX7pSIFYFNhE3z4zr4vD6RoYVKb8ZtEvUzpnbuFMU + Boulder-Requester: + - '496542' + Link: + - ;rel="next" + - ;rel="terms-of-service" + Replay-Nonce: + - 8Nd9mytJEbVw-DENcvUHrt9dmbw6TNbSsNt2K7O1dPc + Expires: + - Tue, 15 Nov 2016 16:38:58 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 16:38:58 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "id": 496542, + "key": { + "kty": "RSA", + "n": "zJTQqZm6UOn6at13g2A4sVHbeBKWmDar0KXN0Aoj--RPEtwAtrnCa6EZ3Mpk3E3eQklIN1ck83lLQCyZ2BTTyFGk10p4QkjxEFdpFK3S0Godl7hqzEE9wRUBGhVYZNwiE_sMy3JDAYIc7KpwpZmJithF4dpNKnZr79ArxCkc2twQJqCDijsHl1biB3dDcZHQR86X99M7xxdu2aY_ixZmb14pdxgEDOmhGCGjYAhkBseaMMJs8gte6PEeqbRZEvxnRwNfJDLLGhQGmOUYpjPoTg3mvvZNE2lW_t2Zyl8I3Dse9LH2JVy5q01CbISrObE2HCrRWX93I9KiOfetfWDUPeakqzEHV5bEs9tkK-eXEA984Syu2hV9ZY7A-iNtkC_iRvp4_EkPQzYGqRknhAbQ0OUbc5YFgE2_dLtxMF6wTQ3HQ6ShAywjvWWGgwUid0Oa4X9oojjRy5srJW0FeA4cbO8Ju0mBFM_M6s5Ov7_ktaW9kB-y9fRyzm8CL9a3V8c_9bts2j7TDcb3DWFrl2xDYU9-2vKU0ymZP6XUa8fS0y2R1pXMmcCovkuu9aIIGcJgfELBjUlydH1Nq_co4yhmtPyaBJdwWb5MDRF22KpDtyq06o_P9lnxF0-G4fIKETCf4UCHcDHU5ajb-rUFMUU5bN6bSL2mugWUI8xG_UdnbKk", + "e": "AQAB" + }, + "contact": [ + "mailto:dev@substrakt.com" + ], + "agreement": "https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf", + "initialIp": "213.123.191.198", + "createdAt": "2016-11-15T16:38:57Z", + "Status": "" + } + http_version: + recorded_at: Tue, 15 Nov 2016 16:38:58 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/new-authz + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiOE5kOW15dEpFYlZ3LURFTmN2VUhydDlkbWJ3NlROYlNzTnQySzdPMWRQYyIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ6SlRRcVptNlVPbjZhdDEzZzJBNHNWSGJlQktXbURhcjBLWE4wQW9qLS1SUEV0d0F0cm5DYTZFWjNNcGszRTNlUWtsSU4xY2s4M2xMUUN5WjJCVFR5RkdrMTBwNFFranhFRmRwRkszUzBHb2RsN2hxekVFOXdSVUJHaFZZWk53aUVfc015M0pEQVlJYzdLcHdwWm1KaXRoRjRkcE5LblpyNzlBcnhDa2MydHdRSnFDRGlqc0hsMWJpQjNkRGNaSFFSODZYOTlNN3h4ZHUyYVlfaXhabWIxNHBkeGdFRE9taEdDR2pZQWhrQnNlYU1NSnM4Z3RlNlBFZXFiUlpFdnhuUndOZkpETExHaFFHbU9VWXBqUG9UZzNtdnZaTkUybFdfdDJaeWw4STNEc2U5TEgySlZ5NXEwMUNiSVNyT2JFMkhDclJXWDkzSTlLaU9mZXRmV0RVUGVha3F6RUhWNWJFczl0a0stZVhFQTk4NFN5dTJoVjlaWTdBLWlOdGtDX2lSdnA0X0VrUFF6WUdxUmtuaEFiUTBPVWJjNVlGZ0UyX2RMdHhNRjZ3VFEzSFE2U2hBeXdqdldXR2d3VWlkME9hNFg5b29qalJ5NXNySlcwRmVBNGNiTzhKdTBtQkZNX002czVPdjdfa3RhVzlrQi15OWZSeXptOENMOWEzVjhjXzlidHMyajdURGNiM0RXRnJsMnhEWVU5LTJ2S1UweW1aUDZYVWE4ZlMweTJSMXBYTW1jQ292a3V1OWFJSUdjSmdmRUxCalVseWRIMU5xX2NvNHlobXRQeWFCSmR3V2I1TURSRjIyS3BEdHlxMDZvX1A5bG54RjAtRzRmSUtFVENmNFVDSGNESFU1YWpiLXJVRk1VVTViTjZiU0wybXVnV1VJOHhHX1VkbmJLayJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1hdXRoeiIsImlkZW50aWZpZXIiOnsidHlwZSI6ImRucyIsInZhbHVlIjoid3d3LnN1YnN0cmFrdC5jb20ifX0","signature":"w2VGPugYvwbGEUL-TvNAEt4njh2cUzAZ68OpO_NQmmdMjiUk4kAjJhMCS0xRlcKoF8hHeWl3LHwIQVXkes4XlfW7Nz6XS5YYg8k5uiRDseUNcD6taQ0RywU6kcYJZrg4C9n384S7gmUJ4v8ZbTbWMhH3qxPm0LEpk1p5anh3_FXrNOHbkQW9M3gFjjbwFtxVzBA6l0xoBKFG55vslKU1wBjmUQ8ApouHLHkWAgD0L52myyEsLGftOq7udvOSsH7hSofXcZgHrRPUEGMdjYCllkd0dw6ujB4EVt1hOESS0zkVb8h_lu-saRrN1DSRq9-dm7ERfeBEef-1LH7E2cC1Rou3Cfg58-Tsu3V_vPg52NHOhTB0aDKjDjd12L-c--3qgZ2ddmLUZUNMWYq8jRvI8JTXClXbcFSRRiyryhjkrQP6gSk-M9s4-Mc4HwYPoMmGmwInJqZg7DuZtgg9uDGtyOEyFviL2OFstC0s8ugdEETkXzhAf_wp-2p1BWHxdUItw3S5bXZq6SfFZuwIjAI4byfBTEKiAfwjIRwXIlOTGYL0BdfgCxT9CCLODnR5BM_I6GY8GSyfbtum7sJYGf512LK2Ly78ZJy_jHemIFcuia0bLVoHRcZ4OHzQV928lATstTSTsuLjnG3-Y8K10bVB142NxmMstAYdXTFyBelkzJQ"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 201 + message: Created + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '1011' + Boulder-Request-Id: + - Zo0Xdn9judeQ-Yb43yHLqo5_Ug3LHAvQg_V-byhVP7E + Boulder-Requester: + - '496542' + Link: + - ;rel="next" + Location: + - https://acme-staging.api.letsencrypt.org/acme/authz/M7mkqGIW2pLYux9dIFKoLhW4z-FyiiHQw4G6tu3DD24 + Replay-Nonce: + - YNyiKO_eJLrU_bXDfM16niCzK8i8n_thMNnJK14xJPA + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Tue, 15 Nov 2016 16:38:58 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 16:38:58 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "identifier": { + "type": "dns", + "value": "www.substrakt.com" + }, + "status": "pending", + "expires": "2016-11-22T16:38:58.763056394Z", + "challenges": [ + { + "type": "dns-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/M7mkqGIW2pLYux9dIFKoLhW4z-FyiiHQw4G6tu3DD24/16908083", + "token": "Q19sSJNmPxDUuevmFBYzcodxfOYuWDFNJoioW38Hbig" + }, + { + "type": "tls-sni-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/M7mkqGIW2pLYux9dIFKoLhW4z-FyiiHQw4G6tu3DD24/16908084", + "token": "o3edxEnPFeqzEFDDa09QNUb6NiMNq2Srd8d3CAPkmxE" + }, + { + "type": "http-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/M7mkqGIW2pLYux9dIFKoLhW4z-FyiiHQw4G6tu3DD24/16908085", + "token": "lpTpis4hFOBszlEIzs6PC-mNjNnLML1An9-Qx5LZrzY" + } + ], + "combinations": [ + [ + 0 + ], + [ + 2 + ], + [ + 1 + ] + ] + } + http_version: + recorded_at: Tue, 15 Nov 2016 16:38:58 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/new-authz + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiWU55aUtPX2VKTHJVX2JYRGZNMTZuaUN6SzhpOG5fdGhNTm5KSzE0eEpQQSIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ6SlRRcVptNlVPbjZhdDEzZzJBNHNWSGJlQktXbURhcjBLWE4wQW9qLS1SUEV0d0F0cm5DYTZFWjNNcGszRTNlUWtsSU4xY2s4M2xMUUN5WjJCVFR5RkdrMTBwNFFranhFRmRwRkszUzBHb2RsN2hxekVFOXdSVUJHaFZZWk53aUVfc015M0pEQVlJYzdLcHdwWm1KaXRoRjRkcE5LblpyNzlBcnhDa2MydHdRSnFDRGlqc0hsMWJpQjNkRGNaSFFSODZYOTlNN3h4ZHUyYVlfaXhabWIxNHBkeGdFRE9taEdDR2pZQWhrQnNlYU1NSnM4Z3RlNlBFZXFiUlpFdnhuUndOZkpETExHaFFHbU9VWXBqUG9UZzNtdnZaTkUybFdfdDJaeWw4STNEc2U5TEgySlZ5NXEwMUNiSVNyT2JFMkhDclJXWDkzSTlLaU9mZXRmV0RVUGVha3F6RUhWNWJFczl0a0stZVhFQTk4NFN5dTJoVjlaWTdBLWlOdGtDX2lSdnA0X0VrUFF6WUdxUmtuaEFiUTBPVWJjNVlGZ0UyX2RMdHhNRjZ3VFEzSFE2U2hBeXdqdldXR2d3VWlkME9hNFg5b29qalJ5NXNySlcwRmVBNGNiTzhKdTBtQkZNX002czVPdjdfa3RhVzlrQi15OWZSeXptOENMOWEzVjhjXzlidHMyajdURGNiM0RXRnJsMnhEWVU5LTJ2S1UweW1aUDZYVWE4ZlMweTJSMXBYTW1jQ292a3V1OWFJSUdjSmdmRUxCalVseWRIMU5xX2NvNHlobXRQeWFCSmR3V2I1TURSRjIyS3BEdHlxMDZvX1A5bG54RjAtRzRmSUtFVENmNFVDSGNESFU1YWpiLXJVRk1VVTViTjZiU0wybXVnV1VJOHhHX1VkbmJLayJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1hdXRoeiIsImlkZW50aWZpZXIiOnsidHlwZSI6ImRucyIsInZhbHVlIjoic3Vic3RyYWt0LmNvbSJ9fQ","signature":"LIleWBvRo35X0Gl3Y2jyyjEsGvDSFSCn33uWI3GjJ9t5Xqfs2PCSqJfY5XZ9R_NMBC-vKjbryyGPKqn_2vi4MURH636q8WgzR9d7IqFcGL3JeUKK7_doub3ilXSPy_vNnUkbWOa5SgPzaOAhzT1WB_J9QJ_a8ZQJg8dScr85L44g-r7aEd4AnVVcJ2VmN3Npuog5NIBT_08tZkgB0pGvNADgbfbZUNRGYsBpZBwst_CBLnc7smFf0L1S7nrRCQJaTrguP7uL5Q2J1DkteT18GjRVb1gDI7IlzkgF-rieZ6iqjw6f76dFazs6rMqu2oao3VsYMcsCGd4CJrzmk1qh3mcLVxXkbqRXlF3B_XenAD_eQtinZC7EQUMgRO13WN289Hu2cCm-YVfTFvB6hLR3vuHAwrqPb0JItvwKIDmCvVqtdDWbF74lI39-mAqB84XqBwc2VtVGBjiMZG7sxeuPJzmWZYNglKcwjp4B56xed6NxhvGUmzyr6ibxPChENMFIxubjFEoeifmQRTKDVdeyYLiCShHZO0ga1s1Yd6VMo6dcsXvH7i2JeW8_kPuypXQjtwgpPnH4NJcihQ-YVUkjTrBH0rs58jGLHtwjiWA1Nikm3X6ClmRPNvHtrm96YNNbuqgdjKN9YV9U7Sl9cGF1ikrnbDUt-NLko98HWxirKfg"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 201 + message: Created + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '1007' + Boulder-Request-Id: + - xrNhYfTUF28TSilYCpAJPrzmC1KuMJv5qAykGG0lgEM + Boulder-Requester: + - '496542' + Link: + - ;rel="next" + Location: + - https://acme-staging.api.letsencrypt.org/acme/authz/dhKwJw4tjEjBlwzSrtuKsxvhrl9yv_N_DFATqvBCenU + Replay-Nonce: + - mgQ3tkBa-SUsDlrqc0hKQON2b2C09TglBpBauDQ6_t8 + X-Frame-Options: + - DENY + Strict-Transport-Security: + - max-age=604800 + Expires: + - Tue, 15 Nov 2016 16:38:59 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 16:38:59 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "identifier": { + "type": "dns", + "value": "substrakt.com" + }, + "status": "pending", + "expires": "2016-11-22T16:38:59.217344873Z", + "challenges": [ + { + "type": "dns-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/dhKwJw4tjEjBlwzSrtuKsxvhrl9yv_N_DFATqvBCenU/16908086", + "token": "Rx4hlKgq5K-WGLbt6TYIN8fp1BFzlXUxmel3doJMqRE" + }, + { + "type": "tls-sni-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/dhKwJw4tjEjBlwzSrtuKsxvhrl9yv_N_DFATqvBCenU/16908087", + "token": "av4rO_zvSt3ZBcQ3GsqAR1yKCwqfoM9J5wWiD-rET0Y" + }, + { + "type": "http-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/dhKwJw4tjEjBlwzSrtuKsxvhrl9yv_N_DFATqvBCenU/16908088", + "token": "Z3hNBXSik1XGRI4ktYQ_RhUdPbmmyP1KnCzUNqFstWc" + } + ], + "combinations": [ + [ + 0 + ], + [ + 1 + ], + [ + 2 + ] + ] + } + http_version: + recorded_at: Tue, 15 Nov 2016 16:38:59 GMT +- request: + method: post + uri: https://www.cloudflare.com/api_json.html + body: + encoding: US-ASCII + string: a=rec_new&z=substrakt.com&type=TXT&name=_acme-challenge.www.substrakt.com&content=YsCY3_KMS-bLLGXUpTNxTTuBTCfz8DcXKCjz6K-Ou9A&ttl=1&service_mode=1&tkn=4dd49e8832f9df199f3fd412069b4d014d38c&u=max%40substrakt.com + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + Content-Type: + - application/x-www-form-urlencoded + response: + status: + code: 200 + message: OK + headers: + Date: + - Tue, 15 Nov 2016 16:39:00 GMT + Content-Type: + - application/json + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Set-Cookie: + - CF_UALE=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0 + - __cfduid=d38ce06f3b0aa139a06e4a0782ac2142c1479227939; expires=Wed, 15-Nov-17 + 16:38:59 GMT; path=/; domain=.cloudflare.com; HttpOnly + - vses2=mu5ktic5fqm0srqccn0engbm17; path=/; domain=www.cloudflare.com; secure; + HttpOnly + Expires: + - Thu, 19 Nov 1981 08:52:00 GMT + Cache-Control: + - no-store, no-cache, must-revalidate, post-check=0, pre-check=0 + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + Content-Security-Policy: + - default-src 'self' https://*; script-src 'self' 'unsafe-inline' 'unsafe-eval' + https://* data:; img-src 'self' https://* data:; style-src 'self' 'unsafe-inline' + https://*; font-src 'self' https://* data:; frame-src https://*; connect-src + 'self' https://* wss://*.zopim.com data:; + X-Xss-Protection: + - 1; mode=block + Server: + - cloudflare-nginx + Cf-Ray: + - 302422fde8f63464-LHR + body: + encoding: ASCII-8BIT + string: '{"request":{"act":"rec_new"},"response":{"rec":{"obj":{"rec_id":"658607371","rec_hash":"46aa1c1ef74ed72b22b8a27247ba87be","zone_name":"substrakt.com","name":"_acme-challenge.www.substrakt.com","display_name":"_acme-challenge.www","type":"TXT","prio":null,"content":"YsCY3_KMS-bLLGXUpTNxTTuBTCfz8DcXKCjz6K-Ou9A","display_content":"YsCY3_KMS-bLLGXUpTNxTTuBTCfz8DcXKCjz6K-Ou9A","ttl":"1","ttl_ceil":86400,"ssl_id":"5084311","ssl_status":"V","ssl_expires_on":null,"auto_ttl":1,"service_mode":"0","props":{"proxiable":0,"cloud_on":0,"cf_open":1,"vanity_lock":0,"ssl":1,"expired_ssl":0,"expiring_ssl":0,"pending_ssl":0}}}},"result":"success","msg":null}' + http_version: + recorded_at: Tue, 15 Nov 2016 16:39:00 GMT +- request: + method: post + uri: https://www.cloudflare.com/api_json.html + body: + encoding: US-ASCII + string: a=rec_new&z=substrakt.com&type=TXT&name=_acme-challenge.substrakt.com&content=qZ1rY_uXJd_2Yp_fSZOvEWe7_Fyn-XhNICGRwb33hWE&ttl=1&service_mode=1&tkn=4dd49e8832f9df199f3fd412069b4d014d38c&u=max%40substrakt.com + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + User-Agent: + - Ruby + Content-Type: + - application/x-www-form-urlencoded + response: + status: + code: 200 + message: OK + headers: + Date: + - Tue, 15 Nov 2016 16:39:00 GMT + Content-Type: + - application/json + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Set-Cookie: + - CF_UALE=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0 + - __cfduid=db23245913b9d1b63cd5d2e63e60a6d531479227940; expires=Wed, 15-Nov-17 + 16:39:00 GMT; path=/; domain=.cloudflare.com; HttpOnly + - vses2=1tm2q7juntq9al4k3sfjkjsmr3; path=/; domain=www.cloudflare.com; secure; + HttpOnly + Expires: + - Thu, 19 Nov 1981 08:52:00 GMT + Cache-Control: + - no-store, no-cache, must-revalidate, post-check=0, pre-check=0 + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + Content-Security-Policy: + - default-src 'self' https://*; script-src 'self' 'unsafe-inline' 'unsafe-eval' + https://* data:; img-src 'self' https://* data:; style-src 'self' 'unsafe-inline' + https://*; font-src 'self' https://* data:; frame-src https://*; connect-src + 'self' https://* wss://*.zopim.com data:; + X-Xss-Protection: + - 1; mode=block + Server: + - cloudflare-nginx + Cf-Ray: + - 302423026f9f35e4-LHR + body: + encoding: ASCII-8BIT + string: '{"request":{"act":"rec_new"},"response":{"rec":{"obj":{"rec_id":"658607377","rec_hash":"73efcb5b73a8f3fd691c0f7ba3a1d846","zone_name":"substrakt.com","name":"_acme-challenge.substrakt.com","display_name":"_acme-challenge","type":"TXT","prio":null,"content":"qZ1rY_uXJd_2Yp_fSZOvEWe7_Fyn-XhNICGRwb33hWE","display_content":"qZ1rY_uXJd_2Yp_fSZOvEWe7_Fyn-XhNICGRwb33hWE","ttl":"1","ttl_ceil":86400,"ssl_id":"5084311","ssl_status":"V","ssl_expires_on":null,"auto_ttl":1,"service_mode":"0","props":{"proxiable":0,"cloud_on":0,"cf_open":1,"vanity_lock":0,"ssl":1,"expired_ssl":0,"expiring_ssl":0,"pending_ssl":0}}}},"result":"success","msg":null}' + http_version: + recorded_at: Tue, 15 Nov 2016 16:39:00 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/challenge/M7mkqGIW2pLYux9dIFKoLhW4z-FyiiHQw4G6tu3DD24/16908083 + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoibWdRM3RrQmEtU1VzRGxycWMwaEtRT04yYjJDMDlUZ2xCcEJhdURRNl90OCIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ6SlRRcVptNlVPbjZhdDEzZzJBNHNWSGJlQktXbURhcjBLWE4wQW9qLS1SUEV0d0F0cm5DYTZFWjNNcGszRTNlUWtsSU4xY2s4M2xMUUN5WjJCVFR5RkdrMTBwNFFranhFRmRwRkszUzBHb2RsN2hxekVFOXdSVUJHaFZZWk53aUVfc015M0pEQVlJYzdLcHdwWm1KaXRoRjRkcE5LblpyNzlBcnhDa2MydHdRSnFDRGlqc0hsMWJpQjNkRGNaSFFSODZYOTlNN3h4ZHUyYVlfaXhabWIxNHBkeGdFRE9taEdDR2pZQWhrQnNlYU1NSnM4Z3RlNlBFZXFiUlpFdnhuUndOZkpETExHaFFHbU9VWXBqUG9UZzNtdnZaTkUybFdfdDJaeWw4STNEc2U5TEgySlZ5NXEwMUNiSVNyT2JFMkhDclJXWDkzSTlLaU9mZXRmV0RVUGVha3F6RUhWNWJFczl0a0stZVhFQTk4NFN5dTJoVjlaWTdBLWlOdGtDX2lSdnA0X0VrUFF6WUdxUmtuaEFiUTBPVWJjNVlGZ0UyX2RMdHhNRjZ3VFEzSFE2U2hBeXdqdldXR2d3VWlkME9hNFg5b29qalJ5NXNySlcwRmVBNGNiTzhKdTBtQkZNX002czVPdjdfa3RhVzlrQi15OWZSeXptOENMOWEzVjhjXzlidHMyajdURGNiM0RXRnJsMnhEWVU5LTJ2S1UweW1aUDZYVWE4ZlMweTJSMXBYTW1jQ292a3V1OWFJSUdjSmdmRUxCalVseWRIMU5xX2NvNHlobXRQeWFCSmR3V2I1TURSRjIyS3BEdHlxMDZvX1A5bG54RjAtRzRmSUtFVENmNFVDSGNESFU1YWpiLXJVRk1VVTViTjZiU0wybXVnV1VJOHhHX1VkbmJLayJ9fQ","payload":"eyJyZXNvdXJjZSI6ImNoYWxsZW5nZSIsInR5cGUiOiJkbnMtMDEiLCJrZXlBdXRob3JpemF0aW9uIjoiUTE5c1NKTm1QeERVdWV2bUZCWXpjb2R4Zk9ZdVdERk5Kb2lvVzM4SGJpZy5wSlF0U1NFQzItRUxlNWdmb2txYnVVcU8xb3FDYWRRZmc1SmQ5bW9BVDV3In0","signature":"TqJ9l2N5fVlC1I4lSNLciDoiAob4CGqyQfD0vjXV4yT-SX394V1IM5cvRzfxujyTL3S7sHEjankN0-bbmyvK6CuMooH3oUfxY_JMMbqjYivNyJ7zB4gSeH0F-dPVceLU42N3p5NCkeBq4PcVowVlN4GK0gSHh38TChAsM6kv4gn-HZ53IQpj-ayIyjHNRQXdZVafVNzl52RP_jzMtm_8UnJk0d16S2suXMQOeeBEtIBDBadTc_1swORBQ2ckBuvMnLPCAnAVb8dSTqjH_H3O_faViLSMUne15OoCn-WFBTWwyf3f3oZ8AEIJWOtflrHqkpYFJhrNKUlnqxJjYnh_UsGd6MY8SFdPyQ7BwLTlQN4sokRhX96Eejgmy7uUoPUM_Cr-3eukjWArTWrUgsMsg0NVeaOSeoPl6GtyqKnOvIZLu3XD2oykkAUcoRXCytxdZkU66wyE-2DbXdv1RXEE3N3DN9YC81sdghQfjlV0VdxgjsSSCD_9NS68JliZnHfwVjIchLlgB3IfAPGSHKz4nGz7NB1M0PGNX6MJjxdean47Fz2kgBEBmAKQtMi37aASeNu0mGGtWmMEzfHkgUFKEQdp6BQshzYeDjc-sL2HCUWaZa64ctjgdYVKzZ1TfZzzM1b_2dDTaAY9v46avS4V84dxbcG_4B0jaaDcDtcnpPA"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 202 + message: Accepted + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '337' + Boulder-Request-Id: + - ffxp1gX-CwiyxW3n66SNje1ycUYXrC-ccCRy8y_gUMs + Boulder-Requester: + - '496542' + Link: + - ;rel="up" + Location: + - https://acme-staging.api.letsencrypt.org/acme/challenge/M7mkqGIW2pLYux9dIFKoLhW4z-FyiiHQw4G6tu3DD24/16908083 + Replay-Nonce: + - 0gG1xYJBXJ8AzOxQGzxHui3V33HGUJD7eF2GFZFa-g8 + Expires: + - Tue, 15 Nov 2016 16:39:01 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 16:39:01 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "type": "dns-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/M7mkqGIW2pLYux9dIFKoLhW4z-FyiiHQw4G6tu3DD24/16908083", + "token": "Q19sSJNmPxDUuevmFBYzcodxfOYuWDFNJoioW38Hbig", + "keyAuthorization": "Q19sSJNmPxDUuevmFBYzcodxfOYuWDFNJoioW38Hbig.pJQtSSEC2-ELe5gfokqbuUqO1oqCadQfg5Jd9moAT5w" + } + http_version: + recorded_at: Tue, 15 Nov 2016 16:39:01 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/challenge/dhKwJw4tjEjBlwzSrtuKsxvhrl9yv_N_DFATqvBCenU/16908086 + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiMGdHMXhZSkJYSjhBek94UUd6eEh1aTNWMzNIR1VKRDdlRjJHRlpGYS1nOCIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ6SlRRcVptNlVPbjZhdDEzZzJBNHNWSGJlQktXbURhcjBLWE4wQW9qLS1SUEV0d0F0cm5DYTZFWjNNcGszRTNlUWtsSU4xY2s4M2xMUUN5WjJCVFR5RkdrMTBwNFFranhFRmRwRkszUzBHb2RsN2hxekVFOXdSVUJHaFZZWk53aUVfc015M0pEQVlJYzdLcHdwWm1KaXRoRjRkcE5LblpyNzlBcnhDa2MydHdRSnFDRGlqc0hsMWJpQjNkRGNaSFFSODZYOTlNN3h4ZHUyYVlfaXhabWIxNHBkeGdFRE9taEdDR2pZQWhrQnNlYU1NSnM4Z3RlNlBFZXFiUlpFdnhuUndOZkpETExHaFFHbU9VWXBqUG9UZzNtdnZaTkUybFdfdDJaeWw4STNEc2U5TEgySlZ5NXEwMUNiSVNyT2JFMkhDclJXWDkzSTlLaU9mZXRmV0RVUGVha3F6RUhWNWJFczl0a0stZVhFQTk4NFN5dTJoVjlaWTdBLWlOdGtDX2lSdnA0X0VrUFF6WUdxUmtuaEFiUTBPVWJjNVlGZ0UyX2RMdHhNRjZ3VFEzSFE2U2hBeXdqdldXR2d3VWlkME9hNFg5b29qalJ5NXNySlcwRmVBNGNiTzhKdTBtQkZNX002czVPdjdfa3RhVzlrQi15OWZSeXptOENMOWEzVjhjXzlidHMyajdURGNiM0RXRnJsMnhEWVU5LTJ2S1UweW1aUDZYVWE4ZlMweTJSMXBYTW1jQ292a3V1OWFJSUdjSmdmRUxCalVseWRIMU5xX2NvNHlobXRQeWFCSmR3V2I1TURSRjIyS3BEdHlxMDZvX1A5bG54RjAtRzRmSUtFVENmNFVDSGNESFU1YWpiLXJVRk1VVTViTjZiU0wybXVnV1VJOHhHX1VkbmJLayJ9fQ","payload":"eyJyZXNvdXJjZSI6ImNoYWxsZW5nZSIsInR5cGUiOiJkbnMtMDEiLCJrZXlBdXRob3JpemF0aW9uIjoiUng0aGxLZ3E1Sy1XR0xidDZUWUlOOGZwMUJGemxYVXhtZWwzZG9KTXFSRS5wSlF0U1NFQzItRUxlNWdmb2txYnVVcU8xb3FDYWRRZmc1SmQ5bW9BVDV3In0","signature":"fW91n6wXvK80q3fkUdCLNjBZEdIaohyWxuk4DPrKnABzD5i0sXSUv452jTtsL8R-IIhWWrMC2i2kPBySQrVEOcbeeMp0CB-sV_o8W8AVYewfE7OzV-CUBcZTx9cAYIhmeQRSSwvuxcgCh9NV6evyURNvftny1cwD7DYYh7xtFXX3X4mt0_Iba3ppcBFxYemIpyZ4RGdwmbv5L62stRp_kLowbD4gOA7bPzqAtg09DRN369iYaISCdG_QpyktpqfOcVXN3UteVSFUwkk4qUP5o_qKd45JAgVvNOiPbNzdc7Pvmc4dFhT5kDVaJsotKb04Y_Ipge9MxccDssSj_uJ37GovuSxGlUtoaL82vuGel0zW187f-j8q31JVBwaNaoQHBAh3248tJb7Kg2Zvtt56A6rHVUWJSTgVEOV8XLpCK0W0e9Vehg469UlwEcHP8jTu3US5d7coohr54H0XsYzlfmwS5udYRDKYpBO5ljBWdk-xslJS6pP007mUOgTB1H0eTpylJelpkGdiABaDzNMNNtOpZw3Psh06fy5LkslkDSTgiRJ5WTedfNcvtdgIoCLLNrhKglaOa8aFQ2vwOt1oXE8PMAW5vAPGFBU5P7fm1LocUOqlaQ9QDP8UgbXZGw4qROE-FrtWwvmwOB72nMuiCKAq19DQ596c6eBN1VYBPw4"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 202 + message: Accepted + headers: + Server: + - nginx + Content-Type: + - application/json + Content-Length: + - '337' + Boulder-Request-Id: + - H-MI4OgVl_ZstNmI2T4mbad-Vkwa1ihotSZQP4K9fwM + Boulder-Requester: + - '496542' + Link: + - ;rel="up" + Location: + - https://acme-staging.api.letsencrypt.org/acme/challenge/dhKwJw4tjEjBlwzSrtuKsxvhrl9yv_N_DFATqvBCenU/16908086 + Replay-Nonce: + - 5I7Kw8eZFbH0QgZmLUIMMyDsqm3Sl4CE6pqpVkNsYOY + Expires: + - Tue, 15 Nov 2016 16:39:01 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 16:39:01 GMT + Connection: + - keep-alive + body: + encoding: UTF-8 + string: |- + { + "type": "dns-01", + "status": "pending", + "uri": "https://acme-staging.api.letsencrypt.org/acme/challenge/dhKwJw4tjEjBlwzSrtuKsxvhrl9yv_N_DFATqvBCenU/16908086", + "token": "Rx4hlKgq5K-WGLbt6TYIN8fp1BFzlXUxmel3doJMqRE", + "keyAuthorization": "Rx4hlKgq5K-WGLbt6TYIN8fp1BFzlXUxmel3doJMqRE.pJQtSSEC2-ELe5gfokqbuUqO1oqCadQfg5Jd9moAT5w" + } + http_version: + recorded_at: Tue, 15 Nov 2016 16:39:01 GMT +- request: + method: post + uri: https://acme-staging.api.letsencrypt.org/acme/new-cert + body: + encoding: UTF-8 + string: '{"protected":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIm5vbmNlIjoiNUk3S3c4ZVpGYkgwUWdabUxVSU1NeURzcW0zU2w0Q0U2cHFwVmtOc1lPWSIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsIm4iOiJ6SlRRcVptNlVPbjZhdDEzZzJBNHNWSGJlQktXbURhcjBLWE4wQW9qLS1SUEV0d0F0cm5DYTZFWjNNcGszRTNlUWtsSU4xY2s4M2xMUUN5WjJCVFR5RkdrMTBwNFFranhFRmRwRkszUzBHb2RsN2hxekVFOXdSVUJHaFZZWk53aUVfc015M0pEQVlJYzdLcHdwWm1KaXRoRjRkcE5LblpyNzlBcnhDa2MydHdRSnFDRGlqc0hsMWJpQjNkRGNaSFFSODZYOTlNN3h4ZHUyYVlfaXhabWIxNHBkeGdFRE9taEdDR2pZQWhrQnNlYU1NSnM4Z3RlNlBFZXFiUlpFdnhuUndOZkpETExHaFFHbU9VWXBqUG9UZzNtdnZaTkUybFdfdDJaeWw4STNEc2U5TEgySlZ5NXEwMUNiSVNyT2JFMkhDclJXWDkzSTlLaU9mZXRmV0RVUGVha3F6RUhWNWJFczl0a0stZVhFQTk4NFN5dTJoVjlaWTdBLWlOdGtDX2lSdnA0X0VrUFF6WUdxUmtuaEFiUTBPVWJjNVlGZ0UyX2RMdHhNRjZ3VFEzSFE2U2hBeXdqdldXR2d3VWlkME9hNFg5b29qalJ5NXNySlcwRmVBNGNiTzhKdTBtQkZNX002czVPdjdfa3RhVzlrQi15OWZSeXptOENMOWEzVjhjXzlidHMyajdURGNiM0RXRnJsMnhEWVU5LTJ2S1UweW1aUDZYVWE4ZlMweTJSMXBYTW1jQ292a3V1OWFJSUdjSmdmRUxCalVseWRIMU5xX2NvNHlobXRQeWFCSmR3V2I1TURSRjIyS3BEdHlxMDZvX1A5bG54RjAtRzRmSUtFVENmNFVDSGNESFU1YWpiLXJVRk1VVTViTjZiU0wybXVnV1VJOHhHX1VkbmJLayJ9fQ","payload":"eyJyZXNvdXJjZSI6Im5ldy1jZXJ0IiwiY3NyIjoiTUlJQ256Q0NBWWNDQVFJd0hERWFNQmdHQTFVRUF3d1JkM2QzTG5OMVluTjBjbUZyZEM1amIyMHdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFETXc4bFkxa0g5VnBLUk9odkVLUGZVSnowT1Q4NmtvWWE0YWNoUmh1ZGs5ZEJUU3JyVS1XMkd2MllOVkJKbHp0UXdQc2IyemhwcVJwSGtRWG02dzB0ODI2RktvNHg0T2N3Umo1eGpaWGQ5cEY5VE1FN0hscTI1QU40bzFBazhxeHR6dkFQWV9hV1BWZmtRRmNZRDdxZFlWN0luaDM4aWM4UHVkNlFodmtoVS1YRTlUalVXbjVsUjd2YnVRbS1TOTNxc3haeTNwRUNNWkhRWHZkSVZ3M1JDblNmR085U0oySmdCc1U4TnhlbUQwSHpnUDB2bmwtODVHOTNJbUxQMUVWNnlYeUdTZzM0QlFGcktnOHRRS3NwTUlCd2FjYjNPcTNIY2FsWVloMVpMTFRRX2ZEdVlraGlQMGQ0aUE4bGloOTZuLU5iYnpkazB1d3poTG5CSjd0VURBZ01CQUFHZ1BqQThCZ2txaGtpRzl3MEJDUTR4THpBdE1Dc0dBMVVkRVFRa01DS0NFWGQzZHk1emRXSnpkSEpoYTNRdVkyOXRnZzF6ZFdKemRISmhhM1F1WTI5dE1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQUNQcTMwU3JCRldCeHJ5cWEtOEZnaXhXQWxPazE1UkZ2QldHSkVBSnFCcmhia3ZzLUJXNDFNTlFTQ0FvX1d5UzJST0VvVVZoU0t2b3ByQTZGcUpHdHg2b1I0blJsRGo1bVU2dDIyZERhcXhrYW9LVmt2VHRCYWxsVFZjakc3VW5Md2otOUMxOEhwTlp6b3Qxc0Y5eWNvME83RTRYMTN3SF9KZ2VQRXhjS2pjVWxpbVhXMVQzRHVuV0JWbUNkdDFJYldabXpSaW0tNEI3cFNMR0cwbWNRbk1WVm5QYm55bnRhSjduaXVFY1R0Vk9uNjVrMjQzTGFzZ2o3NF9BUTg4NFNqYkl0cWpiYnZHQnd0b0VhY3BHMFlNUkpUS3V3ejRBdHJ0Z2hZQTFCMy11X1ZWUk45MUJ6XzU4ZFVRRHZsbmFzd1lDb0RrQWFfZ0xyN0JkRUxBWDZvIn0","signature":"fOORG8bx2VuiW0iy9zYMn3kW8KIq2SxUkVzeQ5PIHEGxZco7mrtcn9EeSTbqeznhc72Cy0djdtoZXBFSezIJt2qnV_n_wGCKYRRpwh_2ERRkkgMZJlMeN2tPxxpLTkYilvWkbbh97Pt5fGwvFfYfQ7izdJS6L4u6bOqM5V5Dcw2SPKnMfb5XaNQdXrvzizXnSs9b4z8WjOgFXAAtlKLPLyp-ivj3MhtXxG3PIr9yPo6qup05r8YUSvQFHYS5vj_GAIA7-gQvqVMSRac1tdrr96iS7IneiB1riW6beSY00gVkohPNmsQD9ymYnhqn7woDu4Jrwc_4z2g9f3diKg8s9AZSrmrdQqlIBseT6FpW4ggX9kdJQnklpl-K6-m4pZH9zYJH2hX0lKdH8d-xIHixRussTCjqfhueLcQ78-MBOycj3h9a4atxcjXBgyQz5QwjugZ6-8Y8GNH2nf5hvFw_Kkgw2Q4QT7v3efZtijXbjGx-EZLzP-gbiwIb42Hd-USDBDK6g7oJSPhsl1z49wJVUftPWLPCf6Zr1x-hkxocYx6vO7oOhFfD-nApq27HZgcVb3TwYirm42rpTB32fADlGxirSGJeU4ECppaVzF9iosr2kWMIJLYOloov29rP7uVjKpoogjKP2uMf6y9mW7nMhVfMN_XS7yG_emhmTGJwYNo"}' + headers: + User-Agent: + - Acme::Client v0.3.7 (https://github.com/unixcharles/acme-client) + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 403 + message: Forbidden + headers: + Server: + - nginx + Content-Type: + - application/problem+json + Content-Length: + - '188' + Boulder-Request-Id: + - m1P9p-WjSYdxCxRy2s-NVNihfEjN7v45L_rHVMzSvzU + Boulder-Requester: + - '496542' + Replay-Nonce: + - 2jy3MS7XmuyU0URa4n6ETU9z1pRZBd3fZyhS0vzhh5U + Expires: + - Tue, 15 Nov 2016 16:39:02 GMT + Cache-Control: + - max-age=0, no-cache, no-store + Pragma: + - no-cache + Date: + - Tue, 15 Nov 2016 16:39:02 GMT + Connection: + - close + body: + encoding: UTF-8 + string: |- + { + "type": "urn:acme:error:unauthorized", + "detail": "Error creating new cert :: Authorizations for these names not found or expired: substrakt.com, www.substrakt.com", + "status": 403 + } + http_version: + recorded_at: Tue, 15 Nov 2016 16:39:02 GMT +recorded_with: VCR 3.0.3 diff --git a/test/logger_test.rb b/test/logger_test.rb new file mode 100644 index 0000000..0e56fe9 --- /dev/null +++ b/test/logger_test.rb @@ -0,0 +1,39 @@ +require_relative 'test_helper' + +class LoggerTest < MiniTest::Test + + def setup + ENV['ENVIRONMENT'] = 'test' + ENV['CLOUDFLARE_API_KEY'] = 'fjsdjfghsdjfhgsd' + ENV['CLOUDFLARE_EMAIL'] = 'max@substrakt.com' + end + + def teardown + $redis.flushdb + end + + def test_log_a_message_to_console + assert_equal "----> This is a test message", Logger.log('This is a test message') + end + + def test_log_with_generator + VCR.use_cassette('new-certificate-debug') do + a = CertificateGenerator.new(challenge: CloudflareChallenge.new(zone: 'substrakt.com', + domains: ['www.substrakt.com', 'substrakt.com'], + client: AcmeClientRegistration.new(debug: true).client)) + assert_equal "[Zone: substrakt.com - Domains: www.substrakt.com, substrakt.com] ----> This is a test message", Logger.log('This is a test message', generator: a) + end + end + + def test_a_log_with_generator_should_also_write_to_redis + VCR.use_cassette('new-certificate-debug') do + a = CertificateGenerator.new(challenge: CloudflareChallenge.new(zone: 'substrakt.com', + token: 'testingtesting', + domains: ['www.substrakt.com', 'substrakt.com'], + client: AcmeClientRegistration.new(debug: true).client)) + Logger.log('Test message', generator: a) + assert_equal "Test message", $redis.get("latest_testingtesting") + end + end + +end diff --git a/test/preflight_check_test.rb b/test/preflight_check_test.rb new file mode 100644 index 0000000..767e97d --- /dev/null +++ b/test/preflight_check_test.rb @@ -0,0 +1,42 @@ +require_relative 'test_helper' + +class PreflightCheckTest < MiniTest::Test + + def setup + ENV['ENVIRONMENT'] = 'test' + end + + def teardown + $redis.flushdb + end + + def test_check_heroku_should_return_true_if_the_oauth_token_is_valid + VCR.use_cassette('check-heroku-authentication-succeed') do + a = PreflightCheck.new(heroku_token: '3c3b9d66-015a-4c91-bda2-14c79c88fb15') + assert_equal true, a.check_heroku + end + end + + def test_check_heroku_should_return_false_if_the_oauth_token_is_not_valid + VCR.use_cassette('check-heroku-authentication-failure') do + a = PreflightCheck.new(heroku_token: 'this-is-not-a-real-token') + assert_equal false, a.check_heroku + end + end + + def test_check_cloudflare_should_return_true_if_the_token_is_valid + VCR.use_cassette('check-cloudflare-authentiation-success') do + # These tokens have since been revoked from the cloudflare account. + a = PreflightCheck.new(cloudflare_token: '856a0658ade46696ec3e165827d728382f989', cloudflare_email: 'notarealemail@example.com') + assert_equal true, a.check_cloudflare + end + end + + def test_check_cloudflare_should_return_false_if_the_token_is_invalid + VCR.use_cassette('check-cloudflare-authentiation-failure') do + a = PreflightCheck.new(cloudflare_token: 'this-is-not-a-real-token', cloudflare_email: 'notarealemail@example.com') + assert_equal false, a.check_cloudflare + end + end + +end diff --git a/test/provisioners/heroku_test.rb b/test/provisioners/heroku_test.rb new file mode 100644 index 0000000..1a554c3 --- /dev/null +++ b/test/provisioners/heroku_test.rb @@ -0,0 +1,34 @@ +require_relative '../test_helper' + +class Provisioner::HerokuTest < MiniTest::Test + + def setup + ENV['HEROKU_OAUTH_KEY'] = '67705361-152c-4761-96aa-ec904d6cd071' + ENV['ENVIRONMENT'] = 'test' + end + + def teardown + $redis.flushdb + end + + def test_creating_a_new_heroku_provisioner_should_return_false_if_using_free_dynos + VCR.use_cassette('new-cert-provisioner-heroku') do + a = CertificateGenerator.new(challenge: CloudflareChallenge.new(zone: 'substrakt.com', + domains: ['www.substrakt.com', 'substrakt.com'], + client: AcmeClientRegistration.new(debug: true).client)) + b = Provisioner::Heroku.new(app_name: 'ssl-test-maxwoolf', certificate: a.certificate) + assert_equal false, b.provision! + end + end + + def test_creating_a_new_heroku_provisioner_should_return_true_if_successful + VCR.use_cassette('new-cert-provisioner-heroku-success') do + a = CertificateGenerator.new(challenge: CloudflareChallenge.new(zone: 'substrakt.com', + domains: ['www.substrakt.com', 'substrakt.com'], + client: AcmeClientRegistration.new(debug: true).client)) + b = Provisioner::Heroku.new(app_name: 'ssl-test-maxwoolf', certificate: a.certificate) + assert_equal true, b.provision! + end + end + +end diff --git a/test/test_helper.rb b/test/test_helper.rb new file mode 100644 index 0000000..9f2c28b --- /dev/null +++ b/test/test_helper.rb @@ -0,0 +1,19 @@ +ENV['RACK_ENV'] = 'test' +require 'minitest/autorun' +require 'rack/test' +require 'vcr' + +require_relative '../app' +require_relative '../lib/preflight_check' +require_relative '../lib/acme_client_registration' +require_relative '../lib/cloudflare_challenge' +require_relative '../lib/challenge' +require_relative '../lib/certificate_generator' +require_relative '../lib/provisioners/heroku' +require_relative '../lib/logger' + + +VCR.configure do |config| + config.cassette_library_dir = "test/fixtures/vcr_cassettes" + config.hook_into :webmock +end diff --git a/workers/base.rb b/workers/base.rb index 490669a..7211937 100644 --- a/workers/base.rb +++ b/workers/base.rb @@ -1 +1 @@ -require_relative 'worker' +require_relative 'cloudflare_challenge_worker' diff --git a/workers/cloudflare_challenge_worker.rb b/workers/cloudflare_challenge_worker.rb new file mode 100644 index 0000000..4b68f3d --- /dev/null +++ b/workers/cloudflare_challenge_worker.rb @@ -0,0 +1,35 @@ +require 'sidekiq' +require_relative '../lib/logger' +require_relative '../lib/certificate_generator' +require_relative '../lib/cloudflare_challenge' +require_relative '../lib/acme_client_registration' +require_relative '../lib/provisioners/heroku' + +class CloudflareChallengeWorker + include Sidekiq::Worker + + sidekiq_options :retry => false + + def perform(zone, domains, token, app_name, debug = true) + $redis = Redis.new(url: ENV['REDIS_URL']) + $redis.setex("status_#{token}", 3600, "started") + Logger.log("Starting challenge creation on zone: #{zone}, with domains: #{domains}.") + Logger.log("Debug is #{debug ? 'ON' : 'OFF'}") + a = CloudflareChallenge.new(zone: zone, + domains: domains, + token: token, + client: AcmeClientRegistration.new(debug: debug).client) + + begin + generator = CertificateGenerator.new(challenge: a) + cert = generator.certificate + Logger.log("Generated certificate", generator: generator) + Provisioner::Heroku.new(app_name: app_name, certificate: cert).provision! + $redis.setex("status_#{token}", 3600, "finished") + rescue Exception => e + Logger.log("Failed. Error given was #{e}") + $redis.setex("status_#{token}", 3600, "error") + $redis.setex("latest_#{token}", 3600, e) + end + end +end