Skip to content

Instantly share code, notes, and snippets.

@eternal-turtles
Forked from nickyp/self_signed_cert.rb
Created September 6, 2016 07:18
Show Gist options
  • Select an option

  • Save eternal-turtles/5cf3a123278dea21978e5eb556a0678a to your computer and use it in GitHub Desktop.

Select an option

Save eternal-turtles/5cf3a123278dea21978e5eb556a0678a to your computer and use it in GitHub Desktop.

Revisions

  1. eternal-turtles revised this gist Sep 6, 2016. 1 changed file with 0 additions and 0 deletions.
    Empty file removed gistfile2.txt
    Empty file.
  2. @nickyp nickyp created this gist Mar 25, 2011.
    Empty file added gistfile2.txt
    Empty file.
    30 changes: 30 additions & 0 deletions self_signed_cert.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,30 @@
    require 'rubygems'
    require 'openssl'

    key = OpenSSL::PKey::RSA.new(1024)
    public_key = key.public_key

    subject = "/C=BE/O=Test/OU=Test/CN=Test"

    cert = OpenSSL::X509::Certificate.new
    cert.subject = cert.issuer = OpenSSL::X509::Name.parse(subject)
    cert.not_before = Time.now
    cert.not_after = Time.now + 365 * 24 * 60 * 60
    cert.public_key = public_key
    cert.serial = 0x0
    cert.version = 2

    ef = OpenSSL::X509::ExtensionFactory.new
    ef.subject_certificate = cert
    ef.issuer_certificate = cert
    cert.extensions = [
    ef.create_extension("basicConstraints","CA:TRUE", true),
    ef.create_extension("subjectKeyIdentifier", "hash"),
    # ef.create_extension("keyUsage", "cRLSign,keyCertSign", true),
    ]
    cert.add_extension ef.create_extension("authorityKeyIdentifier",
    "keyid:always,issuer:always")

    cert.sign key, OpenSSL::Digest::SHA1.new

    puts cert.to_pem