前のトピック: SSL 証明書次のトピック: 複数の証明書による SSL の使用


独自の自己署名証明書の作成

この例では、JRE (Java Runtime Environment)に含まれている keytool ユーティリティを使用します。

独自の自己署名証明書を作成する方法

  1. プロンプトに適切な応答を入力します。
    prompt>keytool -genkey -alias serverA -keyalg RSA -validity 365 -keystore keystore.ks
    
    キーストアのパスワードを入力してください:  <実際のプレーン テキストは表示されません>
    
    新規パスワードを再入力してください: MyNewSecretPassword
    
    姓名を入力してください。
    
      [Unknown]: serverA
    
    組織単位名を入力してください。
    
      [Unknown]: dev
    
    組織名を入力してください。
    
      [Unknown]: ITKO
    
    都市名または地域名を入力してください。
    
      [Unknown]: Dallas
    
    都道府県名を入力してください。
    
      [Unknown]: TX
    
    この単位に該当する 2 文字の国番号を入力してください。
    
      [Unknown]: US
    
    CN=serverA, OU=dev, O=ITKO, L=Dallas, ST=TX, C=US でよろしいですか?
    
      [no]: yes
    
    <serverA> の鍵パスワードを入力してください。
    
            (キーストアのパスワードと同じ場合は RETURN を押してください)
    


    このユーティリティは、365 日間有効な証明書が含まれるファイルを作成します。

  2. このファイルを LISA_HOME にコピーして、local.properties を更新します。
    lisa.net.keyStore={{LISA_HOME}}keystore.ks
    
    lisa.net.keyStore.password=MyNewSecretPassword
    
  3. DevTest では、プレーン テキスト パスワードが初めて読み取られると、そのパスワードは暗号化されたプロパティに変換されます。
    lisa.net.keyStore.password_enc=33aa310aa4e18c114dacf86a33cee898
    

    サーバ側の接続設定はこれで完了です。

  4. クライアントを設定します。

    この証明書は自己署名されているため、証明書を信頼するように明示的にクライアントに指示します。 通常、SSL サービスに接続(たとえば、ブラウザを使用して https://www.MyBank.com に接続)すると、信頼された認証局によって証明書が認証されます。 信頼されたサード パーティは自己署名証明書を認証しないため、証明書をトラスト ストアに追加する必要があります。

    lisa.net.trustStore={{LISA_HOME}}trustStore.ts
    
    lisa.net.trustStore.password=MyNewSecretPassword
    

    同じ keytool ユーティリティがトラスト ストアを操作します。 一般的に、キーストアには 1 つの証明書が含まれ、トラスト ストアには 1 つ以上の証明書が含まれます。

  5. サーバ キーストアの証明書をエクスポートします。
    keytool -exportcert -rfc -alias serverA -keystore keyStore.ks -file serverA.cer
    

    -rfc は、コピーおよび貼り付けを容易に行えるように、バイナリではなく ASCII テキストとして証明書をエクスポートすることを意味します。 この例では、結果として生成される serverA.cer ファイルは以下のようになります。

    -----BEGIN CERTIFICATE-----
    
    MIICEzCCAXygAwIBAgIEThZnYzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJDQjELMAkGA1UE
    
    CBM420IxCzAJBgNVBAcTAkNCMQswCQYDVQQKEwJDQjELMAkGA1UECxMCQ0IxCzAJBgNVBAMTAkNC
    
    MB4XDTExMDcwODAyMTE0N1oXDTEyMDcwNzAyMTE0N1owTJELMAkGA1UEBhMCQ0IxCzAJBgNVBAgT
    
    AkNCMQswCQYDVQQHEwJDQjELMAkGA1UECDMCQ0IxCzAJBgNVBAsTAkNCMQswCQYDVQQDEwJDQjCB
    
    nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAhYfaN+dCrKQwYZ+KeaaPUI8DeXNiqQ/mS+KGnXnh
    
    Pz08vdX/7HDLW4pzFhntjmkxxOi9dMwlO2thTD1cOxI571PotenMENo4nyiUAEnMK9MTiWEYr2cQ
    
    b6/TUueBCjRJ9I0GPCI0WPS+0Na2Q/wq8gPCHmDRpw1Xgo4uZ1v6C/ECAwEAATANBgkqhkiG9w0B
    
    AQUFAAOBgQByCsX9EoBFIGhcSwoRwEvapIrv8wTaqQPOKKyeIevSmbnERRu6+oi+cJftbdEfw6GG
    
    CBddJH+dGZ9VeqLU8zBGasbU+JPzG5ElOgOXcUGeQQEaM1YMv6XWrIwNSljQk/MPZSt3ROtJOlae
    
    JPKJXSQ610xof9+yLHH0ebUGhUjdlQ==
    
    -----END CERTIFICATE-----
    
  6. この証明書をクライアント トラスト ストアに追加します。

    トラスト ストア ファイルを作成しているため、パスワードを 2 回入力します。 このクライアント トラスト ストアにさらに証明書を追加する場合は、パスワードを 1 回入力します。

    prompt> keytool -importcert -file serverA.cer -keystore trustStore.ts
    
    キーストアのパスワードを入力してください:
    
    新規パスワードを再入力してください:
    
    所有者: CN=serverA, OU=dev, O=itko, L=Dallas, ST=Texas, C=US
    
    発行者: CN=serverA, OU=dev, O=itko, L=Dallas, ST=Texas, C=US
    
    シリアル番号: 4e155338
    
    有効期間の開始日: Thu Jul 07 16:33:28 EST 2011 until: Wed Oct 05 17:33:28 EST 2011
    
    Certificate fingerprints:
    
         MD5:  5B:10:F6:C8:02:3E:36:F5:AA:6D:FC:10:EF:F5:7F:54
    
         SHA1: 09:DA:8E:71:7C:D5:BB:44:89:14:13:07:F4:A1:C7:06:35:CD:BE:B1
    
         署名アルゴリズム名: SHA1withRSA
    
         バージョン: 3
    
    この証明書を信頼しますか? [no]:  yes
    
    証明書がキーストアに追加されました
    

    これで、パブリック クラウドの DevTest サーバへの暗号で強化された通信手段が構築されました。 相互に通信するためには、2 つの DevTest コンポーネントの両側に証明書が必要です。

  7. クライアントが複数のリモート SSL サーバと通信する場合、同じ keytool コマンドを実行して証明書をトラスト ストアにインポートします。

    注: トランスポート レベルのセキュリティ(SSL)に加えて、よりきめ細かなアクセス制御リスト(ACL)を有効にすることもできます。 アクセス制御リストを使用すると、ユーザはユーザ名およびパスワードによって認証する必要があります。 このタイプのセキュリティは、HTTPS を使用していてもユーザ ID の提示を必要とする金融機関の Web サイトに似ています。