aboutsummaryrefslogtreecommitdiffstats
path: root/test/gen_cert.rb
blob: 9d33f48f5d87bb9cb2d106f27f5b190912cce452 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/env ruby

require 'openssl'
include OpenSSL
include X509
include PKey

p ca = Certificate.new(File.open("./0cert.pem").read)
p ca_key = RSA.new(File.open("./0key.pem").read)

p key = RSA.new(1024)
p new = Certificate.new
name = [['C', 'CZ'],['O','Ruby'],['CN','RA Officer']]
p new.subject = Name.new(name)
p new.issuer = Name.new(name)
p new.not_before = Time.now
p new.not_after = Time.now + (365*24*60*60)
p new.public_key = key
p new.serial = 1
p new.version = 3
ef = ExtensionFactory.new
ef.subject_certificate = new
ef.issuer_certificate = ca
p ext1 = ef.create_extension("basicConstraints","CA:FALSE")
p ext2 = ef.create_extension("nsComment","Generated by OpenSSL for Ruby.")
p ext3 = ef.create_extension("subjectKeyIdentifier", "hash")
p ext4 = ef.create_extension("authorityKeyIdentifier", "keyid:always,issuer:always")
new.extensions = [ext1, ext2, ext3, ext4]
p new.sign(ca_key, Digest::SHA1.new)

f = File.new("./#{new.serial}cert.pem","w")
f.write new.to_pem
f.close

puts "Enter Password:"
p pass = gets.chop!

f = File.new("./#{new.serial}key.pem", "w")
f.write key.export(Cipher::DES.new(Cipher::EDE3, Cipher::CBC), pass)
f.close