SSL用証明書の作成(Linux編)


Window用にSSL用証明書の作成方法を見直しましたので、Linuxでも同様に見直しました。ここで、作成した証明書は、ApacheやPostfix、Courier-IMAP等のメールシステム、ProFTPD等で使用できますが、具体的な使用方法はそれぞれのコンテンツを参照してください。なお、クライアントへのインストール方法は、こちらのコンテンツを参照してください。
なお、RedHat系の場合は、openssl-perlがインストールされていないとスクリプトが使用できないので、予め確認して必要ならインストールしてください。SuSEは、opensslがインストールされていればスクリプトもあわせてインストールされています。
SuSE9.3やCentOS4.xの場合、スクリプトが /usr/share/ssl/misc/CA.pl というようにPATHが通っていないところにインストールされます。本内容は、RedHat9、FedoraCore2、SuSE9.0/9.1で確認していますが、何故か、おやじが現在使用しているSuSE9.0では、クライアント認証に関して「[notice] child pid 11835 exit signal Segmentation fault (11)」というエラーを吐いてブラウザで接続できませんでした。いろいろ調べたり、SuSE9.0用のApacheの最新版RPM(2.0.52)を入れてみたりしましたが改善されず、最終的にソースから2.0.52を入れてみたところうまく動作しました。SuSE用のRPMは、SSL関係でいろいろパッチがあたっているので、その中のいずれかが関係していると思いますが原因は判明しておりません。おやじが試験した他のデストリやバージョンでは、問題ありませんでした。

■プライベートCAの作成

まず、認証の大元となる認証局(CA)を作成します。

◆事前準備

