| @@ -0,0 +1,24 @@ | |||||
| For more information: https://wiki.asterisk.org/wiki/display/AST/SIP+TLS+Transport | |||||
| The recommended cipher list for tlscipher: | |||||
| ``` | |||||
| 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 | |||||
| ``` | |||||
| There are issues, like voip.ms does not support PFS, so if you're connecting to voip.ms, you need to add: `AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA` to the cipher list. | |||||
| Getting verification of the remote server is a little tricky. For example, FreeBSD 11's ca_root_nss package puts a single file in /usr/local/share/certs/ca-root-nss.crt. This is not the format the asterisk needs it to be in. To make things work, first split the file out into individual PEM files, using: | |||||
| ``` | |||||
| awk 'BEGIN {c=0} /^Certificate:/{c++; p=1} p==1 { fname="cert." c ".pem"; print > fname} /END CERT/ {p = 0 }' < ca-root-nss.crt | |||||
| ``` | |||||
| Then you can hash them, using OpenSSL's `c_rehash .`. | |||||
| After doing the above, you can point tlscapath to this directory, and remote server should verify fine. | |||||
| Error messages: | |||||
| Certificate did not verify: unable to get local issuer certificate | |||||
| This means that you didn't setup thetlscapath properly. Follow the above instructions. | |||||
| Problem setting up ssl connection: error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher | |||||
| This likely means that the list of ciphers in tlscipher does not match the server. To figure out what cipher might be missing, you can use [testssl.sh](https://testssl.sh) with the -e option, e.g. `testssl.sh -e hostname:5061`, to figure out what ciphers are supported. | |||||