Oracle® Solaris 11.2 でのネットワークのセキュリティー保護

印刷ビューの終了

更新: 2014 年 9 月
 
 

Apache 2.2 SSL にフォールバックするように SSL カーネルプロキシ を構成する方法

この手順では、最初から Apache 2.2 Web サーバーを構成し、プライマリ SSL セッション処理メカニズムとして、SSL カーネルプロキシ を構成します。クライアントが提供する一連の SSL 暗号化に SSL カーネルプロキシ が提供する暗号化が含まれない場合、Apache 2.2 Web サーバーはフォールバックメカニズムとして機能します。この手順は、Figure 3–2 に示す複雑なシナリオを実装します。

始める前に

root 役割になる必要があります。詳細は、Oracle Solaris 11.2 でのユーザーとプロセスのセキュリティー保護 の割り当てられている管理権利の使用を参照してください。

  1. Apache 2.2 Web サーバーで、サーバーの SSL カーネルプロキシ によって使用される鍵証明書を作成します。
    1. 証明書署名要求 (CSR) を生成します。

      次のコマンドは 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

      注 -  FIPS 140 に準拠する場合、RSA 鍵の最小の長さは 2048 です。詳細は、Using a FIPS 140 Enabled System in Oracle Solaris 11.2 を参照してください。

      詳細は、openssl(5) のマニュアルページを参照してください。

    2. CSR を認証局 (CA) に送信します。
    3. webcert.pem ファイルを CA からの署名付き証明書で置き換えます。
  2. パスフレーズと公開/非公開鍵証明書で SSL カーネルプロキシ を構成します。
    1. パスフレーズを作成、保存、保護します。
      # echo "RefrigeratorsAreCool" > /root/kssl.pass
      # chmod 440 /root/kssl.pass; chown root:webservd /root/kssl.pass

      注 - パスフレーズに空白文字を含めることはできません。
    2. 非公開鍵証明書と公開鍵証明書を 1つのファイルに組み合わせます。
      # cat /root/webcert.pem /root/webkey.pem > /root/webcombo.pem
    3. 公開/非公開鍵証明書とパスフレーズで SSL カーネルプロキシ を構成します。
      # ksslcfg create -f pem -i /root/webcombo.pem -x 8443 -p /root/kssl.pass 443
  3. 暗号化されていない通信をポート 8443 で待機するように Web サーバーを構成します。

    /etc/apache2/2.2/httpd.conf ファイル内の Listen 行を編集します。

    # pfedit /etc/apache2/2.2/httpd.conf
    ...
    ## Listen 80
    Listen 8443
  4. SSL モジュールテンプレート ssl.conf を Apache 構成ディレクトリに追加します。
    # cp /etc/apache2/2.2/samples-conf.d/ssl.conf /etc/apache2/2.2/ssl.conf

    このモジュールは、暗号化接続をポート 443 上で待機することを追加します。

  5. Web サーバーが /root/kssl.pass ファイル内のパスフレーズを復号化できるようにします。
    1. kssl.pass ファイルを読み取るシェルスクリプトを作成します。
      # pfedit /root/put-passphrase.sh
      #!/usr/bin/ksh -p
      ## Reads SSL カーネルプロキシ passphrase
      /usr/bin/cat /root/kssl.pass
    2. スクリプトを実行可能ファイルにし、ファイルを保護します。
      # chmod 500 /root/put-passphrase.sh
      # chown webservd:webservd /root/put-passphrase.sh
    3. ssl.conf ファイルの SSLPassPhraseDialog パラメータをこのシェルスクリプトを呼び出すように変更します。
      # pfedit /etc/apache2/2.2/ssl.conf
      ...
      ## SSLPassPhraseDialog  builtin
      SSLPassPhraseDialog exec:/root/put-passphrase.sh
  6. Web サーバーの公開鍵証明書と非公開鍵証明書を正しい場所に置きます。

    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
  7. Apache サービスを有効にします。
    # svcadm enable apache22
  8. (オプション)2 つのポートが機能しているかどうかを確認します。

    openssl s_client コマンドと kstat コマンドを使用して、パケットを表示します。

    1. SSL カーネルプロキシ で使用可能な暗号化を使用します。
      # openssl s_client -cipher RC4-SHA -connect web-server:443

      kstat カウンタ kssl_full_handshakes1 増加すると、SSL セッションが SSL カーネルプロキシ によって処理されたことを証明します。

      # kstat -m kssl -s kssl_full_handshakes
    2. SSL カーネルプロキシ で使用できない暗号化を使用します。
      # openssl s_client -cipher CAMELLIA256-SHA -connect web-server:443

      kstat カウンタ kssl_fallback_connections1 増加すると、パケットが到着したが、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