@@ -56,17 +56,15 @@ public class HAProxyConfigurator implements LoadBalancerConfigurator {
5656 private static String [] defaultListen = {"listen vmops" , "\t bind 0.0.0.0:9" , "\t option transparent" };
5757 private static final String SSL_CERTS_DIR = "/etc/ssl/cloudstack/" ;
5858
59- // https://ssl-config.mozilla.org/#server=haproxy&version=1.8&config=old&openssl=1.1.1d&guideline=5.4
60- private static String sslConfigurationOld = "\n \t ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA" +
61- "\n \t ssl-default-bind-options no-sslv3 no-tls-tickets" +
62- "\n \n \t ssl-default-server-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA" +
63- "\n \t ssl-default-server-options no-sslv3 no-tls-tickets" ;
64-
65- // https://ssl-config.mozilla.org/#server=haproxy&version=1.8&config=intermediate&openssl=1.1.1d&guideline=5.4
66- private static String sslConfigurationIntermediate = "\n \t ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384" +
67- "\n \t ssl-default-bind-options no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets" +
68- "\n \n \t ssl-default-server-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384" +
69- "\n \t ssl-default-server-options no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets" ;
59+ private static String sslConfigurationOld = "no-sslv3 no-tls-tickets ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256" +
60+ ":ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256" +
61+ ":DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA" +
62+ ":ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256" +
63+ ":AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA" ;
64+
65+ private static String sslConfigurationIntermediate = "no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets ciphers ECDHE-ECDSA-AES128-GCM-SHA256" +
66+ ":ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305" +
67+ ":DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384" ;
7068
7169 @ Override
7270 public String [] generateConfiguration (final List <PortForwardingRuleTO > fwRules ) {
@@ -524,6 +522,14 @@ private List<String> getRulesForPool(final LoadBalancerTO lbTO, boolean keepAliv
524522 if ("true" .equalsIgnoreCase (lbConfigsMap .get (LoadBalancerConfigKey .LbHttp2 .key ()))) {
525523 sb .append (" alpn h2,http/1.1" );
526524 }
525+
526+ // Sina
527+ String lbSslConfiguration = lbConfigsMap .get (LoadBalancerConfigKey .LbSslConfiguration .key ());
528+ if ("old" .equalsIgnoreCase (lbSslConfiguration )) {
529+ sb .append (" " ).append (sslConfigurationOld );
530+ } else if ("intermediate" .equalsIgnoreCase (lbSslConfiguration )) {
531+ sb .append (" " ).append (sslConfigurationIntermediate );
532+ }
527533 sb .append ("\n \t http-request add-header X-Forwarded-Proto https" );
528534 }
529535 frontendConfigs .add (sb .toString ());
@@ -780,15 +786,6 @@ public String[] generateConfiguration(final LoadBalancerConfigCommand lbCmd) {
780786 gSection .set (6 , "\t group root" );
781787 }
782788
783- String sslConfiguration = LoadBalancerConfigKey .LbSslConfiguration .key ();
784- if (sslConfiguration != null && sslConfiguration .equalsIgnoreCase ("old" )){
785- gSection .add (sslConfigurationOld );
786- gSection .add ("\n \t ssl-dh-param-file /root/dhparam.pem.old" );
787- } else if (sslConfiguration == null || ! sslConfiguration .equalsIgnoreCase ("none" )){
788- gSection .add (sslConfigurationIntermediate );
789- gSection .add ("\n \t ssl-dh-param-file /root/dhparam.pem.intermediate" );
790- }
791-
792789 if (s_logger .isDebugEnabled ()) {
793790 for (final String s : gSection ) {
794791 s_logger .debug ("global section: " + s );
0 commit comments