从linux openssl v/s ruby openssl库创建csr的区别是什么:
openssl req-out mytest.csr-new-newkey rsa:2048-nodes-keyout
我的测试。
从上面创建的公钥如下所示:
-----开始证书请求请求-----\nMIC2JCCACACACACAQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQU2LWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWZP9W/YPZz31+ZyozD5S3Xb1Jjtdx0VBUrRuDKi4y+XRLZOEHVRISZJ\nVMI2L型4、4、4、4、4、4、4、4、4、4、5、4、4、4、4、4、6、6、8、8、8、8、8、8、8、8、8、8、8、8、8、8、8、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、6、6、6、5、2、5、4、4、4、6、5、2、5、5、4、4、6、6、5、5、4、4、4、6、5、4、4、4、4、4、6、4、4、4、4、6、4、4、4、4、4、4、4、4、4 KXNCzaB6f2I7ChBEkA8iEU\nse2lqss0eumbfh0hwe4uvwowqidaqaboawdqyjkozihvcnaqelbqadggebajzi\niySQfZpFYL7SZWWvUxdHPxmwWzkV/WzkV/WzkV/WzkV/nQ2Ps6cg3+bSWrJ+GA6EJCA4X8OGH545SNAUF/ZZXF0mBTU+U3asTiaE8Dz8P6/n5gz81GaA+ZMJWK7EZZRZ6+GED439M55SOT59EE5E5E5E5E5E5E5E5E5E5E5E5E5E5E5WZZZZZZZZQQQQZZZZZZZW3CZZZZZZZZZZZZZZZZW3PW3P3P3P3P3P3P3P3P3P3P3P3PZZZZZZQQV5WLotjkrzpecpldkkkkfrssvooboixzhpainzuhk7evnggxpjgfa4fk3upp0\nWUftUDM5l7ANFqv5ii0=\n--END
证书申请-----
但是,当我试图从ruby的open ssl库创建它时:
irb(主):004:0>私钥=OpenSSL::PKey::RSA.new 2048
irb(主):005:0>私有密钥公共密钥到pem
=>“----开始RSA PUBLIC关键点-----\NMIIBCGQQQQQQQQQQQQQQQQQQQQQQQQQQQQY2KXM6W/A7uittasJD1JWWW7W44licOYXN7N+YUV3K\N2IFIFump3NewueercCPSGD3BPCKWW4TCH9UO4UUQQU9U9OW9OAW7X7O0755+hix0S\NWPH45BWIOSQX0JR6SB667RBXXAF7RFDMVFO4AYZKAKVAMX0LO8E7RQO8E7RQO6WAEYYV2\NE6GYU2U2BPY60U7U7U7U7U7U7Ubrg7melx4e6zpqf\n5Aa4Wufm7SFEVMJ5/rztaloza5vwlprhb7luxyxldqckb8/6bok6kpu5qkjjhz\nwRabh7u8Vy6cRuz+Df7LTsRuamkZLG8KXQIDAQAB\n--END
RSA公钥-----\n“
上面的公钥要小得多。
两者有什么不同?
我如何让ruby的open ssl生成csr&private,比如linux openssl。
最佳答案
再看看你的other question,你的基本误解似乎是你认为CSR是一个公钥。CSR确实包含公钥,但它包含附加数据(例如主题和签名),是一种不同类型的对象。
您刚开始创建RSA密钥对,但随后必须生成CSR。你可以这样做:
require 'openssl'
# Create public/private key pair.
key = OpenSSL::PKey::RSA.new 2048
print key.to_pem()
print key.public_key.to_pem()
# Create CSR.
request = OpenSSL::X509::Request.new
request.subject = OpenSSL::X509::Name.parse 'C=US/CN=foobar'
request.public_key = key.public_key
request.sign(key, OpenSSL::Digest::SHA256.new)
print request.to_pem()
注意,ruby不能提示您输入subject字段,所以必须通过API指定它们。