それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

RubyでOpenSSL関連のconnect エラーが出るときの対処法

rubySSL関連のエラーはになることはよくある。

 `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)

これは証明書を検証できないためだが。

とりあえず対処法

require 'openssl' 
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
I_KNOW_THAT_OPENSSL_VERIFY_PEER_EQUALS_VERIFY_NONE_IS_WRONG=true

とやって、検証をオフにすることが出来る。

証明書を入れるなら。

curl -o `ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE'` 'http://curl.haxx.se/ca/cacert.pem'


として証明書を持ち込むことができる。が、個人的には得たいのしれない証明書入れるのも Noneも同じようなもんだと思ってる。
正体の知れない証明書とは、curlの証明書が不安なのでなく、HTTPSで転送されない証明書が不安なのですね。
あと、作ったスクリプトのコピー先で動かず、原因がコピー先に証明書が無いことだったりすます。NONEを採用しがちな理由ですねぇ。ダメってわかるけど。自分で使うぶんにはこれでいいというか。