クライアント証明書について
注意
本章の内容については弊社製品をオンプレミスでご契約・運用いただいているお客様の環境でのみサポートされます。NIVMSクラウド環境ではサポートされておりません。
弊社製品へアクセスするためにご利用になるWebブラウザ(Microsoft社のMicrosoft EdgeやGoogle社のChrome、Apple社のSafariなど)、および弊社NIコンサルティングが提供しているスマートデバイス向けのアプリでは「クライアント証明書」を端末の識別やユーザーの認証として用いる暗号化通信の方式をサポートします。
本章では弊社製品の稼働環境に設定を行いクライアント証明書を導入するために必要な事項・内容について説明します。
補足
- 必要となるクライアント証明書の準備や発行・運用・管理等につきましては、お客様企業ごとにご購入・ご用意いただくことを前提としています。本章では、信頼できる第三者認証局からお客様企業がクライアント証明書を購入したとして説明します。
- また、プライベート認証局(CA)などを独自に運用する場合や、より詳細な導入・運用方法につきましても、お客様企業ごとのセキュリティポリシーや個別事情によって異なり、本書では説明しきれないため対象外とさせていただいています。
- クライアント証明書を導入するかどうかはお客様企業の任意であるため、また上記理由により、製品出荷時はクライアント証明書に関する設定は有効にはなっていません。
- 一般的なWebアプリケーションの場合、Webサーバーの設定だけでクライアント証明書の導入が可能ですが、弊社製品については製品内の接続制限(全体・個別)設定と組み合わせることにより細かい調整が可能です。例えば一部の部署や役職者あるいは社員の接続はクライアント証明書を要求するといった設定が製品内の設定で可能になっており、それら弊社製品独自の機能を利用するために必要な設定について記述しています。
- 本章の内容は弊社製品動作上必要となる設定の説明であり、Webサーバーの設定やOSの設定の詳細については各製品のマニュアルをご覧いただきますよう何卒ご理解・ご了承くださいますようお願い申し上げます。
設定対象とクライアント証明書の設定手順
クライアント証明書を導入は、次の通り、いくつかのステップを経る必要があります。各ステップの詳細については以降、順に説明します。
- Step1.
- システム管理者(本マニュアルの読者)がWebサーバーのクライアント証明書通信の設定を有効にする
- Step2.
- システム管理者(本マニュアルの読者)がシステム設定の接続制限(全体接続制限または個別閲覧制限)で製品アクセス時にクライアント証明書を要求するように設定する
- Step3.
- 製品にログインする一般ユーザーがWebブラウザまたはスマートデバイス用アプリにクライアント証明書をインポートする
補足
本節の設定の説明のうち、各Webサーバー・Webブラウザの一般的なクライアント証明書の設定については参考ガイドとして掲載しております。詳細についてはそれぞれのマニュアルをご覧くださいますようお願い申し上げます。
Step1. Webサーバーのクライアント証明書通信の設定を有効にする
導入されている製品環境のWebサーバーの設定をシステム管理者(本マニュアルの読者)が行います。
注意
本ステップの中の各Webサーバーの設定において、クライアント証明書の要求を「必須」にしないでください。証明書を必須にしてしまうと弊社製品標準の各種APIやApproach DAMを導入している環境ではメールDMサーバーへのアクセスなどクライアント認証接続をサポートしていない経路のアクセスがすべて影響を受けてしまいます。
■Webサーバーの設定例(Apache)
Apacheの設定ファイルを編集し、クライアント証明書を有効にします。弊社製品ではApacheの設定はファイルは以下のファイルを使用しています。
/usr/local/ni/apache/conf/httpd.conf
/usr/local/ni/apache/conf/extra/httpd-ssl.conf
設定例)
以下の設定例のうちSSLVerifyClientとSSLRenegBufferSizeは実際にこのように指定してください。
#クライアント証明書を発行したCAの証明書
#クライアント証明書の発行元が提示する証明書をサーバーに配置しそれを指し示す必要があります。
#発行元によっては複数の証明書を順番どおりに一つのファイルに合成したものを指定する場合もあります。
SSLCACertificateFile “/usr/local/ni/apache/conf/ssl.crt/cacert.pem” #例です。
#クライアント証明書確認するチェーンレベル
#クライアント証明書の発行元が提示する設定に従います。一般的には3から4が指定されます。
SSLVerifyDepth 4
#クライアント証明書の要求#前掲の特記事項のとおり、require(必須)ではなく optional(任意)で設定してください。
SSLVerifyClient optional
#クライアント証明書レベルのアクセス制限設定
#クライアント証明書の発行元が提示する設定に従います。
#クライアント証明書の情報を用いて、アクセス制限をする設定が必要になります。
#例:クライアント証明書の組織(Organization)が、「ABC CORPORATION」で国(Country)が「JP」の場合の設定。
<Location/>
SSLRequire %{SSL_CLIENT_S_DN_O} in {“ABC CORPORATION”,””} \
and %{SSL_CLIENT_S_DN_C} in {“JP”,””}
</Location>
#失効リスト(CRL)ファイルもしくは管理ディレクトリへの参照
#クライアント証明書の発行元が提示する方法でリストを配置しそれを指し示す必要があります。
SSLCARevocationFile “/usr/local/ni/apache/conf/ssl.crl/ca-bundle.crl”
失効リスト(CRL)の同期について
証明書の発行元が公開する失効リスト(CRL)を定期的にWebサーバーへ反映するような設定が必要になります。通常はLinuxシステムのcrontabなどを設定し1日1回などの周期で取得(wgetコマンドなどで該当サイトからダウンロード)するような指定になります。具体的な設定については証明書の発行元により異なるため詳細については証明書の発行元へお問い合わせください。
#SSLクライアント認証を要求する際のリネゴシエーションバッファ(単位はバイト)。
#マッピングアシストなどのアプリから写真などの添付ファイルを扱う場合にこの設定が必要です。
#設定しなかった場合は添付ファイルがアップロードできない場合があります。
SSLRenegBufferSize 52428800
※SSLRenegBufferSizeについては、/usr/local/ni/apache/conf/httpd.confの設定ファイルの以下の箇所に記入します。
DocumentRoot “/usr/local/ni/apache/htdocs”
<Directory “/usr/local/ni/apache/htdocs”>
SSLRenegBufferSize 52428800
#
# Possible values for the Options directive are “None”, “All”,
# or any combination of:
動作環境がPHP 8.3以上の場合
/usr/local/ni/apache/conf/extra/httpd-ssl.confの設定ファイルを以下のように変更してください。
SSLProtocol -All TLSv1.2
その他特記事項
設定を反映するためにはApacheの再起動が必要です。
■Webサーバーの設定例(IIS)
IISではクライアント証明書の設定を行うためには、最初にサーバー証明書を指定しHTTPS接続できるようにサーバーの構成が必要です。その構成でクライアント証明書の設定が行えるようになります。
IISマネージャーを起動し、サイトにサーバー証明書をセットしHTTPS接続できるように指定します。その上でIISマネージャーのSSL設定を開き、前掲の特記事項(クライアント証明書の要求を必須としない)にあったとおりに設定するためには「クライアント証明書の設定」を「受理」を選択して適用をします。