これからの作業の準備として、openssl.cnfの設定を行うとともに作業用ディレクトリを作成します。

  1. SuSE9.3 や CentOS4.x や FedoraCore5 の場合、スクリプトが /usr/share/ssl/misc/CA.pl というようにPATHが通っていないところにインストールされるので、作業前にPATHを通しておく。

    [SuSE9.3/CentOS4.x]
    # export PATH=/usr/share/ssl/misc:$PATH

    [FedoraCore5]
    # export PATH=/etc/pki/tls/misc:$PATH
    #

  2. 適当なテキストエディタやvi等で openssl.cnf ( SuSE: /etc/ssl/openssl.cnf 、 RedHat系: /usr/share/ssl/openssl.cnf 、FedoraCore5: /etc/pki/tls/openssl.cnf ) の設定を行う。


    [ usr_cert ]

       ( snip )

    # 最初にサーバ証明書を作成するため、「nsCertType」を「server」
    # とするため、コメントアウトを外して有効にする。

    # This is OK for an SSL server.
    # nsCertType = server
    nsCertType = server

       ( snip )


    [ v3_ca ]

       ( snip )

    # CA証明書作成時の証明書のタイプをSSL/E-mail用と指定するため、
    #「nsCertType」を「sslCA, emailCA」とするため、コメントアウトを外して有効にする。

    # Some might want this also
    # nsCertType = sslCA, emailCA
    nsCertType = sslCA, emailCA

  3. 各証明書の有効期限を変更したい場合は、CA.pl内の下記のパラメータを変更する。(0.9.8xの場合)

    1. CA証明書

      CA証明書の有効期限は、$CADAYSの値を変更すればよい。


         ( snip )

      $SSLEAY_CONFIG=$ENV{"SSLEAY_CONFIG"};
      $DAYS="-days 365";    # 1 year
      $CADAYS="-days 1095"; # 3 years

         ( snip )


    2. サーバ証明書等

      サーバ証明書等の有効期限は$DAYSを変更しただけでは駄目である。変更方法としては、以下の2つの方法がある。

      [方法1]
       CA.pl内の135/138/143行のsystemに下記のように$DAYSを追記し、$DAYSパラメータの値を変更する方法。


         ( snip )

      $SSLEAY_CONFIG=$ENV{"SSLEAY_CONFIG"};
      $DAYS="-days
      1095";    # 1 year
      $CADAYS="-days 1095"; # 3 years

         ( snip )
      } elsif (/^-xsign$/) {
         system ("$CA
      $DAYS -policy policy_anything -infiles newreq.pem");
         $RET=$?;
      } elsif (/^(-sign|-signreq)$/) {
         system ("$CA $DAYS -policy policy_anything -out newcert.pem " .
            "-infiles newreq.pem");
         $RET=$?;
         print "Signed certificate is in newcert.pem\n";
      } elsif (/^(-signCA)$/) {
         system ("$CA $DAYS -policy policy_anything -out newcert.pem " .
            "-extensions v3_ca -infiles newreq.pem");
         $RET=$?;
         print "Signed CA certificate is in newcert.pem\n";

         ( snip )


      [方法2]
       CA.plはそのままにして、openssl.confのdefault_daysを変更する方法。CA.plの-signではデフォルトでは-daysの指定が無いので、openssl.confのdefault_daysで指定した値が適用される。


         ( snip )

      default_days =
      1095

         ( snip )


  4. FedoraCore5の場合、スクリプト(CA.pl)で指定しているディレクトリがデフォルトから変更されているので、本ページ内の説明どおりに行うなら下記で修正しておく。本ページ内の内容を読み替えることができるないら、もちろんそのままでも良い。(赤字:追加)


       ( snip )

    #$CATOP="../../CA";
    $CATOP="./demoCA";
    $CAKEY="cakey.pem";
    $CAREQ="careq.pem";
    $CACERT="cacert.pem";

       ( snip )


  5. 続いて、各種証明書等を作成する際の作業用ディレクトリを作成する。ここでは、/usr/local/certs 配下で作業することとする。

    # mkdir /usr/local/certs

◆CA用秘密鍵(cakey.pem)とCA用証明書(cacert.pem)の作成

事前準備で作成した作業用ディレクトリに移動し、プライベートCA用の秘密鍵と証明書をCA.pl ( opensslのスクリプト ) を使用して作成する。

# CA.pl -newca
CA certificate filename (or enter to create)
[Enter]を入力
Making CA certificate ...
Generating a 1024 bit RSA private key
.................++++++
.................++++++
writing new private key to './demoCA/private/cakey.pem'
Enter PEM pass phrase:
xxxxx[Enter]              ← CA用パスフレーズ入力(画面上何も変化はないが処理されている)
Verifying - Enter PEM pass phrase:xxxxx[Enter]  ← CA用パスフレーズ再入力
-----
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) [GB]:
JP[Enter] (国コード)
State or Province Name (full name) [Berkshire]:
Tokyo[Enter] (都道府県名)
Locality Name (eg, city) [Newbury]:
Edogawa[Enter] (市町村名)
Organization Name (eg, company) [My Company Ltd]:Private_CA[Enter] (組織名)
Organizational Unit Name (eg, section) []:
Admin[Enter] (組織内ユニット名)
Common Name (eg, your name or your server's hostname) []:
Private_CA[Enter] (組織/サーバ名)
Email Address []:oyaji@mail.aconus.com[Enter] (管理者メールアドレス)

------------------------以下は0.9.8xの場合--------------------------------

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
[Enter]のみ入力
An optional company name []:
[Enter]のみ入力
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem
:xxxxx[Enter]  ← CA用パスフレーズ入力
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number:
            b9:27:18:0b:ac:12:d7:b0
        Validity
            Not Before: May 24 12:02:37 2006 GMT
            Not After : May 23 12:02:37 2009 GMT
        Subject:
            countryName               = JP
            stateOrProvinceName       = Tokyo
            organizationName          = Private_CA
            organizationalUnitName    = Admin
            commonName                = Private_CA
            emailAddress              = oyaji@mail.aconus.com
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                B6:F1:C9:30:A8:E5:23:AE:B6:DA:16:F3:9D:7B:FC:CD:D1:2C:22:17
            X509v3 Authority Key Identifier:
                keyid:B6:F1:C9:31:A8:E5:23:AE:B6:DA:15:E3:91:7B:E3:CD:21:2C:22:17
                DirName:/C=JP/ST=Tokyo/O=Private_CA/OU=Admin/CN=Private_CA/emailAddress=oyaji@mail.aconus.com
                serial:B9:27:18:0B:AC:12:D7:B0

            X509v3 Basic Constraints:
                CA:TRUE
            Netscape Cert Type:
                SSL CA, S/MIME CA
Certificate is to be certified until May 23 12:02:37 2009 GMT (1095 days)

Write out database with 1 new entries
Data Base Updated


この作業で以下のようなディレクトリ・ファイルが作成されるので、確認しておく。


 /usr/local/certs [ ルートディレクトリ ]
              |
              └ demoCA [ 各種証明書等のルートディレクトリ ]
                   |
                   ├ certs [ 証明書等のディレクトリ(バックアップに利用) ]
                   |
                   ├ crl [ 破棄証明書一覧用のディレクトリ ]
                   |
                   ├ newcerts [ クライアント証明書(sireal追番)のディレクトリ ]
                   |  |
                   |  ├ xxxxx..pem [ クライアント証明書 ]
                   |  |    :
                   |  └ xxxxx..pem [ クライアント証明書 ]
                   |
                   ├ private [ CA用の秘密鍵用ディレクトリ ]
                   |  |
                   |  └ cakey.pem [ CA用の秘密鍵 ]
                   |
                   ├ cacert.pem [ CA用の証明書 ]
                   ├ index.txt     [ クライアント証明書用DB ]
                   └ serial [ クライアント証明書用シリアル ]


◆サーバ用CA証明書(cacert.crt)の作成(0.9.8xの場合)

0.9.8xの場合、サーバで使用するためには下記の操作でCA証明書(cacert.crt)だけを切り出しておく。0.9.7xの場合は、cacert.pemのまま使用できる。 cacert.crt はCA証明書のことなので、Apache等の説明で使用しているca.crtと同じ。(cacert.crt = ca.crt)

# openssl x509 -in ./demoCA/cacert.pem -out ./demoCA/cacert.crt


CA証明書をブラウザにインポートするためのca.derファイルの作成

CA証明書をブラウザにインポートするためのderファイルを、以下で作成する。このca.derファイルをこちらの手順でブラウザにインポートする。

# openssl x509 -inform pem -in ./demoCA/cacert.pem -outform der -out ./demoCA/ca.der


■サーバ用証明書の作成

続いて、サーバ証明書を作成します。この証明書は、ホスト名が同一ならApacheやPostfix、ProFTPD等でそのまま使用できます。ホスト名が異なる場合(web: www.aconus.com、mail : mail.aconus.co  etc.)は、CNが異なりますのでそれぞれ異なるサーバとして作成する必要があります。この場合、server1.key 、server2.key のように変えて同じように作成すればよいと思います。
[注意]: サーバ証明書を作成する場合、CA証明書とサーバ証明書のON(Organization Name)は、異なる名称にしないとうまく動作しないので注意が必要です。

◆サーバ用秘密鍵(newkey.pem)の作成

ここでは、CAに送るデジタル証明書のリクエストファイルを作成する。なお、サーバ用秘密鍵のまま、SSL起動すると起動するたびにパスフレーズの入力が必要であり、セキュリティ上は好ましくありませんが、停電からの自動再起動時等に起動できなくなりますので、秘密鍵にパスフレーズを入れないよう、「-nodes」で作成します。(SuSE9.3の場合、newkey.pemは作成されないので、別途newreq.pemから切り出す作業が必要)
ここで作成される「newkey.pem」がサーバ用の秘密鍵なので、Apache等で使用する場合(SSLCertificateKeyFileで指定するファイル)はこれを使用すればよい。(Apacheの説明で使用している server.key は ここでいう newkey.pem のこと。即ち server.key = newkey.pem)

# CA.pl -newreq-nodes
Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
.........++++++
..............++++++
writing new private key to 'newkey.pem'
-----
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) [GB]:
JP[Enter] (国コード)
State or Province Name (full name) Some-State]:
Tokyo[Enter] (都道府県名)
Locality Name (eg, city) []:
Edogawa[Enter] (市町村名)
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
aconus.com[Enter] (組織名)
Organizational Unit Name (eg, section) []:
Admin[Enter] (組織内ユニット名)
Common Name (eg, your name or your server's hostname) []:
www.aconus.com[Enter] (ホスト名:*)
Email Address []:
oyaji@mail.aconus.com[Enter] (管理者メールアドレス)

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
[Enter]        ← Enterのみ入力
An optional company name []:
[Enter]      ← Enterのみ入力
Request is in newreq.pem, private key is in newkey.pem

      *: ここのホスト名は、必ずhttps://・・・・等、アクセスする時のホスト名とすること。

但し、SuSE9.3の場合は、newkey.pem(秘密鍵)が作成されないので、下記で作成する。
# openssl rsa -in newreq.pem -out newkey.pem


◆サーバ用証明書(newcert.pem/server.crt)の作成

認証局の証明書とキーを使って、リクエストファイルからX.509サーバ証明書の作成と署名を行う。

# CA.pl -sign
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:xxxxx[Enter]  ← CA用パスフレーズ入力
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number:
            b9:27:18:0b:ac:12:d7:b1
        Validity
            Not Before: May 24 12:05:30 2006 GMT
            Not After : May 24 12:05:30 2007 GMT
        Subject:
            countryName               = JP
            stateOrProvinceName       = Tokyo
            localityName              = Edogawa
            organizationName          = aconus.com
            organizationalUnitName    = Admin
            commonName                = www.aconus.com
            emailAddress              = oyaji@mail.aconus.com
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Cert Type:
                SSL Server
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                FA:CF:7E:2C:F7:DA:81:38:3D:C4:ED:5E:50:D5:52:8A:EF:F6:EB:8A
            X509v3 Authority Key Identifier:
                keyid:B6:F1:C9:30:A8:E5:22:AE:B6:DA:16:E3:9D:7B:EC:CD:21:2C:22:17

Certificate is to be certified until May 24 12:05:30 2007 GMT (365 days)
Sign the certificate? [y/n]:y[Enter]


1 out of 1 certificate requests certified, commit? [y/n]y[Enter]
Write out database with 1 new entries
Data Base Updated
Signed certificate is in newcert.pem

サーバで使用するために、下記の操作でサーバ証明書(server.crt)だけを切り出しておく。

# openssl x509 -in newcert.pem -out server.crt


■メール用証明書の作成

上記でApacheやPostfix等用のサーバ証明書が作成できますが、これを利用して以下の手順でメール用(Courier-IMAP)の証明書を作成します。

◆メール用証明書(mail.pem)の作成

メール用証明書(mail.pem)を、サーバ証明書と鍵から作成します。

# (cat server.crt ; cat newkey.pem) > mail.pem


◆サーバ用証明書等のバックアップ

できあがったサーバ用証明書等を適当な場所にバックアップしておく。

# mkdir server
# mv *.pem server
# mv *.key server
# mv *.crt server


■クライアント用証明書の作成

続いて、Apache用のクライアント証明書の作成方法を示しますが、単に通信を暗号化(httpsでのアクセス)するだけなら上記作業だけで十分であり以下の作業は不要です。
このクライアント用証明書によるクライアント認証を導入すると、予め認証局で署名されたクライアント用証明書を持たない端末がアクセスしても、接続そのものが拒否されるのでセキュリティ的にかなり強固になります。反面、クライアント毎に証明書を発行することになるので、運用はかなり面倒になりますが、セキュリティとのバータなので止むを得ません。
このようなクライアント認証は、一般的に企業などで導入されており、具体例としてはwebを使用して外勤の営業マンが社外から社内システムにアクセスできるシステムや株取引のシステムなどに導入されています。このようなシステムの場合、不特定多数にアクセスされるとApacheの認証やアプリ認証だけではセキュリティが甘くなるため、アクセスレベルでセキュリティを強化するためにクライアント認証を導入します。
クライアント証明書使用時のApacheの設定方法については、SSL用設定のページ(RedHatSuSE)を参照ください。

◆事前準備

openssl.cnfの設定をクライアント証明書発行用に修正します。この作業をしないと、Netscapeにはインストールできません。

[ usr_cert ]

   ( snip )

# サーバ証明書作成用からクライアント証明書用に、「nsCertType」を
#「nsCertType」を 変更する。コメントアウトを外した「server」を削除し、
#「client, email」のコメントアウトを外して有効にする。

# This is OK for an SSL server.
# nsCertType = server 
(元に戻す)

   ( snip )

# For normal client use this is typical
# nsCertType = client, email
nsCertType = client, email

◆クライアント用証明書作成用リクエストファイル(newreq.pem)の作成

ここでは、CAに送るデジタル証明書のリクエストファイルを作成します。

# CA.pl -newreq
Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
........+++++
......................................+++++
writing new private key to 'newreq.pem'
Enter PEM pass phrase:
xxxxx[Enter]         ← クライアント用パスフレーズ入力
Verifying - Enter PEM pass phrase:
xxxxx[Enter]  ← クライアント用パスフレーズ再入力
-----
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) [GB]:
JP[Enter] (国コード)
State or Province Name (full name) [Berkshire]:
Tokyo[Enter] (都道府県名)
Locality Name (eg, city) [Newbury]:
Edogawa[Enter] (市町村名)
Organization Name (eg, company) [My Company Ltd]:
aconus.com[Enter] (組織名)
Organizational Unit Name (eg, section) []:
user[Enter] (組織内ユニット名)
Common Name (eg, your name or your server's hostname) []:
oyaji[Enter] (ユーザ名)
Email Address []:
oyaji@mail.aconus.com[Enter] (管理者メールアドレス)

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:[Enter]          
← Enterのみ入力
An optional company name []:[Enter]        
← Enterのみ入力

Request is in newreq.pem, private key is in newkey.pem


◆クライアント用証明書(newcert.pem)の作成

認証局の証明書とキーを使って、X.509クライアント証明書の作成と署名を行う。

# CA.pl -sign
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
xxxxx[Enter]  ← CA用パスフレーズ入力
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number:
            b9:27:18:0b:ac:12:d7:b2
        Validity
            Not Before: May 24 12:17:22 2006 GMT
            Not After : May 24 12:17:22 2007 GMT
        Subject:
            countryName               = JP
            stateOrProvinceName       = Tokyo
            localityName              = Edogawa
            organizationName          = aconus.com
            organizationalUnitName    = user
            commonName                = oyaji
            emailAddress              = oyaji@mail.aconus.com
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Cert Type:
                SSL Client, S/MIME
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                BB:2E:30:29:52:F6:98:D5:24:27:1C:A9:BE:4D:22:E9:DD:AE:58:31
            X509v3 Authority Key Identifier:
                keyid:B6:F1:C9:30:A8:E5:22:AE:B6:DA:16:E3:9D:7B:EC:CD:21:2C:22:17

Certificate is to be certified until May 24 12:17:22 2007 GMT (365 days)
Sign the certificate? [y/n]:y[Enter]


1 out of 1 certificate requests certified, commit? [y/n]y[Enter]
Write out database with 1 new entries
Data Base Updated
Signed certificate is in newcert.pem


クライアント証明書を発行すると、index.txtに以下のような内容が追加され、クライアントが追加されるたびにこの内容も追加されていく。index.txtは後述する証明書の失効処理で使用されるデータベースなので、書き換えたりしないよう注意が必要である。
V 051003025313Z FB4C837477EB7B41 unknown /C=JP/ST=Tokyo/L=Edogawa/O=Acorn/OU=user/CN=oyaji/emailAddress=oyaji@mail.aconus.com


◆pkcs12形式のクライアント用証明書(oyaji.p12)の作成

鍵と証明書を安全に外部渡す(クライアントに渡す)ために、pkcs12という方法で鍵と証明書をひとつにまとめる。下記ではクライアント用の鍵と証明書に加え、CA証明書も合わせてひとつにまとめることができる。なお、Export用のパスワードは、クライアントでの解凍用に、証明書と同様にクライアントに通知する(同一メールで送るなどということはやめよう)必要がある。 「-pkcs12」の後ろには証明書の証明書のフレンドリ名(ここではoyaji)を指定する。

# CA.pl -pkcs12 oyaji
Loading 'screen' into random state - done
Enter pass phrase for newreq.pem:
xxxxx ← クライアント用パスフレーズ入力
Enter Export Password:xxxxx        ← Export用パスフレーズ入力
Verifying - Enter Export Password:xxxxx ← Export用パスフレーズ入力

PKCS #12 file is in newcert.p12

作成したクライアント証明書のクライアントへのインストール方法は、こちらを参照ください。

◆クライアント用証明書等のバックアップ

CA.plを使用して、クライアント証明書を発行するとリクエストファイル(newreq.pem)と証明書(newcert.pem)は発行するたびに書き換えられてしまう。中でも、リクエストファイルは後述するクライアント証明書の失効処理に必要なので、バックアップしておかなければならない。(実際には、./demoCA/newcerts配下にバックアップされてはいるが、シリアル番号で作成されるため対応付けができない。)
 以下に、バックアップの一例を示すが何らかの方法でクライアントが分かる形でバックアップしておくことが重要である。ここでは、demoCA配下のcertsディレクトリにユーザ毎のディレクトリを作成し、そこにバックアップした。間違えて、連続してクライアントを作成してしまった場合は、画面上からシリアルが分かるはずなので対応が分からなくなる前に、./demoCA/newcerts配下のファイルを対応付けしてバックアップしておくと良いのでは?
 シリアル番号をテキストベースで管理するのもひとつの手であるし、一連の作業を自動化してしまうほうが手っ取り早いのでは。

# mkdir ./demoCA/certs/oyaji
# mv new* ./demoCA/certs/oyaji
# mv *.p12 ./demoCA/certs/oyaji


◆クライアント用証明書の失効処理

クライアント証明書で運用するようなケースではセキュリティ管理が重要であり、証明書を紛失したり使用しなくなったりしたら、直ちに失効処理を行い当該証明書が使用できないようにする必要がある。以下に、失効処理を示すが、ここで作成されたcrl.pem(証明書失効リスト)をApacheに読ませれば(Windowsの場合はApacheの再起動)、該当証明書を無効化できる。
 まず、失効処理用のcrlnumberを作成し、失効したいクライアントのリクエストファイルを指定して失効処理とリスト作成を行う。
 失効処理を行うと、index.textは以下のように行頭がRに変わり、失効時間が3番目のパラメータとして追加される。

R 051003025313Z 041003031948Z FB4C837477EB7B41 unknown /C=JP/ST=Tokyo/L=Edogawa/O=Acorn/OU=user/CN=oyaji/emailAddress=oyaji@mail.aconus.com

# openssl ca -gencrl -revoke ./demoCA/certs/oyaji/newcert.pem -out ./demoCA/crl/crl.pem
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:xxxxx   ← CA用パスフレーズ入力
Revoking Certificate b9:27:18:0b:ac:12:d7:b2.
Data Base Updated


◆おまけ

上記のように、クライアント証明書の運用は各人の証明書管理が結構大変である。そこで、openssl0.9.8bのCA.plを改造したスクリプト(CA2.plとでもリネームして使ってください。)を作成してユーザ管理しやすくしてみた。本CA2.plは下記のクライアント証明書関係以外は、改造していないのでそのまま使用できる。
変更したのは、pkcs12でユーザに提供するクライアント証明書の作成と失効処理である。pkcs12でユーザに提供するクライアント証明書を作成すると、証明書をuser名.p12とするとともに、作業ディレクトリ配下に./user/user名というフォルダを作成し作成データをセーブする。作成時に同一ユーザ名のチェックを行っている。

# CA2.pl -pkcs12 oyaji
Enter pass phrase for newkey.pem:xxxxx[Enter]    ← クライアント用パスフレーズ入力

Enter Export Password:
xxxxx[Enter]            ← Export用パスフレーズ入力
Verifying - Enter Export Password:
xxxxx[Enter]    ← Export用パスフレーズ入力
PKCS #12 file is in oyaji.p12
失効処理も面倒なので、revokeオプションを追加した。上記pkcs12でクライアント証明書を作成したことが前提となり、user名を指定することで失効処理と失効リストの更新を行う。
# CA2.pl -revoke oyaji
Using configuration from /etc/pki/tls/openssl.cnf
Loading 'screen' into random state - done
Enter pass phrase for ./demoCA/private/cakey.pem:
xxxxx[Enter]   ← CA用パスフレーズ入力
Revoking Certificate
b927180bac12d7b2.
Data Base Updated



Top Pageへ