同じにやっても動かない

書いてある通りやっているのに動かないのです

SNI SSL対応のcurlをビルドする

SNI SSLに対応したcurlをビルドする必要があったので手順をメモしておきます。

事の発端はCS-CARTを導入したのもの、SSLを有効化しようとすると下記エラーが出て設定できなかったというもの。

HTTPS接続チェックに失敗しました。 "config.php" ファイル内のHTTPSに関する設定を確認のうえお使いのサーバーにSSL証明書がインストールされていることを確認してください。
f:id:nyarugo:20160120191225p:plain


色々調べてみたらSSL有効化チェックでcurlを使っているのだけど、サーバーにインストールされているcurlがSNI SSLに対応しておらずエラーを吐いている事がわかりました。
ネームスペースSSL激安で良いなあと思って飛びついたのですが、こんなところでハマるとは (^^;

というわけでSNI対応curlをビルドします。


1. SNI対応のopensslのビルド
※ OpenSSLのSNIサポートはOpenSSL 0.9.8j 以降のようです

curlsslをしゃべるわけではないようなので、まずは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でSNI SSLサイトに繋ぐと

$ curl https://www.snissl.com
curl: (51) SSL: certificate subject name '*.****' does not match target host name 'www.snissl.com'

となりますが、新しくビルドしたcurlで繋ぐとソースが表示されるはずです。