付録E. SSL証明書を生成する

安全なSSL/TLSデータチャネルと、HTTPS、LDAPS、SMTPSなどのアプリケーションプロトコルを使用するDr.Web for UNIX Internet Gatewaysコンポーネントの場合は、プライベートSSLキーと対応する証明書を提供する必要があります。一部のコンポーネントのキーと証明書は自動的に生成されます。それ以外の場合はDr.Web for UNIX Internet Gatewaysユーザーが作成する必要があります。すべてのコンポーネントがPEN形式の証明書を使用します。

認証局(CA)の検証証明書や署名付き証明書など、SSL/TLSを介した接続に使用されるプライベートキーと証明書を生成するには、コマンドラインユーティリティopenssl(OpenSSL暗号化パッケージに含まれる)を使用できます。

プライベートキーとそれに対応するSSL証明書を、CA検証証明書によって署名されたSSL証明書とともに生成するために必要な一連のアクションを検討します。

プライベートSSLキーと証明書を生成する

1.プライベートキー(RSAアルゴリズム、キーの長さは2048ビット)を生成するには、以下のコマンドを実行します。

$ openssl genrsa -out keyfile.key 2048

キーをパスワードで保護する場合は、-des3オプションを使用します。生成されたキーは、カレントディレクトリのkeyfile.keyファイルにあります。

キーを表示するには、次のコマンドを使用します。

$ openssl rsa -noout -text -in keyfile.key

2.既存のプライベートキーに基づいて指定された期間(この場合は365日)の証明書を生成するには、以下のコマンドを実行します。

$ openssl req -new -x509 -days 365 -key keyfile.key -out certificate.crt

このコマンドは、認証オブジェクトを識別するためのデータ(名前、組織など)を要求します。生成された証明書は、certificate.crtファイルに置かれます。

生成された証明書の内容をスキャンするには、次のコマンドを使用します。

$ openssl x509 -noout -text -in certificate.crt

証明書を信頼済みCA証明書として登録する

1.証明書ファイルをシステムの信頼済み証明書ディレクトリ(Debian/Ubuntuの/etc/ssl/certs/)に移動またはコピーします。

2.信頼済み証明書ディレクトリに、証明書へのシンボリックリンクを作成します。リンクの名前は証明書のハッシュ値です。

3.証明書を含むシステムのディレクトリの内容にインデックスを付け直します。

以下の例では、これら3つすべてのアクションを実行します。ここでは、現在の証明書ディレクトリが信頼済み証明書ディレクトリ/etc/ssl/certs/であり、信頼済み証明書として登録されている証明書が/home/user/ca.crtファイルにあると想定しています。

# cp /home/user/ca.crt ./
# ln -s ca.crt `openssl x509 -hash -noout -in ca.crt`.0
# c_rehash /etc/ssl/certs/

署名付き証明書を作成する

1.既存のプライベートキーに基づいて証明書に署名するためのリクエスト(Certificate Signing Request(CSR))を生成します。キーが存在しない場合は、生成します。

署名リクエストは次のコマンドで作成されます。

$ openssl req -new -key keyfile.key -out request.csr

このコマンドは、証明書を作成するコマンドと同様に、認証済みオブジェクトを識別するためのデータを要求します。このkeyfile.keyは、プライベートキーの既存のファイルです。受信したリクエストはrequest.csrファイルに保存されます。

リクエストの作成結果を確認するには、次のコマンドを使用します。

$ openssl req -noout -text -in request.csr

2.次のコマンドを使用して、リクエストと既存のCA証明書に基づいて署名付き証明書を作成します。

$ openssl x509 -req -days 365 -CA ca.crt -CAkey ca.key -set_serial 01 -in request.csr -out sigcert.crt

署名付き証明書を作成するには、ルート証明書ca.crtとそのプライベートキーca.keyca.crtca.keyの代わりにcertificate.crt証明書とkeyfile.keyキーを使用することもできます。その場合、取得した証明書は自己署名されます)、署名リクエストのrequest.csrの3つのファイルが必要です。作成された署名付き証明書はsigcert.crtファイルに保存されます。

結果を確認するには、次のコマンドを使用します。

$ openssl x509 -noout -text -in sigcert.crt

作成する必要がある一意の証明書の数と同じだけこの手順を繰り返します。たとえば、スキャンクラスタ内の分散ファイルスキャンDr.Web Network Checkerのすべてのエージェントには、独自のキーと証明書が必要です。

署名付き証明書を変更する

一部のブラウザまたはメールクライアントでは、認証に使用される署名済み証明書をPKCS12形式に変更する必要があります。

次のコマンドを使用して証明書を変更できます。

# openssl pkcs12 -export -in sigcert.crt -out sigcert.pfx -inkey keyfile.key

Sigcert.crtは署名済み証明書の既存ファイルです。keyfile.keyは対応するプライベートキーのファイルです。変更した証明書はsigcert.pfxに保存されます。