SNI SSL対応のcurlをビルドする
SNI SSLに対応したcurlをビルドする必要があったので手順をメモしておきます。
事の発端はCS-CARTを導入したのもの、SSLを有効化しようとすると下記エラーが出て設定できなかったというもの。
HTTPS接続チェックに失敗しました。 "config.php" ファイル内のHTTPSに関する設定を確認のうえお使いのサーバーにSSL証明書がインストールされていることを確認してください。
色々調べてみたらSSL有効化チェックでcurlを使っているのだけど、サーバーにインストールされているcurlがSNI SSLに対応しておらずエラーを吐いている事がわかりました。
ネームスペースSSL激安で良いなあと思って飛びついたのですが、こんなところでハマるとは (^^;
というわけでSNI対応curlをビルドします。
1. SNI対応のopensslのビルド
※ OpenSSLのSNIサポートはOpenSSL 0.9.8j 以降のようです
curlがsslをしゃべるわけではないようなので、まずはcurlが使うopensslライブラリをSNI対応にする必要があります。
openssl-1.0.2e.tar.gzをダウンロードして
$ tar zxvf openssl-1.0.2e.tar.gz $ cd openssl-1.0.2e $ ./config shared zlib --prefix=/home/opt/openssl-1.0.2e $ make; make test; make install
2. SNI対応のopensslライブラリを使ってcurlのビルド
※ curlのSNIサポートは7.18.1以降のようです
curl-7.46.0.tar.gzをダウンロードして、環境変数export PKG_CONFIG_PATHに先にインストールしたopensslのpkgconfigのパスをセット
$ export PKG_CONFIG_PATH=/home/opt/openssl-1.0.2e/lib/pkgconfig $ cd curl-7.46.0 $ ./configure --with-ssl --prefix=/home/opt $ make; make install
SNI SSLに対応していないcurlでSNI SSLサイトに繋ぐと
$ curl https://www.snissl.com curl: (51) SSL: certificate subject name '*.****' does not match target host name 'www.snissl.com'
となりますが、新しくビルドしたcurlで繋ぐとソースが表示されるはずです。