1. hotchpotch

    Posted

    hotchpotch
Changes in title
+homebrew で入れた openssl を使って Ruby をコンパイルすると SSL 利用時に証明書エラーが発生する場合の対応
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,55 @@
+
+さて、皆さん割と homebrew で openssl 入れて brew link しちゃってる人も多いと思います。そんな環境でその openssl を使って Ruby をコンパイルすると、OpenSSL 利用時に証明書エラーが発生します。
+
+```sh
+$ pry
+[1] pry(main)> require 'open-uri'
+=> true
+[2] pry(main)> open('https://www.google.com/').read
+OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
+from ~/.rbenv/versions/2.0.0-rc2/lib/ruby/2.0.0/net/http.rb:917:in `connect'
+```
+
+エラーをぐぐると山ほど出てきます。ただ大抵書かれてる対応方法が
+
+```ruby
+$ ruby -ropenssl -e "p OpenSSL::X509::DEFAULT_CERT_FILE"
+"/usr/local/etc/openssl/cert.pem"
+```
+
+して出てくる標準証明書のパスに
+
+```sh
+$ wget -O /usr/local/etc/openssl/cert.pem http://curl.haxx.se/ca/cacert.pem
+```
+
+で対応してね、という方法でいささか気持ちが悪かったのでちょっと調べました。
+
+## curl.haxx.se って?
+cURL のサイトです。
+
+- http://curl.haxx.se/docs/caextract.html
+
+に詳しく書いてありますが、curl のサイト上で配布してる cacert.pem は、Mozilla で利用している証明書です。
+
+(しかしハッシュ値も表示されて無くて https でもないので、いささかこの証明書を突っ込むの不安ですね…)
+
+## homebrew から証明書を入れる
+同等の証明書は curl-ca-bundle という formula で提供されているので、
+
+```sh
+$ brew install curl-ca-bundle
+$ brew list curl-ca-bundle
+/usr/local/Cellar/curl-ca-bundle/1.87/share/ca-bundle.crt
+$ cp /usr/local/Cellar/curl-ca-bundle/1.87/share/ca-bundle.crt /usr/local/etc/openssl/cert.pem
+```
+
+することで、証明書を設置でき、SSL でのエラーは発生しません。
+
+
+
+
+
+
+
+