2016-10-14 1 views
0

OpenSSLツールを使用してCLIからSSL証明書を解析できます。私はブラウザウィンドウを起動せずにドメインとSSL証明書をすばやく照会するためにこれを使用します。私はRoRで遊んでおり、これをWebページ機能として実装したいと考えています。Ruby on RailsでX509証明書(およびストア情報)を解析する

OpenSSLの宝石を読み上げると、いくつかの解析機能がありますが、既存のSSL証明書からデータを解析して(配列やファイルに)格納することはできません。

PHPはhttp://php.net/manual/en/function.openssl-x509-parse.php機能でこれを行うことができます。

私はSOや他の場所で別のスレッドを読んできました。ほとんどの解析は、自分で作成する証明書のようです。

これはRailsで実行可能なことはありますか?

答えて

0

いくつかのローカルRubyの助けを借りて、私はこの問題に対する2つの異なるアプローチを発見しました。

最初のアプローチはここではSO-HTTPS URL server certificate in Rubyと答えています。 peer_clientオプションをHTTPClientとすると、暗号化された証明書を取得できます。意図どおりに動作します。

私はこのブログでpostを実行し、OpenSSLsocketというアプローチを使用しました。それはまたかなりうまくいく。私はウェブサイトのSSL証明書を読んで、必要な情報を抽出して表示することができました。

require 'socket' 
require 'openssl' 

tcp_client = TCPSocket.new("example.com", 443) 
ssl_client = OpenSSL::SSL::SSLSocket.new(tcp_client) 
ssl_client.connect 
cert = OpenSSL::X509::Certificate.new(ssl_client.peer_cert) 
ssl_client.sysclose 
tcp_client.close 

certprops = OpenSSL::X509::Name.new(cert.issuer).to_a 
issuer = certprops.select { |name, data, type| name == "O" }.first[1] 
results = { 
     :valid_on => cert.not_before, 
     :valid_until => cert.not_after, 
     :issuer => issuer, 
     :valid => (ssl_client.verify_result == 0) 
     } 

は、一方が他方よりも優れているか否かの質問を頼む:ここ

は、上記のブログ記事からコードスニペットです。私は今のところ知っているRubyデベロッパーほど深くない。私はOpenSSLオプションを使うことに決めました。これまでのところ私のニーズにはうまくいきました。

関連する問題