我正在尝试创建一个用于Apache Tomcat 6的自签名证书.我可以制作的每个证书都会导致浏览器连接到AES-128.客户希望我证明我可以在AES-256上创建连接.
我试过java的keytool和openssl.我尝试了各种参数,但似乎无法指定密钥大小,只是签名大小.
如何让browser-tomcat连接将AES-256与自签名证书一起使用?
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不在列表中 - 根据这个JDK 5列表,这是你想要的密码.)
为了完整起见,这是我创建的用于检查我的盒子支持的密码的简短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); } } }
事实证明,默认安装此OS X盒子的JDK 5需要安装"Unlimited Strength Jurisdiction Policy Files"才能告诉Java可以使用更高位的加密级别; 你可以在这里找到这些文件(向下滚动并查看"其他下载"部分的顶部).我不确定JDK 6是否需要完成相同的操作,但是JDK 6的相同策略文件在这里可用,所以我认为它确实如此.解压缩该文件,阅读README以了解如何安装它们所属的文件,然后再次检查支持的密码......我打赌AES-256现在在列表中.
如果是的话,你应该是金色的; 只需重新启动Tomcat,连接到您的SSL实例,我敢打赌您现在将看到AES-256连接.