Citrix NetScalerでSAN(サブジェクトの別名)CSRを作成する方法

Citrix関連技術
スポンサーリンク

Appleは電子証明書の取り扱いを厳格化しiOS13以降では従来の電子証明書を利用できなくなりましたが、Citrix NetScalerのGUIを使ってCSRを作成した場合iOS13に対応できるCSRが作成できなかったので、CLIでCSRを作成しました。この記事ではその手順を紹介します。

iOS13からSHA-1証明書がサポートされなくなった

Appleのサポート情報(HT210176)に記載されている通り、iOS13およびmacOS10.15における信頼済み証明書のサポート要件が変更されました。ITmedia「「SHA-1証明書」の無効化を表明、Apple」の記事に事情が記載されています。

SHA-1は何年も前から脆弱(ぜいじゃく)性が指摘され、業界はSHA-2への移行を推進してきた。GoogleやMozilla、Microsoftは段階的な廃止の予定を前倒しして、既にSHA-1証明書を使ったWebサイトをブロックする措置を講じている。

ITmedia

実は既にWindowsでもSHA-1証明書は利用できない状態になっているのですが、企業ではグループポリシーでこの辺りの制限を緩和していることがあります。(私の勤め先もそうです)
企業のネットワーク内では自己署名証明書(通称:オレオレ証明書)を用いる事がありますが、あくまで内部で利用するだけのため今もSHA-1証明書が用いられている場合があり、この証明書の置き換えだけでも相当の労力がかかります。これを避ける(先送りにする)ためSHA-1証明書を利用できるようにグループポリシーで制限を緩和している事がります。

そんな緩いセキュリティ意識のネットワークにSHA-1証明書の緩和が出来ないiOS13が現れたので大慌てです。私の勤め先の自己認証局(通称:オレオレ認証局)も今までSHA-2に対応していなかったのに、慌ててSHA2対応を果たしました。数年前からSHA-1をやめる動きがあったのに、今まで放置しているからいけないのです。

NetScalerのサーバー証明書をSHA-2に対応させる

オレオレ認証局側でSHA-2対応してくれたので、NetScalerで発行したCSRから証明書を作ったらiOS13に対応できるんじゃね?と当初は安易な考えで居ました。ところが、いざSHA-2の証明書をインストールしてアクセスしてもiOS13ではStoreFrontにアクセスできません。この段階になってやっとAppleのサポート情報 (HT210176) を確認したのでした。そこには以下の通り記載されていました。

  • RSA 鍵を利用する TLS サーバ証明書および発行元の CA は、鍵長 2048 ビット以上の鍵を用いる必要がある。2048 ビット未満の鍵長の RSA 鍵を用いた証明書は、TLS 通信において信頼されなくなります。
  • TLS サーバ証明書および発行元の CA は、SHA-2 ファミリーのハッシュアルゴリズムを署名アルゴリズムに用いる必要がある。SHA-1 で署名された証明書は、TLS 通信では信頼されなくなります。
  • TLS サーバ証明書は、証明書の SAN (Subject Alternative Name) 拡張領域にサーバの DNS 名を記述する必要がある。証明書の CommonName の DNS 名は今後は信頼されなくなります。
  • TLS サーバ証明書には ExtendedKeyUsage (EKU) 拡張領域を必ず含め、ここに id-kp-serverAuth OID を指定する必要がある。
  • TLS サーバ証明書の有効期間は 825 日以下である (証明書の NotBefore フィールドと NotAfter フィールドで明記)。

オレオレ認証局から発行された証明書と見比べて以下の要件が不足している事が分かりました。

  • SAN 拡張領域にサーバの DNS 名の記述がない
  • TLS サーバ証明書の有効期間 が10年間である

オレオレ認証局の管理者に頼んで証明書の有効期間を2年にする事は出来たのですが、SANへのDNS記載はしてくれないとの事なのでCSRに埋め込む必要が出てきました。

NetScalerのSAN CSR対応状況

ざっくりググったところ、How to create a SAN CSR in NetScaler 12.0 57.19(CTX232305)の情報を見つけられたのでGUIで出来ると安心したのですが、よく見たら運用中のNetScalerとバージョン異なるじゃないですか。。。
なのでもうちょっと良く調べたら下の2件のナレッジがヒットしました。とりあえずCLIでCSRを作れば出きるっぽい事は分かりました。
How to Create a Key and CSR for SHA-256 SAN Certificate Using NetScaler(CTX208389)
How to Create a CSR and Key File for a SAN Certificate with Multiple Subject Alternate Names(227983)

NetScalerのCLIを使ってSAN CSRを作る

このタイトル・・・まるで呪文ですね。コマンドラインインターフェースを使ってSubject Alternative Nameの証明書要求を作成します。普段CLIは使わないのでちょっとビビりながらですがナレッジに記載されている手順通りに作業を進めます。

準備するもの

エディタツール → CSRのベースになるconfファイルの作成に使います
telnetクライアント → CLIを叩くためのクライアントですね
何でもよいのですが、私はTerapadとTeratermをよく使っています。ちなみに同じTera揃いですが作者は別人(寺尾さんと寺西さん)でそれぞれのソフトに関連は無いです。

Confファイルの作成

ナレッジに沿ってCSRの元となるOpenSSLのルールに沿ったCONFファイルをテキストエディタを使って作成します。ナレッジに記載されている例文を転載しておきますので必要な個所を書き換えます。
[alt_name]より下がSAN領域で、複数のDNS名を記載する場合はDNS.1、DNS.2と複数行に書けばよいです。試しにgoogleのSANを見たらエグイほど沢山書かれてました。

[req]
distinguished_name = req_distinguished_name
req_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.com
DNS.2 = company.com
DNS.3 = www.company.net
DNS.4 = company.net

あとはCLIで操作

ファイルのアップロード

TeraTermでNetScalerにログインし、まずはconfファイルをアップロードします。TeraTermの[ファイル]-[SSH SCP]をクリックするとファイル転送ツールが使えますので、ファイルを送り込みます。保存場所は[/nsconfig/ssl]です。

シェルに切り替えてディレクトリを移動

シェルモードに切り替えて、CONFファイルをアップロードした [/nsconfig/ssl]に移動します。このディレクトリには過去に作成したCSRやキーファイルも保存されているはずです。

shell
cd /nsconfig/ssl

CSRとキーの作成

openssl req -new -out company_san.csr -newkey rsa:2048 -nodes -sha256 -keyout company_san.key.temp -config req.conf

CSRのベリファイ

openssl req -text -noout -verify -in company_san.csr

ベリファイの結果が出力されます。ナレッジにこの様に記載されているのでベリファイしていますが、これでNGの結果が出力された場合どうしたらよいのでしょうね・・・最初からやり直しかな。

生成した一時キーを使えるキー形式に変換

openssl rsa -in company_san.key.temp -out company_san.key

一時キーを削除

rm company_san.key.temp

CSRファイルのダウンロード

アップロードの時に利用したTeraTermのSSH SCPでCSRファイルをダウンロードします。取得したCSRファイルをオレオレ認証局に渡してサーバー証明書を発行します

以上がNetScalerでSAN CSRを発行する方法です。出来上がったサーバー証明書にはSAN領域が記述されているはずです。
あとは通常通りGUIでキーを使用して証明書をインストールし、VIPとバインドする事で使用可能となります。

コメント

タイトルとURLをコピーしました