Explain PostgreSql ssl_cipher values: ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH
This is a parameter that is processed by the OpenSSL library. The format and options are documented in the ciphers(5) man page.

For the ones you mention:


  ALL
  
  all cipher suites except the eNULL ciphers which must be explicitly enabled; as of OpenSSL, the ALL cipher suites are reasonably ordered by default
  
  ADH
  
  anonymous DH cipher suites, note that this does not include anonymous Elliptic Curve DH (ECDH) cipher suites.
  
  LOW
  
  ``low'' encryption cipher suites, currently those using 64 or 56 bit encryption algorithms but excluding export cipher suites.
  
  EXP, EXPORT
  
  export encryption algorithms. Including 40 and 56 bits algorithms.
  
  MD5
  
  cipher suites using MD5.


You can combine them and specifically include or exclude classes of ciphers by using prefixes:


  Each cipher string can be optionally preceded by the characters !, -
  or +.
  
  If ! is used then the ciphers are permanently deleted from the list.
  The ciphers deleted can never reappear in the list even if they are
  explicitly stated.
  
  If - is used then the ciphers are deleted from the list, but some or
  all of the ciphers can be added again by later options.
  
  If + is used then the ciphers are moved to the end of the list. This
  option doesn't add any new ciphers it just moves matching existing
  ones.


@STRENGTH is a bit special:


  The cipher string @STRENGTH can be used at any point to sort the current cipher list in order of encryption algorithm key length.