2014-01-28 68 views
1

我希望将TLS实现到我的Java应用程序(它目前不实施任何加密)。然后我再读一点关于TLS的内容,看到我应该使用证书。没有证书的TLS安全?

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

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

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

+0

你需要学习的TLS一点 - 你的问题太泛在当前的形式进行回答。 –

+0

@ EugeneMayevski'EldoSCorp请给我一些链接吗? – MinecraftShamrock

+0

这里推荐书籍:https://www.eldos.com/forum/read.php?FID = 7&TID = 1842,有几篇关于SSL/TLS和证书的文章:https://www.eldos.com/sbb/articles/65-184.php –

回答

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] 

,然后用户可以导入以信任它创建的文件。

+0

没有用户。这只是网络内部的内部沟通。那么使用这些命令我可以为我的应用程序创建一个自签名证书?我不需要认证机构吗? – MinecraftShamrock

+0

@MinecraftShamrock是的,然后你可以在你的服务器程序中加载keystore来使用TLS。 – hexafraction

+0

如何告诉客户创建的证书是正确的? – MinecraftShamrock

3

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

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

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

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

PSK和SRP提供相互认证和通道绑定。也就是说,双方都可以证明共享秘密的知识,而不需要做诸如basic_auth计划之类的愚蠢事情,就像在纯文本中将秘密放在电话中一样。如果一方(或两方)不知道秘密,则通道设置失败并且没有信息泄露。

PSK和SRP具有所有SSL/TLS密码套件的理想安全性特征大多数。如果可能的话,你应该总是使用它们。


然后:如果没有安全:如何创建这样一个证书?

这是一个留给读者的练习。


什么是好的CA的?

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

为了增加对受伤的侮辱,公共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. 

因此,苹果是卖你产品没有保修,并且提供不承担任何责任!他们希望你相信他们并给他们钱......多么棒!它不仅仅是苹果 - 其他的CA也有同样的淫秽CPS。


我在哪里可以得到一个证书免费的吗?

尝试StartCom

他们不是正好免费,但他们是免费发行的。如果您需要吊销StartCom证书,那么您将必须付费。这是因为成本被撤销,而不是发行。 (其他CA在撤销前向您收取费用,如果未使用,则将其收入囊中)。


我怎样才能实现证书到Java中我的服务器应用程序?

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

0

如果我不使用证书,TLS是否也安全?

号从RFC 2246

警告:完全匿名连接只提供保护 防止被动窃听。除非使用独立的篡改 - 验证通道来验证完成的消息 未被攻击者取代,否则服务器验证在需要关注活动中间人 攻击的环境中需要 。

该系统仅是强如最弱的密钥交换和 认证算法支持
+0

TLS-SRP是一种安全的方式来执行无证书的TLS。 – user314104