तो मैं एडब्ल्यूएस आईओटी का उपयोग कर रहा हूं और बैकएंड में रेल पर एक सर्वर चल रहा है। मुझे क्लाइंट के लिए कुछ कर्ट जेनरेट करने की आवश्यकता है और एडब्ल्यूएस वेबसाइट पर उदाहरण केवल ओपनएसएल कमांड लाइन का उपयोग करके इसे करने का एक तरीका प्रदान करता है। यदि संभव हो तो मैं टर्मिनल में रूबी रन कमांड बनाने से बचने के लिए रूबी में ओपन एसएसएल लाइब्रेरी का उपयोग करना चाहता हूं जिससे समस्याएं हो सकती हैं।
ये वे आदेश हैं जिन्हें मैं रूबी का उपयोग करके दोहराना चाहता हूं

openssl genrsa -out deviceCert.key 2048    

openssl req -new -key deviceCert.key -out deviceCert.csr    

openssl x509 -req -in deviceCert.csr -CA sampleCACertificate.pem -CAkey sampleCACertificate.key -CAcreateserial -out deviceCert.crt -days 99999 -sha256  

पहली पंक्ति जो मुझे मिली और मुझे लगता है कि मैं कर सकता हूँ

require 'openssl'    
rsa_key = OpenSSL::PKey::RSA.new(2048)    

लेकिन मैं अंतिम 2 पंक्तियों पर अटका हुआ हूँ। कोई विचार?

2
Tomer Shemesh 1 नवम्बर 2017, 21:55

2 जवाब

सबसे बढ़िया उत्तर

अंततः इस rdoc उदाहरण का उपयोग करके इसका पता लगाने में सक्षम था http: //ruby-doc.org/stdlib-2.0.0/libdoc/openssl/rdoc/OpenSSL/X509/Certificate.html#method-c-new

0
Tomer Shemesh 5 नवम्बर 2017, 20:03

स्व-हस्ताक्षरित प्रमाणपत्र बनाने के लिए यहां एक उदाहरण दिया गया है।

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

उदाहरण के लिए स्रोत

0
John Hanley 2 नवम्बर 2017, 06:11