[ENHANCEMENTS] Ability to Disable Weak Ciphers in ACME Registration Menu
Is your feature request related to a problem? Please describe. Would like the ability to disable Weak Cyphers via gui if possible.
Describe the solution you'd like Show the Ciphers Used in Registration or After Registration and allow us to disable the Weak ones and or remove them as some of the other reverse proxies have already done. (Caddy for Example)
Specifically: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013) ECDH secp521r1 (eq. 15360 bits RSA) FS WEAK 128 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) ECDH secp521r1 (eq. 15360 bits RSA) FS WEAK 256 TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (0xc012) ECDH secp521r1 (eq. 15360 bits RSA) FS WEAK 112
Describe alternatives you've considered Option A: hard removal by you (which is probably something worth considering as its already pretty good out of the box but this can get alot of people to A+ SSL Security on SSLLabs without thinking about it and button up a common attack vector
Option B: Some way to disable on registration in advanced menu:
Show list of the ciphers in gui:: https://caddyserver.com/docs/caddyfile/directives/tls https://caddyserver.com/docs/caddyfile/directives/tls#ciphers
Option C: Using Existing Acme Registration submenu:
Cyphers that will be used is shown or we can type list of accepted cyphers like an advanced header in a text box
https://caddyserver.com/docs/caddyfile/directives/tls#ciphers
Additional context Add any other context or screenshots about the feature request here.
@yeungalan I have no idea about whats that as I am not an expert in networking, I will let you handle that :D
Is there any progress in this enhancement? Would like to know how to disable it manually.
@xXValiXx No, this is already out of my expertise. This enhancement request will be left here until someone contribute some code to make it work.
Is there any progress in this enhancement? Would like to know how to disable it manually.
In src/mod/dynamicproxy/dynamicproxy.go line 84 you can replace
config := &tls.Config{
GetCertificate: router.Option.TlsManager.GetCert,
MinVersion: uint16(minVersion),
}
with
// Load Custom Ciphers (taken from Mozilla generator intermediate profile)
var tlsCipherSuites = []uint16{
tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, // Only works when setting CurvePreferences
tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
tls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
tls.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,
tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,
}
config := &tls.Config{
GetCertificate: router.Option.TlsManager.GetCert,
CipherSuites: tlsCipherSuites,
MinVersion: uint16(minVersion),
// Optional for Windows 7 and 8.1 support
CurvePreferences: []tls.CurveID{
tls.X25519,
tls.CurveP384,
tls.CurveID(tls.Ed25519),
},
}
then build and deploy. Tested this with NextCloud, Jellyfin and docker services and so far no problems. Qualy SSL Lab and OpenVAS show the Cipher Suite has been updated, but I have no experience with Go and do not know much of zoraxys programming.
@TomOdellSheetMusic Thanks for the snippet!
I am not an expert in cryto stuffs, but if my assumption is correct, I just need to make a checkbox in the UI and allow user to optionally add that into the tls.Config then this issue will be resolved right?
What might be the potential issues if I just copy the tlsCipherSuites you provided instead of, let say allowing user to pick which one they want?
Hey, thank you for the reply!
The issue of the weak ciphers being offered to clients would be resolved. The cipher suites I provided will remove compatibility with Windows 7, 8, 8.1 and Safari 6,7,8 and perhaps a few more obscure devices. It is possible to support older Windows devices without adding a weak cipher, but it involves setting curve preferences in the tls.Config to support the ECDSA ciphers I stupidly included (updated my previous comment). These ciphers also will not provide a 100% on key exchange or Cipher Strength on ssllabs, it's just whats recommended by Mozilla. If users could pick their own cipher suites that would be awesome, but they could make Zoraxy unavailable by removing a http/2 required cipher suite, which needs at least one of TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 or TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256.
Hope this was helpful and thank you for the awesome work!