Windowsでberksコマンドを実行すると発生するエラーの対応

先日インストールしたBerkshelfですが、実行するとエラーが発生しました。 エラー内容は取っていないのですが、ChefにバンドルされているRubyがSSLの証明書を見つけられないような感じでした。 その対応方法です。

使用しようとしている証明書のパスを表示させると

ruby -ropenssl -e 'p OpenSSL::X509::DEFAULT_CERT_FILE'

と実行すると

"C:/Users/Luis/Code/openknapsack/knap-build/var/knapsack/software/x86-windows/openssl/1.0.0k/ssl/cert.pem"

と表示されます。
まぁ、"Luis"なんてユーザーは存在しないわけで、プログラム内にこの場所がハードコーディングされているのが原因ということでした。

まず、正しい証明書をダウンロードします。
http://curl.haxx.se/ca/cacert.pem
これを適当なフォルダに保存します。
自分はC:\MinGW\sslというフォルダを勝手に作成しましたが、特に意味はありません。

Windowsの環境変数に以下を設定して対応できました。

SSL_CERT_FILE = C:\MinGW\ssl\cacert.pem

これをWindowsの環境変数、自分はユーザー変数として定義して無事にberksを実行することができました。