専用の環境変数の指定
IISでは弊社製品内から参照される環境変数を別途指定する必要があります。
アプリケーション(PHP)内から当該Webサイトがクライアント証明書を要求していることを識別するための環境変数を定義します。この変数が定義されていることがシステム設定の接続制限設定を行うための前提になります。環境変数の定義の仕方は、IISのFastCGIモジュールとして定義されている弊社製品用のPHP定義の環境変数として定義します(環境変数の指定の仕方は弊社製品のインストールマニュアル中に記載されていますのでそちらを参照ください)。
定義する環境変数名
SSL_CLIENT_VERIFY
セットする値
1
構成エディターの指定
IISマネージャーを起動し、サイトに必要な設定を構成エディターより指定します。
- 「Default Web Site」を選択し、「構成エディター」をダブルクリックします。
- 構成エディターのセクションで「system.webSerber/serverRuntime」を選択します。
- 構成エディターの「uploadReadAheadSize」を「52428800」(単位はバイト。50MB)に変更をし、適用をクリックします。
Step2. システム設定の接続制限(全体接続制限または個別閲覧制限)で製品アクセス時にクライアント証明書を要求するように設定する
弊社製品のシステム設定にログインし個別の設定を、システム管理者(本マニュアルの読者)が行います。あらかじめステップ1の設定が適切に行われていることが必要です。
また、設定を行うWebブラウザがあらかじめクライアント証明書を使った接続ができる必要があるため、実際には本ステップの前に先にステップ3の手順を実行してお使いになるWebブラウザでクライアント証明書をインストールしておく必要があります。
注意
接続制限設定を間違えると製品に接続できなくなる恐れがあります。
広い範囲に接続制限を設定する場合は、まず個人(システム管理者以外を推奨)を設定してください。
次に設定した個人で製品にログインし、設定情報が正しいことを確認した上で設定してください。
- 弊社製品のシステム設定にクライアント証明書を使った接続+ログインします。
- システム設定>セキュリティの「全体接続制限」をクリックします。
- 個別接続制限を設定する場合はシステム設定>セキュリティの「個別接続制限」をクリックし対象の部署・役職・社員をクリックします。
- 「接続方法の制限」で、「クライアント証明書を要求する」をチェックし、証明書を要求しない接続元があればそれらを除外対象としてチェックします。
- 設定を確認し保存します。

