Browse Source

add rought text on getting TLS working w/ asterisk

main
John-Mark Gurney 5 years ago
parent
commit
85141adaa6
1 changed files with 24 additions and 0 deletions
  1. +24
    -0
      content/asterisk.md

+ 24
- 0
content/asterisk.md View File

@@ -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.

Loading…
Cancel
Save