我想知道如何从Apple .p12文件中提取密钥.根据我的有限理解,.p12文件是X504证书和私钥的组合.
我看到我遇到的每个.p12文件都有一个X504证书和至少一个密钥,在某些情况下还有两个密钥.这是因为每个.p12都有一个Apple开发人员密钥,有些还有一个额外的密钥(可能是Apple root授权密钥).我只考虑那些带有两个密钥的.p12文件.我的目标是区分具有一个密钥的那些.p12文件和具有两个密钥的那些.p12文件.
到目前为止,我已经使用OpenSSL来检查X504文件和任何.p12的密钥.例如,我有这个代码对目录中的所有.p12文件进行检查:
Dir.glob('*.p12').each do |p|
file = File.read(p)
p12 = OpenSSL::PKCS12.new(file, "")
# note that this new certificate is in an X509 format
cert = p12.certificate
puts p12.inspect()
puts cert.inspect()
end
Run Code Online (Sandbox Code Playgroud)
这是我的输出:
#<OpenSSL::PKCS12:0x007fcf33018920>
#<OpenSSL::X509::Certificate subject=/UID=FFBMT4K5/CN=iPhone Distribution: A.H. Belo Management Services, Inc./OU=FFBMT4K5/O=FFBMT4K5/C=US, issuer=/C=US/O=Apple Inc./OU=Apple Worldwide Developer Relations/CN=Apple Worldwide Developer Relations Certification Authority, serial=36597980220620, not_before=2012-01-11 16:30:22 UTC, not_after=2013-01-10 16:30:22 UTC>
Run Code Online (Sandbox Code Playgroud)
现在我的问题是得到钥匙.如果我做这样的事情:
puts p12.key
Run Code Online (Sandbox Code Playgroud)
我在加密数据上得到一个长字符串,如下所示:
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA4Pet7CZrPr4x/SKjMwy5avXmcguzQlix/vBq+qq7aKQhctKr
d5HE7wk4jWbDGj7Rf9ckeFFMktTTbKYmnKCywCct/uJmgavFl1+t45DIQL2V1JMU
JSXvtjDXoKFweKQgdiha5mBNL70+ivqxMzJJw19E+MhFoZ6tFOgQ5gPLcDLR5WTU
ezxH9RbXGWbq+CMBjJ+lw8/Ako7IOm+d95ZTM6u333qp0dsn+1/I/zGeWE1gJXIl
8mIkvrp7+BDTvXHYALADwXnXijqvd/bANfetsDQ+gxRnc06dFt114JUuptcXGwbg
//ykDzNYhuibQD1Z65KfTB/ntQ1aE5FtHEXirwIDAQABAoIBACNCrt/0pZqP9QXY
B/xYYjeBkz0M2GvtuvhadmoTmIwuLY/xtS5oipVsvJBtKudSMUP4VJ8HHxlkgj7l
S+gAyAOWIH9yvN5WLgIr3PVuG/UJwhIve1jXOVs1DJcAtsAx+WSLrrOtJGv3HXZr
FJsRpr4YkJbtzPwoArjkJsHmllxfT2zeQPMJy+RQ/qlHUqsude/ahC0I3RiW3SgB
EKTNM1vGTEkox8bUUhHqNY3ERlihFpZC2wSkroETDY3RkSjuPkNy7uT/b66a/qjj
qaIA0YLhNOYGdN2llJN5GJjYYVKakpiipqcHCFrV1+JtbFB2tKhqAvK6fjCZcSFF …Run Code Online (Sandbox Code Playgroud) 我需要做的就是从CSV文件中获取标题.
file.csv是:
"A", "B", "C"
"1", "2", "3"
Run Code Online (Sandbox Code Playgroud)
我的代码是:
table = CSV.open("file.csv", :headers => true)
puts table.headers
table.each do |row|
puts row
end
Run Code Online (Sandbox Code Playgroud)
这给了我:
true
"1", "2", "3"
Run Code Online (Sandbox Code Playgroud)
我已经看了几个小时的Ruby CSV文档,这让我发疯.我确信必须有一个简单的单行程序可以将标题返回给我.有任何想法吗?
我试图将一个简单的CSV文件读入HTML表格,以便在浏览器中显示,但我遇到了麻烦.这就是我正在尝试的:
控制器:
def show
@csv = CSV.open("file.csv", :headers => true)
end
Run Code Online (Sandbox Code Playgroud)
视图:
<% @csv.read %>
<% @csv.headers.each do |head| %>
<%= head %>
<% end %>
<table border="1">
<% @csv.each do |row| %>
<tr>
<% row.each do |element| %>
<td> <%= element %> </td>
<% end %>
</tr>
<% end %>
</table>
Run Code Online (Sandbox Code Playgroud)
输出:
Name Start Date End Date Quantity Postal Code
Run Code Online (Sandbox Code Playgroud)
基本上我只获取标题,并且不会读取和呈现CSV正文.
我今天正在更新到Rails 4.1.我跑了bundle update rails,一切似乎都很好地更新了.但是,当我现在尝试运行任何rake任务时,我收到以下错误:
$ rake --trace
rake aborted!
LoadError: cannot load such file -- active_support/core_ext/string/encoding
/Users/foobar/.rvm/gems/ruby-2.0.0-p247@gemset/gems/activesupport-4.1.0/lib/active_support/dependencies.rb:247:in `require'
/Users/foobar/.rvm/gems/ruby-2.0.0-p247@gemset/gems/activesupport-4.1.0/lib/active_support/dependencies.rb:247:in `block in require'
/Users/foobar/.rvm/gems/ruby-2.0.0-p247@gemset/gems/activesupport-4.1.0/lib/active_support/dependencies.rb:232:in `load_dependency'
/Users/foobar/.rvm/gems/ruby-2.0.0-p247@gemset/gems/activesupport-4.1.0/lib/active_support/dependencies.rb:247:in `require'
/Users/foobar/.rvm/gems/ruby-2.0.0-p247@gemset/gems/bsm-sso-client-0.8.4/lib/bsm/sso/client/url_helpers.rb:1:in `<top (required)>'
/Users/foobar/.rvm/gems/ruby-2.0.0-p247@gemset/gems/bsm-sso-client-0.8.4/lib/bsm/sso/client/strategies/ticket.rb:2:in `<class:Ticket>'
/Users/foobar/.rvm/gems/ruby-2.0.0-p247@gemset/gems/bsm-sso-client-0.8.4/lib/bsm/sso/client/strategies/ticket.rb:1:in `<top (required)>'
/Users/foobar/.rvm/gems/ruby-2.0.0-p247@gemset/gems/activesupport-4.1.0/lib/active_support/dependencies.rb:247:in `require'
/Users/foobar/.rvm/gems/ruby-2.0.0-p247@gemset/gems/activesupport-4.1.0/lib/active_support/dependencies.rb:247:in `block in require'
/Users/foobar/.rvm/gems/ruby-2.0.0-p247@gemset/gems/activesupport-4.1.0/lib/active_support/dependencies.rb:232:in `load_dependency'
/Users/foobar/.rvm/gems/ruby-2.0.0-p247@gemset/gems/activesupport-4.1.0/lib/active_support/dependencies.rb:247:in `require'
/Users/foobar/.rvm/gems/ruby-2.0.0-p247@gemset/gems/bsm-sso-client-0.8.4/lib/bsm/sso/client/strategies.rb:5:in `<top (required)>'
/Users/foobar/.rvm/gems/ruby-2.0.0-p247@gemset/gems/activesupport-4.1.0/lib/active_support/dependencies.rb:247:in `require'
/Users/foobar/.rvm/gems/ruby-2.0.0-p247@gemset/gems/activesupport-4.1.0/lib/active_support/dependencies.rb:247:in `block in require'
/Users/foobar/.rvm/gems/ruby-2.0.0-p247@gemset/gems/activesupport-4.1.0/lib/active_support/dependencies.rb:232:in `load_dependency'
/Users/foobar/.rvm/gems/ruby-2.0.0-p247@gemset/gems/activesupport-4.1.0/lib/active_support/dependencies.rb:247:in `require'
/Users/foobar/.rvm/gems/ruby-2.0.0-p247@gemset/gems/bsm-sso-client-0.8.4/lib/bsm/sso/client.rb:100:in `<top (required)>'
/Users/foobar/.rvm/gems/ruby-2.0.0-p247@gemset/gems/bsm-sso-client-0.8.4/lib/bsm-sso-client.rb:1:in `require'
/Users/foobar/.rvm/gems/ruby-2.0.0-p247@gemset/gems/bsm-sso-client-0.8.4/lib/bsm-sso-client.rb:1:in `<top (required)>'
/Users/foobar/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `require'
/Users/foobar/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `block (2 levels) in require'
/Users/foobar/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `each'
/Users/foobar/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in …Run Code Online (Sandbox Code Playgroud) 我从OSX El Capitan更新到MacOS Sierra并开始看到PhantomJS错误.
$ rspec <some feature test
... The detector #<struct Cliver::Detector command_arg=nil, version_pattern=nil> failed to detect theversion of the executable at '/app/node_modules/phantomjs-prebuilt/bin/phantomjs'
我该如何解决这个问题?