gpt4 book ai didi

ruby-on-rails - 从 linux openssl 与 ruby​​ openssl 库创建的 csr 之间的区别

转载 作者:太空宇宙 更新时间:2023-11-04 09:24:36 25 4
gpt4 key购买 nike

从 linux openssl 和 ruby​​ openssl 库创建的 csr 有什么区别:

openssl req -out mytest.csr -new -newkey rsa:2048 -nodes -keyout mytest.

从上面创建的公钥看起来像这样:

-----BEGIN CERTIFICATE REQUEST-----\nMIIC2jCCAcICAQAwgZQxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJNRDEWMBQGA1UE\nBwwNU2lsdmVyIFNwcmluZzELMAkGA1UECgwCTUwxCzAJBgNVBAsMAkVTMR8wHQYD\nVQQDDBZtc2NsaWVudDI4LnNhbXRlc3QuY29tMSUwIwYJKoZIhvcNAQkBFhZtc2Ns\naWVudDI4QHNhbXRlc3QuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC\nAQEAvMJwLZp9w/YPZz31+ZyozD5S3Xb1Jjtdx0VBUrRuDKi4y+XRlzOeHHvRiSZJ\nVMI2LLLta0Zel4ULK4vSoP2OH5ezQbAGUslxePupFFulPZUJJrNLVZJ/9jNOgKoI\n6tu+8TGP2UivOGfW5OQFYLFLZJad/PP7IoAOoYB79lqnE/+3/vjys5eHL6dOZ/0I\nmUj8G5jw1thZlOQpA4Es2Xoxnvkr1kiJpoa+4s8L6kX2PLRCoWmP1ZqQ1pi3oHoP\n6kLo/qQ2KiIrPcrDGi5aGtKkCrj64JAS4IIcLiBvI+KXNCzaB6f2I7ChBEkA8iEU\nSe2LqqSs0eumBFH0HwE4uvwOWQIDAQABoAAwDQYJKoZIhvcNAQELBQADggEBAJZI\niySQfZpFYL7SZWWvUxdHPxmwrw3PdcPSAJZQImoMNCSFC0kCtIzl+LleZN8/WzkV\nQ2Ps6cg3+bSWrJ+gA6EjcA4X8oGHN545snaOUf/ZRXf0mKbtu+U3asTiaE8Dz8P6\n5gz81GaA+ZDmjwk7ezrz6+gED439M5sot5yaeH8EfD5c49y0hOP9gg1VDJMNiwsf\nVARrIu+eHCPi2PXzBXZTPdivzn3cZQU0vsu91DzuHHXzCQv5wYE/iVh5lyWjLeFS\nFg5m4mLOtjKRzPeCpldkGkFRssvOoBOixZHPainzUHKk7eVNggXPjgFa4fk3uPp0\nWUftUDM5l7ANFqv5ii0=\n-----END CERTIFICATE REQUEST-----

但是,当我尝试从 ruby​​ 的开放 ssl 库创建它时:

irb(main):004:0> private_key = OpenSSL::PKey::RSA.new 2048

irb(main):005:0> private_key.public_key.to_pem => "-----BEGIN RSA PUBLIC KEY-----\nMIIBCgKCAQEAqDaG8Je5YY2kXM6w/a7uiTTAsJd1JwkP7w44licoYxn7N+sYuv3K\n2iFAfumP3NEWueeRcCPSiGD3BpCKwxo4tch9uOFGOuaWYiK9XC7OOZV755+hix0S\nWph45bwiOSQX0Jr6SB6T7RBXxAF7RFdMVfo4AyZkakVaMxr0lVO8E7RqO6WaeYV2\ne6GYU2BPy60U7iXVK+15RGMQIWaiUt5iCGzJqBn+IE1GQJpytbRg7melx4e6zPQf\n5Aa4Wufm7SFEVMJ5/rzTALOZa5VWlPRhb7luxYXXLDqckB8/6Bok6kpu5qkJjHHz\nwRabh7u8Vy6cRuz+Df7LTsRuamkZLG8KXQIDAQAB\n-----END RSA PUBLIC KEY-----\n"

上面的公钥要小得多。

两者有什么区别?

我如何让 ruby​​ 的 open ssl 像 linux openssl 一样生成一个 csr & private。

最佳答案

看着你的other question同样,您的根本误解似乎是您认为 CSR 是公钥。 CSR 确实包含公钥,但它包含其他数据(例如主题和签名)并且是一种独特类型的对象。

您从创建 RSA key 对开始,但随后必须生成 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 无法提示您输入主题字段,因此您必须通过 API 指定它们。

关于ruby-on-rails - 从 linux openssl 与 ruby​​ openssl 库创建的 csr 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37931983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com