Tag: 证书

在Rails应用程序中签署新证书

我有一个带有公共REST API的Rails应用程序,它使用SSL客户端证书对API客户端进行身份validation。 我希望该应用程序充当简单的CA. 管理员用户应该能够访问网站上的页面并请求新证书。 应用程序应生成一个新的SSL证书,使用应用程序的私钥签名,并以某种forms将其返回给管理员用户。 然后,admin用户将在客户端应用程序中安装此证书。 然后,这些应用程序将能够使用新证书来访问REST API。 实现这个的最简单方法是什么? 在将openssl配置为服务器上的CA之后,我知道生成和签署新证书的唯一方法是使用openssl命令行(例如, 这样 )。 我是否需要这样做,并使用Rails中的反引号与openssl进行通信? 这看起来很脆弱。 我应该如何将证书退还给管理员? 我可以将它们作为文本文件传递出来以下载。 我见过CA Web界面,允许用户从浏览器请求证书,然后将证书直接安装到浏览器中。 然后,管理员必须导出证书以将其传递给客户端脚本。 我不认为Rails有任何“ acts_as_CA ”gem? [请注意,我已经知道如何根据我的私钥validation客户端请求。 这个问题特别涉及颁发新证书。]

什么原因导致在ruby中构建公钥时“PUB键和PRIV键都没有嵌套asn1错误”?

