SSL をサポートする Java CAPS の構成

独自の CA による証明書の署名

この節の例では、keytool を使用して証明書署名要求を作成し、前の節で作成した CA で証明書署名要求に対応する署名付き証明書を生成する方法を示します。この節で示される キーストアおよび証明書署名要求を生成する手順については、「JKS 形式のキーストアの作成」ですでに説明しています。


注 –

keytool のコマンドの詳細については、ここでは説明しません。「JKS 形式のキーストアの作成」を参照してください。


Procedurekeytool を使用して CSR を作成および証明書署名要求に対する署名付き証明書を生成する

  1. コマンド行から次の操作を実行します。


    keytool –keystore clientkeystore –genkey –alias client
    
    Enter keystore password:  javacaps
    What is your first and last name?
    [Unknown]:  development.sun.com
    What is the name of your organizational unit?
    [Unknown]:  Development
    What is the name of your organization?
    [Unknown]:  Sun
    What is the name of your City or Locality?
    [Unknown]:  Monrovia
    What is the name of your State or Province?
    [Unknown]:  California
    What is the two-letter country code for this unit?
    [Unknown]:  US
    Is <CN=development.sun.com, OU=Development, O=Sun, L=Monrovia, ST=California, 
    C=US> correct?
    [no]:  yes
    
    Enter key password for <client>
    (RETURN if same as keystore password):
  2. 証明書署名要求を生成します。


    keytool –keystore clientkeystore –certreq –alias client –keyalg rsa 
    –file client.csr
  3. 署名付き証明書を、関連する証明書署名要求に対して生成します。


    openssl  x509  -req  -CA 
        ca-certificate.pem.txt -CAkey ca-key.pem.txt 
        -in client.csr -out client.cer  -days 365  -CAcreateserial
  4. keytool を使用して、CA 証明書をクライアントキーストアにインポートします。


    keytool -import -keystore clientkeystore -file ca-certificate.pem.txt  
    -alias theCARoot 
    
    Enter keystore password:  javacaps
    Owner: EmailAddress=development@sun.com, CN=development.sun.com, OU=Development,
     O=Sun, L=Monrovia, ST=California, C=US
    Issuer: EmailAddress=development@sun.com, CN=development.sun.com, 
    OU=Development, O=Sun, L=Monrovia, ST=California, C=US
    Serial number: 0
    Valid from: Tue May 08 15:09:07 PDT 2007 until: Wed May 08 
        15:09:07 PDT 2008
    Certificate fingerprints:
    MD5:  60:73:83:A0:7C:33:28:C3:D3:A4:35:A2:1E:34:87:F0
    SHA1: C6:D0:C7:93:8E:A4:08:F8:38:BB:D4:11:03:C9:E6:CB:9C:D0:72:D0
    Trust this certificate? [no]:  yes
    Certificate was added to keystore
  5. keytool を使用して、関連するクライアントエイリアスの署名付き証明書をキーストアにインポートします。


    keytool –import –keystore clientkeystore –file client.cer –alias client
    
    Enter keystore password: javacaps
    Certificate reply was installed in keystore

    注意 – 注意 –

    クライアント証明書に証明書チェーンがない場合、次のエラーが生成されます。


    keytool -import -keystore clientkeystore -file client.cer -alias client
    
    Enter keystore password: javacaps
    keytool error: java.lang.Exception: Failed to establish chain from reply

    このエラーは、CA の証明書が最初にキーストアにインポートされなかったことが原因です。まず CA の証明書をインポートし (手順 4)、それから client.cer ファイル自体をインポートして証明書チェーンを形成します (手順 5)。


    これで、非公開鍵と関連する証明書チェーンをキーストア clientkeystore に備えることができました。これを、クライアント (アダプタ) 認証用のキーストアとして使用できます。ただし、CA 証明書は、接続する予定の Web サーバーの信頼できる証明書ストアにインポートするように注意してください。さらに、Web サーバーをクライアント認証用に構成してください (たとえば、Apache の場合は httpd.conf)。