1. hotchpotch

    No comment

    hotchpotch
Changes in body
Source | HTML | Preview
@@ -1,55 +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
+```sh
$ 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 でのエラーは発生しません。