この手順では、最初から Apache 2.2 Web サーバーを構成し、プライマリ SSL セッション処理メカニズムとして、SSL カーネルプロキシ を構成します。クライアントが提供する一連の SSL 暗号化に SSL カーネルプロキシ が提供する暗号化が含まれない場合、Apache 2.2 Web サーバーはフォールバックメカニズムとして機能します。この手順は、Figure 3–2 に示す複雑なシナリオを実装します。
始める前に
root 役割になる必要があります。詳細は、Oracle Solaris 11.2 でのユーザーとプロセスのセキュリティー保護 の割り当てられている管理権利の使用を参照してください。
次のコマンドは 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 カーネルプロキシ 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
次のコマンドは、pem 鍵形式を使う SSL カーネルプロキシ のサービスインスタンスを作成します。
# ksslcfg create -f pem -i cert-and-key.pem -p kssl.pass -x 8443 443