मैं रूबी में एक स्व-हस्ताक्षरित प्रमाणपत्र उत्पन्न करने की कोशिश कर रहा हूं, लेकिन परेशानी में भाग रहा हूं। यह वही है मैं वर्तमान में अभी है:रूबी स्व-हस्ताक्षरित प्रमाणपत्र उत्पन्न करें
[Thu Mar 04 10:58:44 2010] [error] Init: Unable to read server certificate from file /etc/ssl/certs/gnarly.pem
[Thu Mar 04 10:58:44 2010] [error] SSL Library Error: 218529960 error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Thu Mar 04 10:58:44 2010] [error] SSL Library Error: 218595386 error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error
यह वही मेरी प्रमाण पत्र का कहना है है:
require 'openssl'
if ARGV.length != 3 then
puts "USAGE: #{__FILE__} <type[der|pem]> <private-out> <public-out>"
exit
end
type = ARGV[0].downcase
privateKeyFile = ARGV[1]
publicKeyFile = ARGV[2]
values = [{ 'C' => 'US'},
{'ST' => 'SomeState'},
{ 'L' => 'SomeCity'},
{ 'O' => 'Organization'},
{'OU' => 'Organizational Unit'},
{'CN' => "somesite.com"}]
name = values.collect{ |l| l.collect { |k, v| "/#{k}=#{v}" }.join }.join
key = OpenSSL::PKey::RSA.generate(1024)
pub = key.public_key
ca = OpenSSL::X509::Name.parse(name)
cert = OpenSSL::X509::Certificate.new
cert.version = 2
cert.serial = 1
cert.subject = ca
cert.issuer = ca
cert.public_key = pub
cert.not_before = Time.now
cert.not_before = Time.now + (360 * 24 * 3600)
File.open(privateKeyFile + "." + type, "w") {|f| f.write key.send("to_#{type}") }
File.open(publicKeyFile + "." + type, "w") {|f| f.write cert.send("to_#{type}") }
जब मैं उत्पन्न निजी कुंजी और अपाचे में प्रमाणपत्र का उपयोग करने का प्रयास करें, मैं इस त्रुटि मिलती है
-----BEGIN CERTIFICATE-----
<lots of stuff>
-----END CERTIFICATE-----
यह अपने आप में एक सीएसआर, जो बातें मैं ऑनलाइन पाया है के सबसे कि apache2 त्रुटि के बारे में क्या कहते हैं (है कि मैं सीएसआर मिल गया है हो सकता है और CERT मिश्रित) है के बजाय एक प्रमाण पत्र कहता है। मेरा अनुमान है कि मैं सही प्रकार का प्रमाण पत्र नहीं बना रहा हूं। शायद मुझे सीरियल या संस्करण विशेषताओं को बदलना है। इसके अलावा, मैं कहीं भी स्वयं हस्ताक्षर नहीं कर रहा हूं, ऐसा नहीं कि मैं वैसे भी जानता हूं। मैं जानता हूँ कि आप इस हालांकि की तरह कुछ कर सकते हैं:
require "openssl"
key = OpenSSL::PKey::RSA.generate(1024)
signature = key.sign(OpenSSL::Digest::SHA1.new, "data to sign")
अनुस्मारक: मेरा लक्ष्य है, मेरे लंबे-ish सवाल रास्ते पर फोकस खो दिया एक स्व-हस्ताक्षरित प्रमाणपत्र उत्पन्न करने के लिए है के मामले में।
संपादित करें: मुझे लगता है कि असली सवाल यह है कि एक प्रमुख
किसी भी एक है जो मैं सीएसआर exammple तैयार दिलचस्पी होगी रूबी में, आप इसे यहां पा सकते हैं: https://gist.github.com/1922961 – mtfk