SSL カーネルプロキシ は Apache 2.2 Web サーバーでの SSL パケットの処理速度を向上できます。この手順では、図 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 – サーバー鍵と pem および pkcs12 key-format オプションの証明書を格納するファイルの場所を設定するために、–i オプションとともに使用されます。
password-file – pem または pkcs12 key-format オプションの非公開鍵を暗号化するために使用されるパスワードを取得するために、–p オプションとともに使用されます。pkcs11 の場合、パスワードは PKCS #11 トークンに対して認証するために使用します。パスワードファイルは 0400 アクセス権で保護する必要があります。このファイルは無人リブート用に必要です。
token-label – PKCS #11 トークンを指定するために、–T オプションとともに使用されます。
certificate-label – PKCS #11 トークン内の証明書オブジェクトに含まれるラベルを選択するために、–C オプションとともに使用されます。
proxy-port – SSL プロキシポートを設定するために、–x オプションとともに使用されます。標準ポート 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 PKCS11-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