ADC

証明書を作成する

認証局 (CA) は、公開キー暗号化で使用するデジタル証明書を発行するエンティティです。SSL トランザクションを実行するアプリケーション(Web ブラウザなど)は、認証局が発行または署名した証明書を信頼します。これらのアプリケーションでは、信頼する CA のリストが保持されます。信頼できる CA のいずれかが、セキュアなトランザクションに使用されている証明書に署名すると、アプリケーションはトランザクションを続行します。

注意: すべてのSSLトランザクションには、Verisignなどの承認されたCAから取得した証明書を使用することをお勧めします。NetScaler ADCアプライアンスで生成された証明書は、テスト目的でのみ使用し、ライブ展開では使用しないでください。

既存の証明書とキーをインポートするには 、証明書のインポートを参照してください

証明書を作成し、SSL 仮想サーバーにバインドするには、次の手順を実行します。ファイル名に使用できる特殊文字は、アンダースコアとドットだけです。ファイル名の最初の文字には特殊文字を使用できません。

  • プライベートキーを作成します。
  • 証明書署名要求 (CSR) を作成します。
  • CSR を認証局に送信します。
  • 証明書とキーのペアを作成します。
  • 証明書とキーのペアを SSL 仮想サーバーにバインドする

次の図は、このワークフローを示しています。

エンドツーエンドフロー

新しい証明書を作成してインストールする方法

秘密キーの作成

メモ:

  • リリース 12.1 ビルド 49.x から、PEM キー形式の AES256 アルゴリズムを使用して、アプライアンスの秘密キーを暗号化できます。256 ビットキーの AES は、データ暗号化規格 (DES) の 56 ビットキーに比べて、数学的に効率的で安全です。

  • リリース 12.1 ビルド 50.x から、PKCS #8 形式で RSA キーを作成できます。

秘密キーはデジタル証明書で最も重要な部分です。定義上、このキーは誰とも共有されるべきではなく、NetScaler ADCアプライアンス上で安全に保管する必要があります。公開鍵で暗号化されたデータは、秘密鍵を使用することによってのみ復号化できます。

CA から受け取った証明書は、CSR の作成に使用された秘密キーでのみ有効です。このキーは、証明書をNetScaler ADCアプライアンスに追加するために必要です。

アプライアンスは、秘密キーの作成に RSA 暗号化アルゴリズムのみをサポートします。どちらのタイプの秘密キーも認証局 (CA) に送信できます。CA から受け取った証明書は、CSR の作成に使用された秘密キーでのみ有効です。このキーは、証明書をNetScaler ADCアプライアンスに追加するために必要です。

重要:

  • 秘密鍵へのアクセスは必ず制限してください。プライベートキーにアクセスできる人なら誰でも、SSL データを復号できます。
  • 許可される SSL キー名の長さには、パスがキー名に含まれている場合、絶対パス名の長さも含まれます。

SSL 証明書とキーはすべて、アプライアンス上の/nsconfig/sslフォルダに保存されます。セキュリティを強化するために、DES アルゴリズムまたはトリプル DES(3DES)アルゴリズムを使用して、アプライアンスに保存されている秘密キーを暗号化できます。

CLI を使用して RSA 秘密キーを作成する

コマンドプロンプトで入力します。

create ssl rsakey <keyFile> <bits> [-exponent ( 3 | F4 )] [-keyform (DER | PEM )] [-des | -des3 | -aes256] {-password } [-pkcs8]
<!--NeedCopy-->

例:

create rsakey testkey 2048 -aes256 -password 123456 -pkcs8
<!--NeedCopy-->

GUI を使用して RSA 秘密キーを作成する

  1. [ トラフィック管理] > [SSL] > [SSL ファイル] に移動します。

  2. [ キー ] タブで、[ RSA キーの作成] を選択します。

    RSA キーの作成

  3. 次のパラメータに値を入力し、[ Create] をクリックします。

    • Key Filename :RSA キーファイルの名前と、オプションで RSA キーファイルのパス。/nsconfig/ssl/ がデフォルトパスです。
    • キーサイズ :RSA キーのサイズ(ビット単位)。範囲は 512 ビットから 4096 ビットです。
    • 公開指数値 -RSA キーの公開指数。指数は暗号アルゴリズムの一部であり、RSA キーの作成に必要です。
    • Key Format :RSAキー・ファイルがアプライアンスに保存される形式。
    • PEM エンコードアルゴリズム -AES 256、DES、またはトリプル DES (DES3) アルゴリズムを使用して、生成された RSA キーを暗号化します。デフォルトでは、秘密鍵は暗号化されません。
    • PEM Passphrase :秘密キーが暗号化されている場合は、キーのパスフレーズを入力します。

    値を入力する

