SSL クライアント証明書を使用するには、個々のユーザーに証明書を発行する必要があり、通常は各ユーザーに 1 つずつ発行します。プロセスは次のとおりです。

  • ユーザーまたは管理者のいずれかが、そのユーザーの証明書要求を作成します。
  • 認証機関が要求に署名することにより、クライアント証明書が作成されます。
  • ユーザーのコンピュータの証明書データベースにクライアント証明書がインポートされます。

最初の 2 つの手順はさまざまな方法で実行できます。本書では、フリーウェアのコマンドライン証明書操作プログラム OpenSSL を使用してこれらの操作を行う方法について説明します。OpenSSL は OpenSSL バイナリページから入手できます。

証明書要求の作成

OpenSSL を使用する場合、証明書署名要求 (CSR) を作成するには、秘密 RSA キーの作成と、ユーザーの名前とその他の情報を含む証明書要求の作成の 2 つの手順があります。

最初にキーを作成します。ユーザーが入力する内容は太字で示されています。

例 1

C:\tmp>openssl genrsa -des3 -out clientcert.key 1024 Loading 'screen' into random state - done 
Generating RSA private key, 1024 bit long modulus
..............++++++ 
................++++++ 
e is 65537 (0x10001) 
Enter pass phrase for clientcert.key: (the password is not echoed) 
Verifying - Enter pass phrase for clientcert.key: 
C:\tmp>

この例では 1024 ビットキーを作成し、それを clientcert.key に格納しています。1024 ビットはセキュリティ上、問題ありませんが、セキュリティを向上させるために 2048 ビットキーを選択することもできます (ただしパフォーマンスは低下します)。

次に、CSR を作成します。

例 2

C:\tmp>openssl req -config \moveitdmz\util\openssl.conf -new -key clientcert.key -out clientcert.csr 
Enter pass phrase for clientcert.key: (enter the password given above) 
You are about to be asked to enter information that will be incorporated 
into your certificate request. 
What you are about to enter is what is called a Distinguished Name or a DN. 
There are quite a few fields but you can leave some blank 
For some fields there will be a default value, 
If you enter '.', the field will be left blank. 
----- 
Country Name (2 letter code) [US]:US 
State or Province Name (full name) [Some-State]:Wisconsin 
Locality Name (eg, city) []:Madison 
Organization Name (eg, company) [ACME Inc.]:Universal Exporters 
Organizational Unit Name (eg, section) []:Accounting 
Common Name (eg, fully qualified host name) []:Fred 
Email Address []:fred@univ-exporters.com 
Please enter the following 'extra' attributes 
to be sent with your certificate request 
A challenge password []: 
An optional company name []: 
C:\tmp>

この例では、フレッド (Fred) の証明書要求を作成します。通常は、オプションのチャレンジパスワードと企業名は空欄のままにします。証明書に署名する認証機関に clientcert.csr ファイルを送信する準備ができました。

証明書要求への署名

証明書要求を作成したら、署名を受けるために認証機関に送信する必要があります。次のような認証機関があります。

  • ThawteComodo などの認証を行う民間企業
  • 組織内の部署 (IT 部門内のセキュリティグループなど)
  • 自分自身 (通常は小規模企業のみ)

CSR に自分で署名できるように、自分を認証機関に指定するには、別個の証明書が必要です。このような証明書は管理者に対して発行されるもので、個々のユーザーには必要ありません。証明書は、上記の 3 種類の認証機関を含むさまざまな発行元から入手できます。小規模な組織の場合や単なるテスト目的の場合は、自己署名の証明書を作成すると便利です。自己署名証明書は民間企業から購入した証明書と同じレベルの暗号化が行われますが、サーバーに「信頼」されるには追加の作業が必要です。自己署名証明書は無料で、有効期限は自分で決めることができます。

自己署名証明書の作成

CSR に自分で署名できるように自己署名証明書を作成するには:

例 3

C:\tmp>openssl req -config \moveitdmz\util\openssl.conf -x509 -days 365 -newkey rsa:1024 -keyout MyCAcert.key -out MyCAcert.cer 
Loading 'screen' into random state - done 
Generating a 1024 bit RSA private key 
.....++++++ 
....++++++ 
writing new private key to 'MyCAcert.key' 
Enter PEM pass phrase: (enter a new password that will be known only to the administrator) 
Verifying - Enter PEM pass phrase: 
----- 
You are about to be asked to enter information that will be incorporated 
into your certificate request. 
What you are about to enter is what is called a Distinguished Name or a DN. 
There are quite a few fields but you can leave some blank 
For some fields there will be a default value, 
If you enter '.', the field will be left blank. 
----- 
Country Name (2 letter code) [US]:US 
State or Province Name (full name) [Some-State]:Wisconsin 
Locality Name (eg, city) []:Madison
Organization Name (eg, company) [ACME Inc.]:Universal Exporters 
Organizational Unit Name (eg, section) []:IT Dept 
Common Name (eg, fully qualified host name) []:UE IT Security 
Email Address []:ueitsec@univ-exporters.com 
C:\tmp>