使用OpenSSL :: PKey :: RSA模块通过传递.pem文件构建公钥时,响应的原因是什么: OpenSSL::PKey::RSAError: Neither PUB key nor PRIV key:: nested asn1 error from /Users/Matt/projects/placepop/lib/apn.rb:48:in `initialize’ from /Users/Matt/projects/placepop/lib/apn.rb:48:in `new’ from /Users/Matt/projects/placepop/lib/apn.rb:48:in `open’ from (irb):1 这是来源: cert = File.join(rails_root, ‘config’, ‘apns’, ‘sandbox-cert.pem’) APN_CONFIG = { :delivery => { :host => ‘gateway.sandbox.push.apple.com’, :cert => cert, :passphrase => “”, :port => 2195 }, :feedback => { […]

使用Ruby实现HTTPS证书/ pubkey固定

我有自己的HTTPS服务,我正在与另一个Ruby应用程序交谈。 我想在我的app repo中的已知时间点保存它的公钥证书,并将服务发送给我的公钥与存储的副本进行比较。 要在外部服务器上安装证书,我可能需要将其转换为某种格式,因此服务器发送的文件不会相同。 我想对那个特定的公钥进行各种修改。 我需要使用OpenSSL比较哪些证书字段来validation从服务收到的PK是否与从服务器收到的PK相同? 我想CN和签名必须至少匹配。 还有什么需要检查才能知道我所拥有的公共证书与我收到的证书完全一致(即证书是否相同)? 也许OSSL有一个内置的设施吗?

如何在ruby中为OpenSSL设置ca-bundle路径

我在ruby中遇到问题,OpenSSL无法validationSSL证书。 我认为这是由脚本不知道ca-bundle.pem引起的。 是否有可能手动配置ca-bundle.pem的路径?

如何在不访问HTTP层的情况下模仿浏览器X509客户端证书validation

我正在通过X509客户端证书阅读有关身份validation的文章,但由于我在Heroku上运行应用程序,因此无法让服务器请求客户端证书,因此我无法访问HTTP层。 我在Stackoverflow上看到了对类似问题的回复,该问题表示使用自定义标头。 我想模仿使用自定义标头的应用程序服务器validation客户端证书。 我正在使用Ruby,所以如果有人知道已经完成此任务的库,那将会有所帮助。 否则,是否可能,我需要什么资源? 我发现了这个问题,但它是关于validationSSL证书,我不确定是否适用。 对于这个问题的模糊性我很抱歉,但我正处于这个问题的起点。

“SSL_connect返回= 1 errno = 0状态= SSLv3读取服务器证书B:证书validation失败”

我正在设置Redmine来通过IMAP从gmail中查询电子邮件。 尝试运行适当的Ruby任务会导致以下错误: SSL_connect返回= 1 errno = 0状态= SSLv3读取服务器证书B:证书validation失败 当Ruby尝试通过OpenSSL连接imap.gmail.com时出现错误,如下代码行: imap = Net::IMAP.new(host, port, ssl) 当我尝试从OpenSSL命令行连接上述主机时,它成功连接。 我知道Ruby没有找到一些证书,我看到了各种解决方案提案,但不幸的是我仍然无法弄清楚如何解决这个问题(我不使用rvm)。 我试图通过设置OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE来禁用validation,但得到“动态常量赋值”错误。 我的环境: Linux debianvm 3.2.0-4-amd64 #1 SMP Debian 3.2.41-2+deb7u2 x86_64 GNU/Linux root@debianvm:~# ruby –version ruby 1.9.3p429 (2013-05-15 revision 40747) [x86_64-linux] root@debianvm:~# rails –version Rails 3.2.13

如何以编程方式检查证书是否已被撤销?

我正在开发一个xcode自动构建系统。 执行一些预构建validation时,我想检查指定的证书文件是否已被撤销。 我了解security verify-certvalidation其他证书属性,但不validationrevokation。 我怎样才能检查是否有效? 我正在用Ruby编写构建系统,但我对任何语言的思想都很开放。 我读了这个答案( Openssl – 如何检查证书是否被撤销 )但是底部的链接( OpenSSL现在是否自动处理CRL(证书撤销列表)? )进入的材料对我来说有点过于牵连(上传撤销证书的用户是远远不够的情况)。 是否有更简单/ ruby​​导向的方法来检查revokation? 提前致谢!

使用OpenSSL在证书文件中读取Ruby错误

我试图从irb与ruby 1.8.7(或1.9.2)做一个简单的OpenSSL::X509::Certificate.new(File.read(“testuser.p12”)) ,两者的结果相同。 我得到的错误是OpenSSL::X509::CertificateError: nested asn1 error 这是一个ruby问题,还是这表明证书本身格式不正确? 我发现一些类似的报告围绕亚马逊证书展示了这些错误,结果certificate是证书本身。 它虽然在浏览器中工作。 关于如何解决这个问题的建议?

SSL_connect SYSCALL返回= 5 errno = 0 state = SSLv2 / v3读取服务器hello A.

我有一个ruby客户端,使用IMAP和SSL连接到Exchange服务器。 我使用Ruby Net :: IMAP库(它使用openssl)来连接。 它已经好几个月了。 交换服务器管理员从godaddy安装了新的证书,现在我收到此错误: SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 read server hello A 有谁知道这个错误意味着什么? (我试过谷歌搜索) 我怀疑新证书存在问题导致此问题,但我不知道如何排除故障。 另外我知道你可以在使用NET:HTTP时禁用证书validation: http.verify_mode = OpenSSL::SSL::VERIFY_NONE if http.use_ssl? 但我无法弄清楚如何使用NET:IMAP。 我想禁用它以查看这是否是问题。 至于代码我使用:我使用这个(或非常接近这个) http://github.com/look/fetcher/blob/master/lib/fetcher/imap.rb 我尝试更改为:@connection = Net :: IMAP.new(@ server,@ port,@ sss,nil,false) 这是堆栈跟踪 checking emails on: Tue Aug 17 20:48:01 +0000 2010 rake aborted! SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 read […]

使用Ruby中的SSLServervalidation客户端证书

下面是我用来设置服务器的代码: require ‘socket’ require ‘openssl’ socket = TCPServer.new(‘127.0.0.1’, 4433) ssl_context = OpenSSL::SSL::SSLContext.new() ssl_context.cert = OpenSSL::X509::Certificate.new(File.open(“ssl/server/server.crt”)) ssl_context.key = OpenSSL::PKey::RSA.new(File.open(“ssl/server/server.key”)) ca_cert = OpenSSL::X509::Certificate.new(File.open(“ssl/ca/ca.crt”)) ssl_socket = OpenSSL::SSL::SSLServer.new(socket, ssl_context) Thread.start(ssl_socket.accept) do |s| puts “Connected to #{s.peeraddr.last}” if s.peer_cert.verify(ca_cert.public_key) puts “Certificate verified” else puts “Certificate invalid” end end 和客户: require ‘socket’ require ‘openssl’ socket = TCPSocket.new(‘127.0.0.1’, 4433) ssl_context = OpenSSL::SSL::SSLContext.new […]