またまたハマりました。
タイトル通り、apache(2系)のリバースプロキシ機能を使ってローカル内のapacheにSSL接続しようと思ってハマりました。
ググったらたくさん参考資料出てくるんですけどね、、
イメージは
クライアントブラウザ →(SSL)→ Proxyサーバ[192.168.10.10] →(SSL)→ ローカルapacheサーバ[192.168.10.11]です。
まずapacheをインストールする際に mod_proxyとmod_ssl、mod_proxy_connectが有効になっていないといけません。(多分、、)
# /usr/local/apache2/bin/httpd -lで上記のモジュールが出てくれば問題ありませんが、なければapacheをインストールし直しましょう。
# ./configure --enable-module=so --with-included-apr --enable-proxy --enable-ssl --enable-proxy-connectオプションは環境に合わせて変えてください。
# make && make install
では、まずhttpd.confでリバースプロキシの設定しましょう。
# vim /usr/local/apache2/conf/httpd.conf ---------------------------------------------- # 以下を追加 ProxyRequests off ProxyPass / http://192.168.10.11/ ProxyPassReverse /http://192.168.10.11/ ProxyPassReverseCookieDomain mydomain local-domain ProxyPassReverseCookiePath / / <Proxy *> order deny,allow deny from all allow from xxx.xxx.xxx.0/24 ....# あとは適当に </Proxy>リバースプロキシだけの設定では以上です。
これからSSLの設定を行いましょう。
※証明書の作り方は以前(opensslを使って秘密鍵と証明書の作成)も書いたのでそちらも参照ください。
オレオレ証明書作ります。
まず、CA秘密鍵作成
# openssl genrsa -rand /var/log/messages -out ca.key 1024-randオプションはランダムなデータを作成する元となるファイルを適当に選択。
次にCA証明書の署名要求作成
# openss req -new -key ca.key -out ca.csrここは色々質問されますが、内容は割愛します。
では次に証明書発行
# openssl x509 -req -in ca.csr -signkey ca.key -out ca.crtこれでCA証明書まで完成です。
次はサーバ用証明書を作成しましょう。
まずサーバ用秘密鍵を作ります
# openssl genrsa -rand /var/log/maillog -out server.key 1024↑と一緒ですね。
次にサーバ証明書の署名要求を作ります
# openssl req -new -key server.key -out server.csrこれも↑と一緒。
次にシリアルを記述した適当なファイルを作成
# echo 01 > ca.serialでは証明書を発行しちゃいましょう
# openssl x509 -req -days 3650 -CA ca.crt -CAkey ca.key -in server.csr -out server.crt出来ました!
これを適当な場所へコピー(移動)します。
# cp server.crt /usr/local/apache2/conf/ssl/server.crt # ←サーバ証明書 # cp server.key /usr/local/apache2/conf/ssl/server.key # ←サーバ秘密鍵ふぅ。
最後にapacheの設定です。
# vim /usr/local/apache2/conf/httpd.conf ----------------------------------------------- <IfModule mod_ssl.c> Include conf/ssl.conf </IfModule> # vim /usr/local/apache2/conf/ssl.conf (必要な部分のみ抜粋) ---------------------------------------- Listen 443 <VirtualHost _default_:443> SSLCertificateFile /usr/local/apache2/conf/ssl/server.crt SSLCertificateKeyFile /usr/local/apache2/conf/ssl/server.key <VirtualHost> #SSLCACertificatePath /usr/local/apache2/conf/ssl.crt いらない!? #SSLCACertificateFile /usr/local/apache2/conf/ssl-bundle.crt いらない!? #SSLVerifyClient require いらない。クライアントの認証が必要であれば付ける #SSLVerifyDepth 1 いらない SSLProxyEngine on ProxyPass / https://192.168.10.11/ # ローカルのapacheが例えば4444ポートでSSLを動かしてる場合は ProxyPass / https://192.168.10.11:4444/ね ProxyPassReverse / https://192.168.10.11/ # こっちも ProxyPassReverse / https://192.168.10.11:4444/ね出来ましたー!!
起動!!
# /usr/local/apache2/bin/httpd -k start -DSSLたぶんパスフレーズ聞かれるので応えてあげてね。
ちなみにパスフレーズを聞かれるのが面倒な人は
# vim /usr/local/apache2/conf/ssl.conf ---------------------------------------------- SSLPassPhraseDialog exec:/usr/local/apache2/bin/pp-exec # パスフレーズを入力するためのダイアログタイプ。builtin(デフォルト)またはexec。で、
# vim /usr/local/apache2/bin/pp-exec ------------------------------------------ #!/bin/sh echo "パスフレーズ"だぜ!
以上でぇぇぇぇぇぇぇぇぇぇぇす。
0 件のコメント:
コメントを投稿