ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11.1 でのネットワークのセキュリティー保護 Oracle Solaris 11.1 Information Library (日本語) |
3. Web サーバーと Secure Sockets Layer プロトコル
SSL カーネルプロキシ は Web サーバー通信を暗号化する
SSL カーネルプロキシ を使用して Web サーバーを保護する (タスク)
SSL カーネルプロキシ を使用するように Apache 2.2 Web サーバーを構成する方法
SSL カーネルプロキシ を使用するように Oracle iPlanet Web Server を構成する方法
4. Oracle Solaris の IP フィルタ (概要)
次の手順に、SSL カーネルプロキシ を使用するように Web サーバーを構成する方法を示します。
SSL カーネルプロキシ は Apache 2.2 Web サーバーでの SSL パケットの処理速度を向上できます。この手順では、図 3-1 に示す簡単なシナリオを実装します。
始める前に
Apache 2.2 Web サーバーを構成しています。この Web サーバーは Oracle Solaris に含まれています。
root 役割になる必要があります。
# svcadm disable svc:/network/http:apache22
ssl.conf ファイルに SSLCertificateFile パラメータのみが指定されている場合、指定されたファイルは直接 SSL カーネルプロキシ で使用できます。
SSLCertificateKeyFile パラメータも指定されている場合は、証明書ファイルと非公開鍵ファイルを組み合わせる必要があります。ファイルを組み合わせるには、次のようなコマンドを実行します。
# cat cert.pem key.pem > cert-and-key.pem
すべてのオプションの一覧については、 ksslcfg(1M) のマニュアルページを参照してください。指定する必要があるパラメータは次のとおりです。
key-format – -f オプションと一緒に使用して、証明書と鍵の形式を定義します。SSL カーネルプロキシ の場合、サポートされる形式は pkcs11、pem、および pkcs12 です。
key-and-certificate-file – -i オプションと一緒に使用して、サーバー鍵と pem および pkcs12 key-format オプションの証明書を格納するファイルの場所を設定します。
password-file – -p オプションと一緒に使用して、pem または pkcs12 key-format オプションの非公開鍵を暗号化するために使用するパスワードを取得します。pkcs11 の場合、パスワードは PKCS #11 トークンに対して認証するために使用します。パスワードファイルは 0400 アクセス権で保護する必要があります。このファイルは無人リブート用に必要です。
certificate-label – -C オプションと一緒に使用して、PKCS #11 トークンの証明書オブジェクトのラベルを選択します。
proxy-port – -x オプションと一緒に使用して、SSL プロキシポートを設定します。標準ポート 80 とは異なるポートを指定する必要があります。Web サーバーは暗号化されていないテキストトラフィックを SSL プロキシポートで待機します。一般に値は 8443 です。
ssl-port – SSL カーネルプロキシ の待機するポートを指定します。一般に値は 443 です。
次のいずれかの形式を使用して、SSL プロキシポートと関連パラメータを指定します。
# ksslcfg create -f key-format -i key-and-certificate-file \ -p password-file -x proxy-port ssl-port
# ksslcfg create -f pkcs11 -T PKCS#11-token -C certificate-label \ -p password-file -x proxy-port ssl-port
# svcs svc:/network/ssl/proxy STATE STIME FMRI online 02:22:22 svc:/network/ssl/proxy:default
次の出力は、サービスインスタンスが作成されなかったことを示します。
svcs: Pattern 'svc:/network/ssl/proxy' doesn't match any instances STATE STIME FMRI
/etc/apache2/2.2/http.conf ファイルを編集し、SSL プロキシポートを定義する行を追加します。サーバーの IP アドレスを使用した場合、Web サーバーはそのインタフェース上でのみ待機します。行は次のようになります。
Listen proxy-port
Web サーバーサービスは、SSL カーネルプロキシ インスタンスの起動後にのみ起動できます。次のコマンドは、そうした依存関係を確立します。
# svccfg -s svc:/network/http:apache22 svc:/network/http:apache22> addpg kssl dependency ...apache22> setprop kssl/entities = fmri:svc:/network/ssl/proxy:kssl-INADDR_ANY-443 ...apache22> setprop kssl/grouping = astring: require_all ...apache22> setprop kssl/restart_on = astring: refresh ...apache22> setprop kssl/type = astring: service ...apache22> end
# svcadm enable svc:/network/http:apache22
SSL カーネルプロキシ は Oracle iPlanet Web Server での SSL パケットの処理速度を向上できます。この手順では、図 3-1 に示す簡単なシナリオを実装します。
始める前に
Oracle iPlanet Web Server をインストールし、構成しています。サーバーは Oracle iPlanet Web Server からダウンロードできます。手順については、Oracle iPLANET WEB SERVER 7.0.15 を参照してください。
Network Security 権利プロファイルが割り当てられている管理者になる必要があります。詳細については、『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。
管理者の Web インタフェースを使ってサーバーを停止します。手順については、Oracle iPLANET WEB SERVER 7.0.15 を参照してください。
すべてのオプションの一覧については、 ksslcfg(1M) のマニュアルページを参照してください。指定する必要があるパラメータの一覧については、「SSL カーネルプロキシ を使用するように Apache 2.2 Web サーバーを構成する方法」の手順 3 を参照してください。
次のいずれかの形式を使用して、SSL プロキシポートと関連パラメータを指定します。
# ksslcfg create -f key-format -i key-and-certificate-file \ -p password-file -x proxy-port ssl-port
# ksslcfg create -f pkcs11 -T PKCS#11-token -C certificate-label \ -p password-file -x proxy-port ssl-port
# svcs svc:/network/ssl/proxy STATE STIME FMRI online 02:22:22 svc:/network/ssl/proxy:default
手順については、Oracle iPLANET WEB SERVER 7.0.15 を参照してください。
Web サーバーサービスは、SSL カーネルプロキシ インスタンスの起動後にのみ起動できます。Web サーバーサービスの FMRI が svc:/network/http:webserver7 であるとして、次のコマンドはその依存関係を確立します。
# svccfg -s svc:/network/http:webserver7 svc:/network/http:webserver7> addpg kssl dependency ...webserver7> setprop kssl/entities = fmri:svc:/network/ssl/proxy:kssl-INADDR_ANY-443 ...webserver7> setprop kssl/grouping = astring: require_all ...webserver7> setprop kssl/restart_on = astring: refresh ...webserver7> setprop kssl/type = astring: service ...webserver7> end
# svcadm enable svc:/network/http:webserver7
この手順では、最初から Apache 2.2 Web サーバーを構成し、プライマリ SSL セッション処理メカニズムとして、SSL カーネルプロキシ を構成します。クライアントが提供する一連の SSL 暗号化に SSL カーネルプロキシ が提供する暗号化が含まれない場合、Apache 2.2 Web サーバーはフォールバックメカニズムとして機能します。この手順は、図 3-2 に示す複雑なシナリオを実装します。
始める前に
root 役割になる必要があります。詳細については、『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。
次のコマンドは CSR とそれに関連付けられた SSL カーネルプロキシ の非公開鍵を作成します。
# cd /root # openssl req \ > -x509 -new \ > -subj "/C=CZ/ST=Prague region/L=Prague/CN=`hostname`" \ > -newkey rsa:2048 -keyout webkey.pem \ > -out webcert.pem Generating a 2048 bit RSA private key .+++ ........+++ writing new private key to 'webkey.pem' Enter PEM pass phrase: JohnnyCashIsCool Verifying - Enter PEM pass phrase: JohnnyCashIsCool # # chmod 440 /root/webcert.pem ; chown root:webservd /root/webcert.pem
詳細については、openssl(5) のマニュアルページを参照してください。
# echo "RefrigeratorsAreCool" > /root/kssl.pass # chmod 440 /root/kssl.pass; chown root:webservd /root/kssl.pass
注 - パスフレーズには空白を含めることはできません。
# cat /root/webcert.pem /root/webkey.pem > /root/webcombo.pem
# ksslcfg create -f pem -i /root/webcombo.pem -x 8443 -p /root/kssl.pass 443
/etc/apache2/2.2/httpd.conf ファイル内の Listen 行を編集します。
# pfedit /etc/apache2/2.2/httpd.conf ... ## Listen 80 Listen 8443
# cp /etc/apache2/2.2/samples-conf.d/ssl.conf /etc/apache2/2.2/ssl.conf
このモジュールは、暗号化接続をポート 443 上で待機することを追加します。
# pfedit /root/put-passphrase.sh #!/usr/bin/ksh -p ## Reads SSL kernel proxy passphrase /usr/bin/cat /root/kssl.pass
# chmod 500 /root/put-passphrase.sh # chown webservd:webservd /root/put-passphrase.sh
# pfedit /etc/apache2/2.2/ssl.conf ... ## SSLPassPhraseDialog builtin SSLPassPhraseDialog exec:/root/put-passphrase.sh
ssl.conf ファイル内の SSLCertificateFile および SSLCertificateKeyFile パラメータの値に、予想される配置と名前が格納されています。証明書を正しい場所にコピーまたはリンクできます。
# ln -s /root/webcert.pem /etc/apache2/2.2/server.crtSSLCertificateFile default location # ln -s /root/webkey.pem /etc/apache2/2.2/server.keySSLCertificateKeyFile default location
# svcadm enable apache22
openssl s_client コマンドと kstat コマンドを使用して、パケットを表示します。
# openssl s_client -cipher RC4-SHA -connect web-server:443
kstat カウンタ kssl_full_handshakes が 1 増加すると、SSL セッションが SSL カーネルプロキシ によって処理されたことを証明します。
# kstat -m kssl -s kssl_full_handshakes
# openssl s_client -cipher CAMELLIA256-SHA -connect web-server:443
kstat カウンタ kssl_fallback_connections が 1 増加すると、パケットが到着したが、SSL セッションが Apache Web サーバーによって処理されたことを証明します。
# kstat -m kssl -s kssl_fallback_connections
例 3-1 SSL カーネルプロキシを使用するように Apache 2.2 Web サーバーを構成する
次のコマンドは、pem 鍵形式を使う SSL カーネルプロキシ のサービスインスタンスを作成します。
# ksslcfg create -f pem -i cert-and-key.pem -p kssl.pass -x 8443 443
SSL カーネルプロキシ は次の制限付きで、ゾーン内で動作します。
カーネル SSL の管理はすべて、大域ゾーンで行なう必要があります。大域ゾーンの管理者は、局所ゾーン内の証明書や鍵のファイルにアクセスできる必要があります。大域ゾーンでの ksslcfg コマンドによるサービスインスタンスの構成が完了すると、局所ゾーンで Web サーバーを起動できるようになります。
インスタンスを構成する際には、ksslcfg コマンドを実行して特定のホスト名または IP アドレスを指定する必要があります。特に、インスタンスは IP アドレスに INADDR_ANY を指定できません。
始める前に
Web サーバーサービスは非大域ゾーンで構成され、有効にされます。
Network Security および Zone Management 権利プロファイルが割り当てられている管理者になる必要があります。詳細については、『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。
たとえば、apache-zone ゾーン内で Apache Web サーバーを停止するには、次のコマンドを実行します。
apache-zone # svcadm disable svc:/network/http:apache22
apache-zone のサービスインスタンスを作成するには、次のようなコマンドを実行します。
# ksslcfg create -f pem -i /zone/apache-zone/root/keypair.pem \ -p /zone/apache-zone/root/skppass -x 8443 apache-zone 443
たとえば、apache-zone で Web サービスを有効にします。
apache-zone # svcadm enable svc:/network/http:apache22