- cipher 是由服务进行端选择的。
- 服务端选择之前会和客户端进行协商,优先选择客户端支持的cipher。
- 如果客户端支持的cipher都不被服务端支持,则通信异常。
- Tomcat设置cipher的方法为:在server.xml中SSL connector中的ciphers字段中设置相应的套件。
- Tomcat7.0支持设置cipher的优先顺序,但需要Tomcat 7.0.60以上版本及JAVA 8或更新的JAVA版本。
- 如果Tomcat不设置cipher的优先顺序,服务端将以客户端的cipher列表中的先后顺序选择cipher。
- Tomcat cipher的顺序:server.xml的ciphers字段中的顺序决定了协商时的优先顺序,所以应该将同意使用的套件按安全性强弱排列。
<Connector port="8443" protocol="user.Http11Protocol"
SSLEnabled="true" sslEnabledProtocols="TLSv1,TLSv1.2"
useServerCipherSuitesOrder="true"
ciphers="TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
TLS_RSA_WITH_AES_128_CBC_SHA256,
TLS_RSA_WITH_AES_128_CBC_SHA,
TLS_RSA_WITH_AES_128_GCM_SHA256,
TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
TLS_DHE_RSA_WITH_AES_256_CBC_SHA"
scheme="https" secure="true" clientAuth="false"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"
keystoreFile="keystore.jks"
keystorePass="password" />