2008-09-18 76 views
3

我正在尝试创建一个自签名证书以用于Apache Tomcat 6.每个证书我都可以使浏览器与AES-128连接。客户希望我证明我可以在AES-256上创建连接。强大的SSL与Tomcat 6

我试过Java的keytool和openssl。我已经尝试了各种参数,但似乎无法指定关于密钥大小的任何内容,只是签名大小。

如何获取browser-tomcat连接以使用带有自签名证书的AES-256?

回答

12

Okie doke,我想我只是想通了。

正如我前面所说,知识的关键的一点是,因为它是与支持AES 256位加密(例如,RSA)的算法所生成的证书没有关系,只要。只是为了确保我们在同一页上,我的测试中,我使用下面的产生我自签名证书:

keytool -genkey -alias tomcat -keyalg RSA 

现在,你必须确保你的服务器支持的Java实现AES-256,这是棘手的问题。我在OS X(OS 10.5)框中进行了测试,当我查看默认支持的密码列表时,AES-256不在列表中,这就是为什么使用仅在上面生成的证书的原因是在我的浏览器和Tomcat之间创建一个AES-128连接。 (当然,从技术上,TLS_RSA_WITH_AES_256_CBC_SHA不在名单上 - 这就是你想要的密码,根据this JDK 5 list

为了完整起见,这里是我创建检查我的盒子支持的加密算法的简短的Java应用程序:

import java.util.Arrays; 
import javax.net.ssl.SSLSocketFactory; 

public class CipherSuites { 
    public static void main(String[] args) { 
    SSLSocketFactory sslsf = (SSLSocketFactory) SSLSocketFactory.getDefault(); 
    String[] ciphers = sslsf.getDefaultCipherSuites(); 
    Arrays.sort(ciphers); 
    for (String cipher : ciphers) { 
     System.out.println(cipher); 
    } 
    } 
} 

事实证明,JDK 5,这就是这个OS X盒已经默认安装,需要安装才能告诉Java的,它的确定以使用较高位加密级别的“无限强度权限策略文件”;您可以find those files here(向下滚动并查看“其他下载”部分的顶部)。我不确定是否JDK 6需要完成相同的工作,但JDK 6 are available here的策略文件相同,所以我认为它确实如此。解压该文件,阅读自述文件以了解如何安装它们所属的文件,然后再次检查受支持的密码......我敢打赌,AES-256现在在列表中。

如果是这样,你应该是金;只需重新启动Tomcat,连接到您的SSL实例,我敢打赌,您现在将看到一个AES-256连接。

+0

无限强度管辖权限策略文件必须安装在jdk主文件夹中或仅安装在tomcat/lib文件夹中? – Fabio 2012-05-02 09:13:51

1

danivo,只要服务器的证书能够进行AES加密,浏览器和服务器之间的加密级别就与证书本身无关 - 该级别的加密是在浏览器和服务器之间协商的。换句话说,我的理解是证书没有指定加密的级别,只是加密类型(例如,AES)的类型。请参阅this link(PDF)以验证这一点,以及证书代理商如何销售“支持256位的”证书,尽管认证不是确定256位功能的证书。

所以你对支持AES-128的证书没问题 - 他们的关键是弄清楚如何让Tomcat支持AES-256(因为绝大多数主流浏览器都支持)它)。

1

SSL连接的强度是在浏览器和服务器(或任何提供SSL)之间协商的。这可能是他们的浏览器要求更弱的密码。他们有没有在这个浏览器上看到256-AES SSL连接? AES-128仍然是一个非常安全的算法,所以除非他们有一些他们想要防止脱机的东西(想想:超级计算机蛮力产生2^128键wikipedia)的攻击,128位应该没问题。如果他们真的需要这么多的保护,他们可能应该使用比网站更稳定的数据访问解决方案,一个安全的ssh隧道到他们的服务器是防弹的(你可以告诉他们他们可以有他们的256位AES和4096位RSA)或者vpn,具体取决于实施。