GUI を使用して RSA キーで AES256 エンコードアルゴリズムを選択する

  1. トラフィック管理 > SSL > SSL ファイル > RSA キーの作成に移動します

  2. [ キー形式] で [ PEM] を選択します。

  3. [ PEM エンコードアルゴリズム] で [ AES256] を選択します。

  4. PKCS8を選択します。

CLI を使用して証明書署名要求を作成する

コマンドプロンプトで入力します。

create ssl certreq <reqFile> -keyFile <input_filename> | -fipsKeyName <string>) [-keyForm (DER | PEM) {-PEMPassPhrase }] -countryName <string> -stateName <string> -organizationName <string> -organizationUnitName <string> -localityName <string> -commonName <string> -emailAddress <string> {-challengePassword } -companyName <string> -digestMethod ( SHA1 | SHA256 )
<!--NeedCopy-->

例:

create ssl certreq priv_csr_sha256 -keyfile priv_2048_2 -keyform PEM -countryName IN -stateName Karnataka -localityName Bangalore -organizationName Citrix -organizationUnitName NS -digestMethod SHA256
<!--NeedCopy-->

GUI を使用して証明書署名要求を作成する

  1. [ トラフィック管理] > [SSL] に移動します。
  2. [ SSL 証明書] で、[ 証明書署名要求 (CSR) の作成] をクリックします。

    証明書署名リクエストの作成

  3. ダイジェスト 方式」で「 SHA256 」を選択します。

詳細については 、CSR の作成を参照してください

証明書署名要求でのサブジェクト代替名のサポート

証明書のサブジェクト代替名 (SAN) フィールドを使用すると、ドメイン名や IP アドレスなどの複数の値を 1 つの証明書に関連付けることができます。つまり、www.example.com、www.example1.com、www.example2.com などの複数のドメインを 1 つの証明書で保護できます。

Google Chrome などの一部のブラウザでは、証明書署名要求 (CSR) で共通名がサポートされなくなりました。公的に信頼されたすべての証明書に SAN を適用します。

NetScaler ADCアプライアンスは、CSRの作成時にSAN値を追加することをサポートしています。SAN エントリを含む CSR を認証局に送信して、その SAN エントリを含む署名付き証明書を取得できます。アプライアンスは要求を受信すると、サーバ証明書の SAN エントリで一致するドメイン名があるかどうかを確認します。一致が見つかると、証明書がクライアントに送信され、SSL ハンドシェイクが完了します。CLI または GUI を使用して、SAN 値を持つ CSR を作成できます。

注: NetScaler ADCアプライアンスは、DNSベースのSAN値のみを処理します。

CLI を使用してサブジェクトの別名で CSR を作成する

create ssl certReq <reqFile> (-keyFile <input_filename> | -fipsKeyName <string>) [-subjectAltName <string>] [-keyform ( DER | PEM )  {-PEMPassPhrase }] -countryName <string> -stateName <string> -organizationName <string> [-organizationUnitName <string>] [-localityName <string>] [-commonName <string>] [-emailAddress <string>] {-challengePassword } [-companyName <string>] [-digestMethod ( SHA1 | SHA256 )]
<!--NeedCopy-->

パラメーター:

subjectAltName: サブジェクト代替名 (SAN) は X.509 の拡張であり、subjectAltName フィールドを使用してさまざまな値をセキュリティ証明書に関連付けることができます。これらの値は「サブジェクトの別名」(SAN) と呼ばれます。名前には以下が含まれます。

  1. IP アドレス(「IP:」が付いたプレフィックス例:IP: 198.51.10.5 IP: 192.0.2.100)

  2. DNS 名 (プレフィックスに「DNS:」が付く例:DNS: www.example.com dns: www.example.org dns: www.example.net)

コマンドラインで、引用符で囲んで値を入力します。2 つの値はスペースで区切ります。GUI では引用符は必要ありません。 最大長:127

例:

