さくらVPSにopensslインストールしてphpからhttps接続させる

2011/12/12

phpのfile_get_contens()関数で引数のURLがhttpsの場合、以下のエラーが出る環境があります。

Warning: file_get_contents() [function.file-get-contents]: Unable to find the wrapper “https” – did you forget to enable it when you configured PHP? in ssl.php on line 2

その対応としてopensslをインストールしたので、そのメモです。

opensslのインストール

参考)http://memorva.jp/memo/linux/openssl.php
ここからソースをDL http://www.openssl.org/

$ wget http://www.openssl.org/source/openssl-1.0.0e.tar.gz
$ tar xzvf openssl-1.0.0e.tar.gz
$ cd openssl-1.0.0e
# ./config -fPIC shared
# make
# make test
# make install

なぜか./configもmakeも permisionで怒られたので、以降rootで実行しました。

php連携

–with-openssl オプションをつけてインストールし直します。
参考)http://www.php.net/manual/ja/openssl.installation.php

# ./configure (今までのオプション)–with-openssl
$ make
$ make test
# make install

./configure時に権限のエラーが起きたのでrootで実行してます。
また、make test時にphpインストールしたときと同じエラーがでましたが、ssl関連では出てないようだったので、スルーします。

動作確認

apacheを再起動してからphpinfoを見てみます。
phpinfo
認識されてますね。
先ほどエラーが出たスクリプトを再度実行してみると、エラーは出なくなりました。

(以下、2011/02/09 追記)

SSLの設定

ここを参考にしました。
http://www.server-memo.net/server-setting/apache/apache-mod_ssl.html

実際の作業は整理後追記予定。(以下追記)
関連ファイル保存用にフォルダを作成。

$cd /etc/httpd/conf/
$mkdir ssl.key
$cd ssl.key

鍵やら証明書やら作成。パスワードの設定もあります。

#openssl genrsa -des3 -out server.key 1024
#chmod 400 server.key
#openssl req -new -key server.key -out server.csr
#chmod 400 server.csr
#openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365
#chmod 400 server.crt

続いてapacheの設定で、ssl.confに以下を追記します。

#vi ssl.conf
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
SSLCertificateFile /etc/httpd/conf/ssl.key/server.crt

で、apache再起動

# /usr/local/apache2/bin/httpd -k stop
# /usr/local/apache2/bin/httpd -k start

パスワードを聞かれるので、先ほど設定したパスワードを入力します。これで、完了。

自動起動のためのパスワード解除

このままだと、サーバreboot時などで、apache再起動時にパスワード問い合わせのため、apache起動できません。そのためセキュリティリスクは高まりますが、運用性を重視してパスワードを解除します。

# cd /etc/httpd/conf/ssl.key
# mv server.key server.key_org
# openssl rsa -in server.key_org -out server.key

先ほど設定したパスワードを入力

# chmod 400 server.key

再びapache再起動してパスワードを聞かれないか確認

# /usr/local/apache2/bin/httpd -k stop
# /usr/local/apache2/bin/httpd -k start

聞かれなければこれでOKです。

One thought on “さくらVPSにopensslインストールしてphpからhttps接続させる

  1. Pingback: Apache SNI « minor tranquilizer

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です