1

Java アプリケーションに TLS を実装したいと考えていました (現在、暗号化の種類は実装されていません)。次に、TLS についてもう少し読んだところ、証明書を使用する必要があることがわかりました。

私の質問は、証明書を使用しない場合、TLS も安全ですか?

そして、それが安全でない場合: そのような証明書を作成するにはどうすればよいですか? 優れた CA とは 証明書はどこで無料で入手できますか? また、Java でサーバー アプリケーションに証明書を実装するにはどうすればよいですか?

1 つのサーバーに対してのみ証明書が必要になることに注意してください。私やメールアドレスのためではありません。

4

3 に答える 3

4

私の質問は、証明書を使用しない場合、TLS も安全ですか?

選択した暗号スイートによって異なります。サーバー認証のみの主要なモデルを使用する場合は、DHE-RSA-AES128-SHAや などの暗号スイートが提供されているため、サーバー証明書が必要になる可能性がありますEDH-RSA-DES-CBC3-SHADHE-RSA-AES128-SHAまたはEDH-RSA-DES-CBC3-SHAサーバー証明書を使用する必要があります。

ただし、Anonymous Diffie-Hellman (ADH) などの匿名暗号スイートを許可する場合、サーバー証明書は必要ありません。

さらに、TLS-PSKまたはを使用している場合TLS-SRP、サーバー証明書は必要ありません。PSK は事前共有キーです。SRP は Secure Remote Password です。IANA による PSK および SRP 専用の 88 の暗号スイートがあります ( Transport Layer Security (TLS) Parametersを参照)。

PSK と SRP は、相互認証とチャネル バインディングを提供します。basic_authつまり、両当事者は、スキームのように平文で秘密を送信するなどの愚かなことをせずに、共有された秘密の知識を証明します。いずれか (または両方) の当事者が秘密を知らない場合、チャネルのセットアップは失敗し、情報が漏洩することはありません。

PSK と SRP には、すべての SSL/TLS 暗号スイートの中で最も望ましいセキュリティ プロパティがあります。可能であれば、常にそれらを使用する必要があります。


そして、それが安全でない場合: そのような証明書を作成するにはどうすればよいですか?

それは読者に任された演習です。


優れた CA とは

私の意見では、それらのどれもありません。第三者に信頼を与える理由はありません。

さらに侮辱的なことに、Public CA はユーザーが期待することを保証せず、Certification Practice Statement (CPS) ですべての責任を放棄しようとします。たとえば、Apple Inc. Certification Authority Certification Practice Statementからの抜粋を次に示します。

2.4.2. CA disclaimers of warranties
To the extent permitted by applicable law, Subscriber agreements,
if applicable, disclaim warranties from Apple, including any
warranty of merchantability or fitness for a particular purpose.

2.4.3. CA limitations of liability
To the extent permitted by applicable law, Subscriber agreements,
if applicable, shall limit liability on the part of Apple and shall
exclude liability for indirect, special, incidental, and
consequential damages.

つまり、Apple は保証も責任も負わない製品をあなたに販売しています!!! そして、彼らはあなたに彼らを信頼してお金を与えてほしいと思っています...なんてラケットでしょう! それは Apple だけではありません。他の CA も同様にわいせつな CPS を持っています。


証明書はどこで無料で入手できますか?

StartComを試してください。

それらは厳密には無料ではありませんが、無料で発行されます。StartCom 証明書を取り消す必要がある場合は、料金を支払う必要があります。これは、コストが発行ではなく取り消しにかかるためです。(他の CA は、取り消しに対して前もって請求し、未使用の場合はポケットに入れます)。


また、Java でサーバー アプリケーションに証明書を実装するにはどうすればよいですか?

それはアプリケーションによって異なります。私たちはあなたのアプリについて何も知らないので、何とも言えません。

于 2014-02-13T04:50:45.357 に答える
2

自己署名証明書はいつでも作成できます。これも安全ですが、その証明書を信頼するように設定されていないほとんどのマシン (Java キーストアにあるかどうかに関係なく) では警告が表示されます。

走る:

keytool -genkeypair -alias [certname] -keyalg EC -keysize 571 -validity 730 -keystore javakeystore_keepsecret.jks

keytoolフルパスとして指定します (OS と Java のセットアップ方法によって異なります) 。

その後、次の方法で公開証明書をエクスポートできます。

keytool -exportcert -keystore javakeystore_keepsecret.jks -alias [certname] -file [somefilename]

ユーザーは、作成されたファイルを信頼するためにインポートできます。

于 2014-01-28T18:03:55.843 に答える
0

証明書を使用しない場合、TLS も安全ですか?

いいえ。RFC 2246から:

警告: 完全に匿名の接続は、受動的な盗聴に対する保護のみを提供します。完成したメッセージが攻撃者によって置き換えられていないことを検証するために独立した改ざん防止チャネルが使用されない限り、アクティブな中間者攻撃が懸念される環境ではサーバー認証が必要です。

システムは、サポートされている最も弱い鍵交換と認証アルゴリズムと同じくらい強力です
于 2014-02-13T05:12:25.930 に答える