create certReq test1.csr -keyFile test1.ky -countryName IN -stateName Kar -organizationName citrix -commonName ctx.com -subjectAltName "DNS:*.example.com DNS:www.example.org DNS:www.example.net"
<!--NeedCopy-->

注:

FIPS アプライアンスで、アプライアンスで FIPS キーを直接作成する場合は、キーファイル名を FIPS キー名に置き換える必要があります。

create certReq <csrname> -fipsKeyName fipskey.ky -countryName IN -stateName Kar -organizationName citrix -commonName ctx.com -subjectAltName "DNS:www.example.com DNS:www.example.org DNS:www.example.net"
<!--NeedCopy-->

GUI を使用して CSR を作成する

  1. Traffic Management > SSL > SSL Filesに移動します。
  2. [ CSR ] タブで、[ 証明書署名要求 (CSR) の作成] をクリックします。
  3. 値を入力し、[ Create] をクリックします。

制限事項

SSL 証明書の作成時に SAN を使用するには、SAN 値を明示的に指定する必要があります。値は CSR ファイルから自動的には読み込まれません。

CSR を認証局に提出する

ほとんどの認証局 (CA) は、電子メールによる証明書の提出を受け付けています。CA は、CSR の送信元の電子メールアドレスに有効な証明書を返します。

CSRは/nsconfig/sslフォルダに保存されます。

テスト証明書の生成

注:

サーバーテスト証明書を生成するには、 サーバーテスト証明書の生成を参照してください

NetScaler ADCアプライアンスには、テスト用に自己署名証明書を作成するために使用できるCAツールスイートが組み込まれています。

注意: NetScaler ADCアプライアンスは実際のCAではなくこれらの証明書に署名するため、実稼働環境では使用しないでください。実稼働環境で自己署名証明書を使用しようとすると、仮想サーバーにアクセスするたびに「証明書が無効です」という警告がユーザーに表示されます。

アプライアンスでは、次のタイプの証明書の作成がサポートされています。

  • ルート CA 証明書
  • 中間 CA 証明書
  • エンドユーザー証明書
    • サーバー証明書
    • クライアント証明書

証明書を生成する前に、秘密キーを作成し、その秘密キーを使用してアプライアンスに証明書署名要求 (CSR) を作成します。次に、CSRをCAに送信する代わりに、NetScaler CA Toolsを使用して証明書を生成します。

ウィザードを使用して証明書を作成する

  1. [ トラフィック管理] > [SSL] に移動します。
  2. 詳細ウィンドウの [ はじめに] で、作成する証明書の種類に応じたウィザードを選択します。
  3. 画面の指示に従って操作します。

CLI を使用してルート CA 証明書を作成する

コマンドプロンプトで、次のコマンドを入力します。

create ssl cert <certFile> <reqFile> <certType> [-keyFile <input_filename>] [-keyform ( DER | PEM )] [-days <positive_integer>]
<!--NeedCopy-->

次の例では、csreq1 が CSR で、rsa1 が以前に作成された秘密キーです。

例:

create ssl cert cert1 csreq1 ROOT_CERT -keyFile rsa1 -keyForm PEM -days 365

  Done
<!--NeedCopy-->

CLI を使用して中間 CA 証明書を作成する

create ssl cert <certFile> <reqFile> <certType> [-keyFile <input_filename>] [-keyform ( DER | PEM )] [-days <positive_integer>] [-certForm ( DER | PEM )] [-CAcert <input_filename>] [-CAcertForm ( DER | PEM )] [-CAkey <input_filename>] [-CAkeyForm ( DER | PEM )] [-CAserial <output_filename>]
<!--NeedCopy-->

次の例では、csr1 は以前に作成された CSR です。cert1 と rsakey1 は、自己署名 (ルート CA) 証明書の証明書および対応するキーであり、pvtkey1 は中間 CA 証明書の秘密キーです。

例:

create ssl cert certsy csr1 INTM_CERT -CAcert cert1 -CAkey rsakey1 -CAserial 23
Done

create ssl rsakey pvtkey1 2048 -exponent F4 -keyform PEM
Done
<!--NeedCopy-->

GUI を使用してルート CA 証明書を作成する

[ トラフィック管理] > [SSL ] に移動し、[はじめに] グループで [ ルート CA 証明書ウィザード] を選択して、ルート CA 証明書を構成します。

GUI を使用して中間 CA 証明書を作成する

