Raspberry Pi 2でサーバ作ってみる(11) 〜Apacheビルド その3〜
とりあえずhttpサイトは動いたのでSSLを使ったhttpsアクセスができるようにします。
ただ、ちゃんとした証明書を準備するのは大変なので(費用的な意味で)、
いわゆるオレオレ証明書を使うことにします。
#オレオレ証明書の作成 cd /usr/local/apache2/conf /usr/local/ssl/bin/openssl genrsa -aes128 1024 > server.key /usr/local/ssl/bin/openssl req -new -key server.key > server.csr /usr/local/ssl/bin/openssl x509 -in server.csr -days 36500 -req -signkey server.key > server.crt
後はhttpd.confでmod_ssl.soをロードし、httpd-ssl.infoをIncludeするようにして、Apacheを再起動、
としたところ、エラーが出てしまいました。
Invalid command 'SSLCipherSuite', perhaps misspelled or defined by a module not included in the server configuration
エラーを調べたところ、
Invalid command ‘SSLCipherSuite’, perhaps misspelled or defined by a module not included in the server configuration | Matty工房のWeb開発誌【PHP/HTML5/アプリ開発】
こちらのサイトに従い、LoadModuleに追加。すると今度は、
httpd: Syntax error on line 147 of /usr/local/apache2/conf/httpd.conf: Cannot load modules/mod_ssl.so into server: /usr/local/apache2/modules/mod_ssl.so: undefined symbol: SSL_CONF_CTX_free
こんなエラーが。
Apache2.0でSSL - Linux Square - @IT
を参考に、Apacheコンパイル時に--enable-ssl=sharedにする→ダメ
この時点で結構いろいろ試しました。ソースの中身を見たり。
それでも原因がわからず、SSLはダメかなーと思っていたところ、
ふと、CentOSでやっていた時はOpenSSLのバージョンが1.0.1だったのですが、最新版があったため1.0.2に変えていたことを思い出しました。
動作実績?のありそうな1.0.1にしてみてダメなら諦めよう、と思いバージョンを変えて再インストール。
→いけた!
…と思ったらエラー
SSLSessionCache: 'shmcb' session cache not supported (known names: ). Maybe you need to load the appropriate socache module (mod_socache_shmcb?).
でも、今までと違う。いつもどおりエラーをGoogle先生に聞いてみると、
Gentooの~amd64にApache 2.4.1が来たので試してみた
とあったので、次の記述をhttpd-ssl.confに追記
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
これでうまくいった!
あとは、httpsでアクセスしてみる。
オレオレ証明書なので、警告がでるけどそのまま読み込んでいくと…開いた!
ということで、なんとかSSLも使えるようになったっぽいです。
とりあえずApache関連はここまで。
とにかく奥が深いので、あまりハマり込まないように、この辺でいったん他のことを進めます。