これにより、365 日間有効な 1024 ビットの証明書が作成されます。この例では、証明書を作成する管理者は上記のクライアント証明書申請者と同じ組織に所属していますが、所属部署は異なります。キーは MyCAcert.key に、公開証明書は MyCAcert.cer に書き込まれます。MyCAcert.key ファイルとパスワードは必ず安全な場所に保存してください。

証明書要求に自分で署名する

自分で作成した、または他の発行元から入手した署名キーがあれば、CSR に署名できます。

例 4

C:\tmp>openssl x509 -req -in clientcert.csr -days 1000 -CA MyCAcert.cer -CAkey MyCAcert.key -CAcreateserial -out clientcert.cer 
Loading 'screen' into random state - done 
Signature ok 
subject=/C=US/ST=Wisconsin/L=Madison/O=Universal Exporters/OU=Accounting/CN=Fred/emailAddress=fred@univ-exporters.com 
Getting CA Private Key 
Enter pass phrase for MyCAcert.key: (enter the password of the CA cert) 
C:\tmp>

これによりユーザーの証明書署名要求を読み取り、それに署名して、clientcert.cer ファイルにクライアント証明書を作成します。この例では、証明書は 1,000 日間有効です。

この時点で、clientcert.cer はクライアント証明書の公開部分であり、clientcert.key は秘密部分です。一部のクライアントソフトウェア、特に Microsoft Windows では、クライアントで使用する前にこれらのファイルを別の形式に変換する必要があります。ユーザーの clientcert.key ファイルへのアクセス権がある場合 (自分で例 1 のような操作を行った場合など)、以下のようなコマンドを使用して、これら 2 つのファイルを Windows が必要とする 1 つのファイルの .pfx 形式に変換できます。

例 5

C:\tmp>openssl pkcs12 -export -in clientcert.cer -inkey clientcert.key -out clientcert.pfx 
Loading 'screen' into random state - done 
Enter pass phrase for clientcert.key: (enter the password created via "openssl genrsa" at the top) 
Enter Export Password: (enter a new password.It can be the same as the openssl genrsa password) 
Verifying - Enter Export Password: 
C:\tmp>

これで、clientcert.pfx ファイルには秘密キー部分と公開キー部分の両方が含まれました。ユーザーが自分の CSR を作成し、.key ファイルを管理者に提供していない場合、ユーザーはこの openssl pkcs12 コマンドを実行する必要があります。

ユーザーのコンピュータでクライアント証明書をインポートする

ユーザーのコンピュータで、クライアント証明書をコンピュータの証明書ストアにインポートする必要があります。オペレーティングシステムが Microsoft Windows である場合、コンピュータに clientcert.pfx をコピーして、以下の手順を実行する必要があります。

  • Windows エクスプローラで .pfx ファイルの名前をダブルクリックし、証明書のインポートウィザードを実行します。
  • [ようこそ] ページで [次へ] を選択します。
  • [インポートする証明書ファイル] ページで [次へ] を選択します (ファイル名は既に入力されています)。
  • [パスワード] ページで次の操作を行います。
  • 上記で割り当てたエクスポートパスワードを入力します。
  • [秘密キーをエクスポート可能にする] を選択します
  • [次へ] を選択します。
  • [証明書ストア] ページで [次へ] を選択します ([自動的に確認する] は既にオンになっています)。
  • [Completing (完了処理中)] ページで [完了] を選択します。
  • [The import was successful (正しくインポートされました)] ダイアログで [OK] を選択します。

これで、クライアント証明書を使用する準備ができました。証明書がインストールされていることを再度確認するために、次の手順でクライアント証明書のリストを調べることができます。

  • Internet Explorer を実行します。
  • [ツール] | [インターネットオプション...] を選択します。
  • [コンテンツ] タブを選択します。
  • [証明書...] ボタンを選択します。
  • [個人] タブに、新しくインポートした証明書が表示されます。
  • 詳細を表示するには、証明書の名前をダブルクリックします。

サーバーに CA 証明書をインストールする

自己署名 CA 証明書を作成した場合、サーバーにその証明書をインストールする必要があります。これにより、MOVEit Transfer を実行しているサーバーはこの CA 証明書の署名を持つクライアント証明書を信頼できるようになります (CA 証明書が主要な証明書ベンダーによって発行された場合、ベンダーの証明書は Windows 内に組み込まれるため、この手順は必要ありません)。

Windows の証明書ウィザードを実行して CA 証明書をインポートするには:

  1. MyCAcert.cer ファイルをダブルクリックします。

    [証明書] ダイアログが表示されます。

  2. [証明書のインストール...] ボタンを選択します。

    証明書ウィザードの [ようこそ] ページが表示されます。

  3. [次へ] を選択します。

    [証明書ストア] ページが表示されます。

  4. [証明書をすべて次のストアに配置する] を選択します。
  5. [参照...] を選択します。

    [証明書ストアの選択] ウィンドウが表示されます。

  6. [信頼されたルート証明機関] を選択し、[OK] をクリックし、[次へ] を選択します。

    [Completing (完了処理中)] ページが表示されます。

    [完了] を選択し、[セキュリティ警告] ダイアログで [はい] を選択します。

  7. [The import was successful (正しくインポートされました)] ダイアログで [OK] を選択します。
  8. [証明書] ダイアログで [OK] を選択します。