gpt4 book ai didi

ruby - 使用通用 CA 动态创建 SSL 证书/ key

转载 作者:太空宇宙 更新时间:2023-11-03 14:10:52 24 4
gpt4 key购买 nike

我在浏览 Ruby OpenSSL 库的困惑世界时遇到了一些麻烦。

期望的最终结果是动态创建用于 WEBrick::HTTPProxyServer 的 SSL 服务器证书和 key ,每个都有一个 CN 对应于请求的域和所有共享同一个 CA。

这样做的原因是允许 HTTP 代理通过首先将 CACert 加载到浏览器中来拦截和监视启用了 HSTS header 的网站的 HTTPS 流量,从而使我的 self 每个给定站点的签名证书看起来都是合法的。

如果有人对此类代码示例有经验,我们将不胜感激。

提前致谢。

附言。这里没有什么险恶的事情发生,只是improving一个featurepenetration testing software .

最佳答案

想通了。 :)

ca     = OpenSSL::X509::Certificate.new( File.read( INTERCEPTOR_CA_CERTIFICATE ) )
ca_key = OpenSSL::PKey::RSA.new( File.read( INTERCEPTOR_CA_KEY ) )

keypair = OpenSSL::PKey::RSA.new( 4096 )

req = OpenSSL::X509::Request.new
req.version = 0
req.subject = OpenSSL::X509::Name.parse(
"CN=www.origin-server.com/O=Arachni/OU=Proxy/L=Athens/ST=Attika/C=GR"
)
req.public_key = keypair.public_key
req.sign( keypair, OpenSSL::Digest::SHA1.new )

cert = OpenSSL::X509::Certificate.new
cert.version = 2
cert.serial = rand( 999999 )
cert.not_before = Time.new
cert.not_after = cert.not_before + (60 * 60 * 24 * 365)
cert.public_key = req.public_key
cert.subject = req.subject
cert.issuer = ca.subject

ef = OpenSSL::X509::ExtensionFactory.new
ef.subject_certificate = cert
ef.issuer_certificate = ca

cert.extensions = [
ef.create_extension( 'basicConstraints', 'CA:FALSE', true ),
ef.create_extension( 'extendedKeyUsage', 'serverAuth', false ),
ef.create_extension( 'subjectKeyIdentifier', 'hash' ),
ef.create_extension( 'authorityKeyIdentifier', 'keyid:always,issuer:always' ),
ef.create_extension( 'keyUsage',
%w(nonRepudiation digitalSignature
keyEncipherment dataEncipherment).join(","),
true
)
]
cert.sign( ca_key, OpenSSL::Digest::SHA1.new )

有用的资源:

  1. > http://users.nccs.gov/~fwang2/ruby/ruby_ssl.html
  2. > http://acidx.net/wordpress/2012/09/creating-a-certification-authority-and-a-server-certificate-on-ubuntu/

关于ruby - 使用通用 CA 动态创建 SSL 证书/ key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30814230/

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