質問 ruby OpenSSL::X509::DEFAULT_CERT_FILEを上書きする方法は?(解決済)
Q&A
Closed
2020年08月13日 初稿
2020年08月13日19:33 追記
2020年08月14日 解決
macosx ruby 2.5.8 openssl1.1.1g
質問1
EC2上のログをtd-agent使ってCloudWatch Logsに投げようとしたらSSL認証エラーになった話 - Alligator Swamp
https://alligatorswamp.hatenablog.com/entry/2015/04/21/163234
上記URLを参考にOpenSSL::X509::DEFAULT_CERT_FILEを書き換え挑戦したが出来なかった。
どうすればいいでしょうか?
/usr/local/stow/ruby-258以下にインストールしていますが、
どこのファイルが書き変わるのか分かっていません。
試したこと
ssl $ pwd
/usr/local/stow/openssl-111g/ssl
ssl $ ls cacert.pem
cacert.pem
ssl $ ruby -r openssl -e 'p OpenSSL::X509::DEFAULT_CERT_FILE_ENV'
"SSL_CERT_FILE"
ssl $ export SSL_CERT_FILE=/usr/local/stow/openssl-111g/ssl/cacert.pem
ssl $ echo $SSL_CERT_FILE
/usr/local/stow/openssl-111g/ssl/cacert.pem
ssl $ ruby -r openssl -e 'p OpenSSL::X509::DEFAULT_CERT_FILE'
"/usr/local/stow/openssl-111g/ssl/cert.pem"
ssl $
以下は全て2020年08月13日(木)19:33追記
●その後の調査
(2016.02)
あのう・・な毎日:Win8+Ruby2.0で SSLのルート証明書の設定・・・諦めた・・・とおもいきや回避! → ・Rubyによるクローラー開発技法
http://anou365.blog.fc2.com/blog-entry-52.html
(2012年12月)
[Ruby] デフォルトの CA 証明書ファイルを変更しても、証明書の検証に失敗する | mofu犬blog
http://mofuken.blogspot.com/2012/12/ruby-ca.html
(2013-05)
エラー:OpenSSL::SSL::SSLError SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed - #tech
https://komiyak.hatenablog.jp/entry/20130508/1367993536
(2015年10月)
RubyでHTTPS - Luvelcrak
https://mcrn.jp/blog/2015/10/28/205049.html
>"C:/Users/Justin
これには呆れた。
rubyのSSL周辺はメンテされてないのか?はっきり言って凄い馬鹿。どこまで馬鹿なのか?
rubyのSSL周辺のコードと作者には絶望しかない。ここまで酷いと期待は出来なさそう。諦めるしかないか。
私はWinでなくMacだけどrubyのSSL周辺には大きな問題が幾つもありそう。
ruby openssl curl rubygemのkindai.rbで苦労するのは当然の結果と言えるだろう。
更にhomebrewやrbenv入れたらぐちゃぐちゃになっても当然だろう。
とりあえず
https = Net::HTTP.new('mcrn.jp', 443)
https.open_timeout = SYSTEM_TIMEOUT_SEC
https.read_timeout = SYSTEM_TIMEOUT_SEC
https.use_ssl = true
https.verify_mode = OpenSSL::SSL::VERIFY_PEER
https.verify_depth = 5
https.ca_file = "C:\\cacert.pem" #証明書を明示的に参照
https.start do
response = https.get('/ret.cgi')
puts response.body
end
rubyでSSL通信プログラムを私は自前作成してないが、
この記述が見つかっただけで良しとするしかないのか。
●今後
ruby作者に連絡するか諦めるか?前者の連絡する方法も相手も分かってない。というかこれ以上は関わりたくない。
SSL通信プログラムを作成するならば、rubyでなくPHPかpythonのほうがいいのだろう。
以上
コメントの回答にて解決済み
1,OpenSSL::X509::DEFAULT_CERT_FILE は書き換え出来ない、でOK。
2.ユーザー設定は、export SSL_CERT_FILE=〜 でOK。