[ トラフィック管理] > [SSL ] に移動し、[はじめに] グループで [ 中間 CA 証明書ウィザード] を選択して、中間 CA 証明書を設定します。

エンドユーザー証明書を作成する

エンドユーザー証明書は、クライアント証明書でもサーバー証明書でもかまいません。テストエンドユーザ証明書を作成するには、中間 CA 証明書または自己署名ルート CA 証明書を指定します。

注: 本番環境で使用するエンドユーザー証明書を作成するには、信頼できる CA 証明書を指定し、その CSR を認証局 (CA) に送信します。

コマンドラインインターフェイスを使用してテスト用エンドユーザー証明書を作成する

create ssl cert <certFile> <reqFile> <certType> [-keyFile <input_filename>] [-keyform ( DER | PEM )] [-days<positive_integer>] [-certForm ( DER | PEM )] [-CAcert <input_filename>] [-CAcertForm ( DER | PEM )] [-CAkey<input_filename>] [-CAkeyForm ( DER | PEM )] [-CAserial <output_filename>]
<!--NeedCopy-->

中間証明書がない場合は、CAcertおよびCAkeyのルート CA 証明書の証明書(cert1)と秘密キー(rsakey1)の値を使用します。

例:

create ssl cert cert12 csr1 SRVR_CERT -CAcert cert1 -CAkey rsakey1 -CAserial 23

Done
<!--NeedCopy-->

中間証明書がある場合は、CAcertCAkeyの中間証明書の certificate (certsy) と秘密キー (pvtkey1) の値を使用します 。

例:

create ssl cert cert12 csr1 SRVR_CERT -CAcert certsy -CAkey pvtkey1 -CAserial 23

Done
<!--NeedCopy-->

OpenSSL を使用して自己署名 SAN 証明書を作成する

複数のサブジェクト代替名を持つ自己署名 SAN 証明書を作成するには、次の手順を実行します。

  1. 会社の要件に従って関連するフィールドを編集して、ローカルコンピューターに OpenSSL 設定ファイルを作成します。

    注:次の例では、設定ファイルは「req.conf」です。

    [req]
    distinguished_name = req_distinguished_name
    x509_extensions = v3_req
    prompt = no
    [req_distinguished_name]
    C = US
    ST = VA
    L = SomeCity
    O = MyCompany
    OU = MyDivision
    CN = www.company.com
    [v3_req]
    keyUsage = keyEncipherment, dataEncipherment
    extendedKeyUsage = serverAuth
    subjectAltName = @alt_names
    [alt_names]
    DNS.1 = www.company.net
    DNS.2 = company.com
    DNS.3 = company.net
    <!--NeedCopy-->
    
  2. NetScaler ADCアプライアンスの /nsconfig/ssl ディレクトリにファイルをアップロードします。

  3. NetScaler CLIにユーザーnsrootとしてログオンし、シェルプロンプトに切り替えます。

  4. 次のコマンドを実行して証明書を作成します。

    cd /nsconfig/ssl
    openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout cert.pem -out cert.pem -config req.conf -extensions 'v3_req'
    <!--NeedCopy-->
    
  5. 次のコマンドを実行して証明書を検証します。

    openssl x509 -in cert.pem -noout –text
    Certificate:
    Data:
    Version: 3 (0x2)
    Serial Number:
    ed:90:c5:f0:61:78:25:ab
    Signature Algorithm: md5WithRSAEncryption
    Issuer: C=US, ST=VA, L=SomeCity, O=MyCompany, OU=MyDivision, CN=www.company.com
    Validity
    Not Before: Nov 6 22:21:38 2012 GMT
    Not After : Nov 6 22:21:38 2014 GMT
    Subject: C=US, ST=VA, L=SomeCity, O=MyCompany, OU=MyDivision, CN=www.company.com
    Subject Public Key Info:
    Public Key Algorithm: rsaEncryption
    RSA Public Key: (2048 bit)
    Modulus (2048 bit):
    …
    Exponent: 65537 (0x10001)
    X509v3 extensions:
    X509v3 Key Usage:
    Key Encipherment, Data Encipherment
    X509v3 Extended Key Usage:
    TLS Web Server Authentication
    X509v3 Subject Alternative Name:
    DNS:www.company.net, DNS:company.com, DNS:company.net
    Signature Algorithm: md5WithRSAEncryption …
    <!--NeedCopy-->