代码之家  ›  专栏  ›  技术社区  ›  danivovich

使用Tomcat 6的强SSL

  •  3
  • danivovich  · 技术社区  · 16 年前

    我正在尝试创建一个自签名证书,用于ApacheTomcat6。我可以制作的每个证书都会导致浏览器连接到AES-128。客户希望我演示一下,我可以在AES-256上创建连接。

    我尝试过Java的KooKoT和OpenSSL。我尝试过使用各种参数,但似乎无法指定任何有关密钥大小的内容,只指定签名大小。

    如何让浏览器Tomcat连接使用带有自签名证书的AES-256?

    4 回复  |  直到 16 年前
        1
  •  12
  •   delfuego    16 年前

    Okie Doke,我想我刚刚知道了。

    正如我上面所说,关键的一点是证书并不重要,只要它是用支持AES 256位加密(例如RSA)的算法生成的。为了确保我们在同一个页面上,对于我的测试,我使用以下方法生成了我的自签名证书:

    keytool -genkey -alias tomcat -keyalg RSA
    

    现在,您必须确保您的服务器上的Java实现支持AES-256,这是一个棘手的问题。我在一个OSX(OS10.5)框上进行了测试,当我检查查看默认支持的密码列表时,AES-256不在列表中,这就是为什么使用上面生成的证书在我的浏览器和Tomcat之间创建了一个AES-128连接的原因。(好吧,从技术上讲,带有密码的tls-rsa-u-aes-u-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 (向下滚动并查看“其他下载”部分的顶部)。我不确定JDK6是否需要做同样的事情,但JDK6的策略文件是否相同 are available here 我想是的。解压该文件,阅读自述文件以了解如何安装它们所属的文件,然后再次检查支持的密码…我打赌AES-256现在在名单上。

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

        2
  •  1
  •   delfuego    16 年前

    Danivo,只要服务器的证书能够进行AES加密,浏览器和服务器之间的加密级别就独立于证书本身——加密级别在浏览器和服务器之间协商。换句话说,我的理解是证书没有指定加密级别,只是 类型 加密(如AES)。见 this link (pdf)为了验证这一点,以及尽管证书不是决定256位能力的因素,但证书转售商如何向上销售“256位能力”证书。

    所以,您对支持aes-128的cert很满意——它们的关键是找出如何让Tomcat支持aes-256(因为大多数(如果不是全部)主要浏览器都支持它)。

        3
  •  1
  •   alif    16 年前

    SSL连接的强度在浏览器和服务器(或提供SSL的任何设备)之间进行协商。可能是他们的浏览器要求更弱的密码。他们在这个浏览器上见过256-AES SSL连接吗?AES-128仍然是一个非常安全的算法,所以除非他们有一些想要保护的东西,以防离线(想想:超级计算机强力生成2^128个密钥) wikipedia )攻击,128位应该可以。如果他们真的需要这么多的保护,他们可能应该使用比网站更稳定的数据访问解决方案,到他们的服务器的安全SSH通道是防弹的(你可以告诉他们可以有他们的256位AES和4096位RSA),或者VPN,这取决于实现。

        4
  •  1
  •   kkron    13 年前