#!/usr/bin/env ruby # Usage: generate_certs # Generate test certs for testing Faraday with SSL require File.expand_path("../ruby", __FILE__) require 'openssl' require 'fileutils' # Adapted from WEBrick::Utils. Skips cert extensions so it # can be used as a CA bundle def create_self_signed_cert(bits, cn, comment) rsa = OpenSSL::PKey::RSA.new(bits) cert = OpenSSL::X509::Certificate.new cert.version = 2 cert.serial = 1 name = OpenSSL::X509::Name.new(cn) cert.subject = name cert.issuer = name cert.not_before = Time.now cert.not_after = Time.now + (365*24*60*60) cert.public_key = rsa.public_key cert.sign(rsa, OpenSSL::Digest::SHA1.new) return [cert, rsa] end cert, key = create_self_signed_cert(1024, [['CN', 'localhost']], 'Faraday Test CA') FileUtils.mkdir_p 'tmp' File.open('tmp/faraday-cert.key', 'w') {|f| f.puts(key) } File.open('tmp/faraday-cert.crt', 'w') {|f| f.puts(cert.to_s) }