警告
クライアント証明書に関する設定が表示されるには条件があります
「接続方法の制限」の「クライアント証明書を要求する」設定セクションは、次の条件を満たして接続している場合に限って表示されます。
- Webサーバー側でクライアント証明書を要求するように設定済みである(前掲ステップ1)
- 操作者がHTTPSで且つ適切なクライアント証明書を提示して接続している。
この条件を満たしていない場合は設定カテゴリ自体画面に表示されません。
これは万が一誤った操作を行って保存してしまった場合に、システムに接続できなくなる恐れがあるためそのような問題からシステムを保護することを目的にした仕様です。
Step3. Webブラウザまたはスマートデバイス用アプリにクライアント証明書を要求インポートする
本ステップを行うのは弊社製品にアクセスして利用する一般ユーザーです。
本ステップの作業を行うためには、各ユーザーは自身のクライアント証明書ファイルをあらかじめ手元に入手しておく必要があり、以降はそれらクライアント証明書ファイルをすでに入手済みであるとして説明しています。
以下、順に説明しています。
- Windows(Microsoft Edge 、Google Chrome)
- Mac(Safari)
- Androidスマホ、タブレット(Chrome for Android)
- iOSデバイス(Mobile Safari)
Hint
証明書の発行元によっては、中間証明書が別途発行されている場合もありその場合は、それら中間証明書もクライアント証明書同様にインポートする必要があります。
- Windows(Microsoft Edge 、Google Chrome)
- Windows上でクライアント証明書ファイルをダブクリックし、証明書取り込みウィザードを起動します。
- ウィザードに従ってインポートを進めます。この際、通常は証明書のパスワードを要求されますので各ユーザーは自身に割り当てられた証明書パスワードを入力します。
- 証明書ストア(保存先)は通常はデフォルトのままでウィザードを進めて完了します。
- この状態でブラウザ でクライアント証明書を要求するNIVMS製品にアクセスすると、通信で利用する証明書を選択するポップアップが表示されます。ここで証明書を選択して製品へアクセスします。
- Mac(Safari)
- Mac上でクライアント証明書をダブルクリックすると、キーチェーン.appが起動し、証明書のパスワードを要求されます。
- クライアント証明書の場合はここで秘密鍵のパスフレーズを入力します。証明書は正しく登録されると、「ログイン」キーチェーンの分類「証明書」に登録されます。
- 中間CA証明書の場合は取り込み時のパスワードの入力はありません。
- この状態でSafariでクライアント証明書を要求するNIVMS製品にアクセスすると、通信で利用する証明書を選択するポップアップが表示されます。ここで証明書を選択して製品へアクセスします。
Hint
Safari の場合、一度クライアント証明書を選択するとブラウザを閉じて再起動してもポップアップが表示されない場合があります。
キーチェーンアクセス.app内の該当のクライアント証明書を削除するまで有効な場合があります。
新しい証明書を取り込んだ場合は、古い証明書の削除が必要です。
- Androidスマホ、タブレット(対象:Chrome for Android)
- Android OSの「設定」でセキュリティをタップし設定を開きます。
- 「認証ストレージ」セクションの「ストレージからのインストール」をタップし、ダウンロードされているクライアント証明書を選択タップします。
- 「証明書を抽出」のダイアログが表示されるので、ユーザーは自身に割り当てられた証明書パスワードを入力します。
- 「証明書」の名前を指定するダイアログが表示されます。この名前は複数の証明書を管理するような場合に後から識別しやすいように設定するものです。証明書によってはこの名称がわかりにくいランダムな文字列がセットされる場合がありますので変更することをお奨めいたします。デフォルトのままでも動作に支障はございません。
- 最後に、その端末にロックを設定する必要がある旨のダイアログが表示される場合があります。その場合は開いた画面先でデバイスにロックを指定してください。
- この状態でブラウザでクライアント証明書を要求するNIVMS製品にアクセスすると、通信で利用する証明書を選択するポップアップが表示されます。ここで証明書を選択して製品へアクセスします。
Hint
Android OSの仕様上、証明書を登録するとその端末のロック(PINなど)が必須となります。
- iOSデバイス(対象:Mobile Safari)
- クライアント証明書をダウンロードしたりすると、プロファイルをインストールするダイアログが表示されます。
- ダイアログのインストールをタップしていくとパスワードを要求されるのでここで秘密鍵のパスフレーズを入力します。
- 正しいパスワードを入力しインストールが完了すると、証明書はプロファイルとして登録されます。
登録されたプロファイルは、設定アプリの「一般」の「プロファイル」から確認できます。
この状態でブラウザでクライアント証明書を要求するNIVMS製品にアクセスすると、通信で利用する証明書を選択するポップアップが表示されます。