1

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

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

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

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

4

3 回答 3

4

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

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

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

此外,如果您使用TLS-PSKor TLS-SRP,则不需要服务器证书。PSK 是预共享密钥;SRP 是安全远程密码。IANA 有 88 个专用于 PSK 和 SRP 的密码套件(请参阅传输层安全性 (TLS) 参数)。

PSK 和 SRP 提供相互认证和通道绑定。也就是说,双方都证明了共享秘密的知识,而无需做一些愚蠢的事情,例如将秘密以明文形式放在线路上,就像使用basic_auth方案一样。如果一方(或双方)不知道该秘密,则通道设置失败并且不会泄露任何信息。

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


然后:如果它不安全,没有:我如何创建这样的证书?

这是留给读者的练习。


什么是好的 CA?

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

雪上加霜的是,公共 CA 不保证您的期望,并试图在其认证实践声明 (CPS) 中免除其所有责任。例如,以下是Apple Inc. 证书颁发机构认证实践声明的摘录:

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完整路径(取决于操作系统和您如何设置 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 回答