[jboss-jira] [JBoss JIRA] (WFLY-2653) HTTPS undertow listener select cipher-suites

Aleksandar Kostadinov (JIRA) issues at jboss.org
Fri Dec 13 17:24:34 EST 2013


     [ https://issues.jboss.org/browse/WFLY-2653?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aleksandar Kostadinov updated WFLY-2653:
----------------------------------------

    Description: 
At the moment I don't see any way to restrict allowed cipher suites for the https listener.
{CODE}
[standalone at localhost:9990 /] /core-service=management/security-realm=HttpsRealm:read-resource(recursive=true, include-defaults=true)
{
    "outcome" => "success",
    "result" => {
        "map-groups-to-roles" => true,
        "authentication" => undefined,
        "authorization" => undefined,
        "plug-in" => undefined,
        "server-identity" => {"ssl" => {
            "alias" => undefined,
            "key-password" => undefined,
            "keystore-password" => "changeit",
            "keystore-path" => "localhost.keystore",
            "keystore-relative-to" => "jboss.server.config.dir",
            "protocol" => "TLS"
        }}
    }
}
[standalone at localhost:9990 /] /subsystem=undertow/server=default-server:read-resource(recursive=true, include-defaults=true)
{
    "outcome" => "success",
    "result" => {
<...>
        "https-listener" => {"https" => {
            "allow-encoded-slash" => false,
            "always-set-keep-alive" => true,
            "buffer-pipelined-data" => true,
            "buffer-pool" => "default",
            "decode-url" => true,
            "enabled" => true,
            "max-cookies" => 200,
            "max-header-size" => 51200,
            "max-headers" => 200,
            "max-parameters" => 1000,
            "max-post-size" => 10485760L,
            "security-realm" => "ApplicationRealm",
            "socket-binding" => "https",
            "url-charset" => "UTF-8",
            "verify-client" => "NOT_REQUESTED",
            "worker" => "default"
        }}
    }
}
{CODE}

I have tested that default cipher suites used are pretty sane except RC4-SHA and RC4-MD5. Below is full list. But I think it is important for users to be able to support more or less ciphers depending on their environment and requirements. We also need good secure default settings IMO excluding the above mentioned two ciphers. See current recommendations here [1][2]
{CODE}
$ sslscan --no-failed localhost:8443
                   _
           ___ ___| |___  ___ __ _ _ __
          / __/ __| / __|/ __/ _` | '_ \
          \__ \__ \ \__ \ (_| (_| | | | |
          |___/___/_|___/\___\__,_|_| |_|

                  Version 1.8.2
             http://www.titania.co.uk
        Copyright Ian Ventura-Whiting 2009

Testing SSL server localhost on port 8443

  Supported Server Cipher(s):
    Accepted  SSLv3  256 bits  DHE-RSA-AES256-SHA
    Accepted  SSLv3  256 bits  AES256-SHA
    Accepted  SSLv3  168 bits  EDH-RSA-DES-CBC3-SHA
    Accepted  SSLv3  168 bits  DES-CBC3-SHA
    Accepted  SSLv3  128 bits  DHE-RSA-AES128-SHA
    Accepted  SSLv3  128 bits  AES128-SHA
    Accepted  SSLv3  128 bits  RC4-SHA
    Accepted  SSLv3  128 bits  RC4-MD5
    Accepted  TLSv1  256 bits  DHE-RSA-AES256-SHA
    Accepted  TLSv1  256 bits  AES256-SHA
    Accepted  TLSv1  168 bits  EDH-RSA-DES-CBC3-SHA
    Accepted  TLSv1  168 bits  DES-CBC3-SHA
    Accepted  TLSv1  128 bits  DHE-RSA-AES128-SHA
    Accepted  TLSv1  128 bits  AES128-SHA
    Accepted  TLSv1  128 bits  RC4-SHA
    Accepted  TLSv1  128 bits  RC4-MD5
{CODE}

[1] http://docs.fedoraproject.org/en-US/Fedora_Security_Team//html-single/Defensive_Coding/index.html#chap-Defensive_Coding-Tasks-Cryptography
[2] http://docs.fedoraproject.org/en-US/Fedora_Security_Team//html-single/Defensive_Coding/index.html#sect-Defensive_Coding-TLS-Client-OpenJDK

  was:
At the moment I don't see any way to restrict allowed cipher suites for the https listener.
{CODE}
[standalone at localhost:9990 /] /core-service=management/security-realm=HttpsRealm:read-resource(recursive=true, include-defaults=true)
{
    "outcome" => "success",
    "result" => {
        "map-groups-to-roles" => true,
        "authentication" => undefined,
        "authorization" => undefined,
        "plug-in" => undefined,
        "server-identity" => {"ssl" => {
            "alias" => undefined,
            "key-password" => undefined,
            "keystore-password" => "changeit",
            "keystore-path" => "localhost.keystore",
            "keystore-relative-to" => "jboss.server.config.dir",
            "protocol" => "TLS"
        }}
    }
}
[standalone at localhost:9990 /] /subsystem=undertow/server=default-server:read-resource(recursive=true, include-defaults=true)
{
    "outcome" => "success",
    "result" => {
<...>
        "https-listener" => {"https" => {
            "allow-encoded-slash" => false,
            "always-set-keep-alive" => true,
            "buffer-pipelined-data" => true,
            "buffer-pool" => "default",
            "decode-url" => true,
            "enabled" => true,
            "max-cookies" => 200,
            "max-header-size" => 51200,
            "max-headers" => 200,
            "max-parameters" => 1000,
            "max-post-size" => 10485760L,
            "security-realm" => "ApplicationRealm",
            "socket-binding" => "https",
            "url-charset" => "UTF-8",
            "verify-client" => "NOT_REQUESTED",
            "worker" => "default"
        }}
    }
}
{CODE}

I have tested that default cipher suites used are pretty sane except RC4-SHA and RC4-MD5. Below is full list. But I think it is important for users to be able to support more or less ciphers depending on their environment and requirements. We also need good secure default settings IMO excluding the above mentioned two ciphers. See current recommendations here [1][2]
{CODE}
$ sslscan --no-failed localhost:8443
                   _
           ___ ___| |___  ___ __ _ _ __
          / __/ __| / __|/ __/ _` | '_ \
          \__ \__ \ \__ \ (_| (_| | | | |
          |___/___/_|___/\___\__,_|_| |_|

                  Version 1.8.2
             http://www.titania.co.uk
        Copyright Ian Ventura-Whiting 2009

Testing SSL server localhost on port 8443

  Supported Server Cipher(s):
    Accepted  SSLv3  256 bits  DHE-RSA-AES256-SHA
    Accepted  SSLv3  256 bits  AES256-SHA
    Accepted  SSLv3  168 bits  EDH-RSA-DES-CBC3-SHA
    Accepted  SSLv3  168 bits  DES-CBC3-SHA
    Accepted  SSLv3  128 bits  DHE-RSA-AES128-SHA
    Accepted  SSLv3  128 bits  AES128-SHA
    Accepted  SSLv3  128 bits  RC4-SHA
    Accepted  SSLv3  128 bits  RC4-MD5
    Accepted  TLSv1  256 bits  DHE-RSA-AES256-SHA
    Accepted  TLSv1  256 bits  AES256-SHA
    Accepted  TLSv1  168 bits  EDH-RSA-DES-CBC3-SHA
    Accepted  TLSv1  168 bits  DES-CBC3-SHA
    Accepted  TLSv1  128 bits  DHE-RSA-AES128-SHA
    Accepted  TLSv1  128 bits  AES128-SHA
    Accepted  TLSv1  128 bits  RC4-SHA
    Accepted  TLSv1  128 bits  RC4-MD5
{CODE}



I added the links listing recommended crypto primitives. The minimum IMO is to have the `cipher-suite` attribute exposed like in jboss-web ssl configuration. 

It would be real nice if the attribute supports also filter by string. For example if user puts something like "ALL:!MD5:!DHA" that could filter out all MD5 and DH anonymous based suites. Would be something like `man ciphers`. 

The latter will allow for easily setting secure defaults that work across different JVMs because exact cipher names differ slightly across different JVMs. Otherwise we may need a separate list for each JVM. But that's perhaps more relevant for the product side.
                
> HTTPS undertow listener select cipher-suites
> --------------------------------------------
>
>                 Key: WFLY-2653
>                 URL: https://issues.jboss.org/browse/WFLY-2653
>             Project: WildFly
>          Issue Type: Enhancement
>      Security Level: Public(Everyone can see) 
>          Components: Web (Undertow)
>    Affects Versions: 8.0.0.Beta1
>         Environment: fedora 18
>            Reporter: Aleksandar Kostadinov
>            Assignee: Tomaz Cerar
>              Labels: https, security, security-hardening, ssl, undertow, wildfly
>
> At the moment I don't see any way to restrict allowed cipher suites for the https listener.
> {CODE}
> [standalone at localhost:9990 /] /core-service=management/security-realm=HttpsRealm:read-resource(recursive=true, include-defaults=true)
> {
>     "outcome" => "success",
>     "result" => {
>         "map-groups-to-roles" => true,
>         "authentication" => undefined,
>         "authorization" => undefined,
>         "plug-in" => undefined,
>         "server-identity" => {"ssl" => {
>             "alias" => undefined,
>             "key-password" => undefined,
>             "keystore-password" => "changeit",
>             "keystore-path" => "localhost.keystore",
>             "keystore-relative-to" => "jboss.server.config.dir",
>             "protocol" => "TLS"
>         }}
>     }
> }
> [standalone at localhost:9990 /] /subsystem=undertow/server=default-server:read-resource(recursive=true, include-defaults=true)
> {
>     "outcome" => "success",
>     "result" => {
> <...>
>         "https-listener" => {"https" => {
>             "allow-encoded-slash" => false,
>             "always-set-keep-alive" => true,
>             "buffer-pipelined-data" => true,
>             "buffer-pool" => "default",
>             "decode-url" => true,
>             "enabled" => true,
>             "max-cookies" => 200,
>             "max-header-size" => 51200,
>             "max-headers" => 200,
>             "max-parameters" => 1000,
>             "max-post-size" => 10485760L,
>             "security-realm" => "ApplicationRealm",
>             "socket-binding" => "https",
>             "url-charset" => "UTF-8",
>             "verify-client" => "NOT_REQUESTED",
>             "worker" => "default"
>         }}
>     }
> }
> {CODE}
> I have tested that default cipher suites used are pretty sane except RC4-SHA and RC4-MD5. Below is full list. But I think it is important for users to be able to support more or less ciphers depending on their environment and requirements. We also need good secure default settings IMO excluding the above mentioned two ciphers. See current recommendations here [1][2]
> {CODE}
> $ sslscan --no-failed localhost:8443
>                    _
>            ___ ___| |___  ___ __ _ _ __
>           / __/ __| / __|/ __/ _` | '_ \
>           \__ \__ \ \__ \ (_| (_| | | | |
>           |___/___/_|___/\___\__,_|_| |_|
>                   Version 1.8.2
>              http://www.titania.co.uk
>         Copyright Ian Ventura-Whiting 2009
> Testing SSL server localhost on port 8443
>   Supported Server Cipher(s):
>     Accepted  SSLv3  256 bits  DHE-RSA-AES256-SHA
>     Accepted  SSLv3  256 bits  AES256-SHA
>     Accepted  SSLv3  168 bits  EDH-RSA-DES-CBC3-SHA
>     Accepted  SSLv3  168 bits  DES-CBC3-SHA
>     Accepted  SSLv3  128 bits  DHE-RSA-AES128-SHA
>     Accepted  SSLv3  128 bits  AES128-SHA
>     Accepted  SSLv3  128 bits  RC4-SHA
>     Accepted  SSLv3  128 bits  RC4-MD5
>     Accepted  TLSv1  256 bits  DHE-RSA-AES256-SHA
>     Accepted  TLSv1  256 bits  AES256-SHA
>     Accepted  TLSv1  168 bits  EDH-RSA-DES-CBC3-SHA
>     Accepted  TLSv1  168 bits  DES-CBC3-SHA
>     Accepted  TLSv1  128 bits  DHE-RSA-AES128-SHA
>     Accepted  TLSv1  128 bits  AES128-SHA
>     Accepted  TLSv1  128 bits  RC4-SHA
>     Accepted  TLSv1  128 bits  RC4-MD5
> {CODE}
> [1] http://docs.fedoraproject.org/en-US/Fedora_Security_Team//html-single/Defensive_Coding/index.html#chap-Defensive_Coding-Tasks-Cryptography
> [2] http://docs.fedoraproject.org/en-US/Fedora_Security_Team//html-single/Defensive_Coding/index.html#sect-Defensive_Coding-TLS-Client-OpenJDK

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the jboss-jira mailing list