java - 没有证书的 TLS 安全吗?

标签 java security ssl certificate ca

我想对我的 Java 应用程序实现 TLS(目前未实现任何类型的加密)。然后我阅读了更多有关 TLS 的内容,发现我应该使用证书。

所以我的问题是:如果我不使用证书,TLS 是否也安全?

然后:如果不安全的话: 如何创建这样的证书?什么是好的 CA?我在哪里可以免费获得证书?以及如何在 Java 中将证书实现到我的服务器应用程序中?

请注意,我只需要一台服务器的证书。不适合我或电子邮件地址。

最佳答案

So my question is: Is TLS also secure if I don't use certificates?

这取决于您选择的密码套件。如果您仅使用主流的服务器身份验证模型,那么您可能需要服务器证书,因为提供了诸如 DHE-RSA-AES128-SHAEDH-RSA-DES-CBC3 之类的密码套件-SHADHE-RSA-AES128-SHAEDH-RSA-DES-CBC3-SHA 需要使用服务器证书。

但是,如果您允许匿名密码套件,例如 Anonymous Diffie-Hellman (ADH),则不需要服务器证书。

此外,如果您使用的是 TLS-PSKTLS-SRP,则不需要服务器证书。 PSK是预共享 key ; SRP 是安全远程密码。 IANA 有 88 个密码套件专用于 PSK 和 SRP(请参阅 Transport Layer Security (TLS) Parameters)。

PSK 和 SRP 提供相互认证和 channel 绑定(bind)。也就是说,双方无需做愚蠢的事情就可以证明共享 secret 的知识,例如使用 basic_auth 方案将 secret 以明文形式发送到网络上。如果一方(或双方)不知道 secret ,则 channel 设置失败并且不会泄露任何信息。

PSK 和 SRP 具有所有 SSL/TLS 密码套件中所需的安全属性。如果可能,您应该始终使用它们。


And then: If it isn't secure without: How do I create such a certificate?

这是留给读者的练习。


What are good CAs?

在我看来,没有一个。没有理由将信任授予第三方。

雪上加霜的是,公共(public) CA 不保证您所期望的,并试图在其认证实践声明 (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。


Where can I get a certificate for free?

尝试 StartCom .

它们不是完全免费的,但它们是免费发行的。如果您需要吊销 StartCom 证书,那么您将需要付费。那是因为成本在于撤销,而不是发行。 (其他 CA 会预先向您收取撤销费用,然后在未使用的情况下将钱收入囊中)。


And how can I implement the certificate into my server application in Java?

这取决于您的应用程序。我们对您的应用一无所知,所以我们不能说。

关于java - 没有证书的 TLS 安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21413253/

相关文章:

tomcat - 我在 tomcat 中用于 Amazon EC2 单实例上的 SSL 的 server.xml 有问题

apache - .htaccess 使用 ssl 将请求重定向到子域子文件夹

java - 如何使 "jconsole"与 Websphere 6.1 一起工作?

java - 如何测试多个输入以检测负数,同时记录哪些输入为负数?

java - 同步方法 block 执行

php - 防止使用 PHP CURL 的远程脚本登录网站

C# 应用程序部署、安全、复制保护?

android - 我应该混淆 Android 应用程序存储的 OAuth 消费者 secret 吗?

java - Maven war 插件出现格式错误的 pom 错误

php - htaccess force SSL 违反其他规则