The process outlined above is correct. To provide further information on how we do it:
1) Generate CSR (we use the IIS cert generation tool because we often use a wildcard ssl with a bunch of IIS services too, so having a PFX is needed)
2) Send to CA, yada yada yada
3) Complete Cert Request in IIS
4) Export as PFX
5) Convert to correct format using OpenSSL
Code:
openssl pkcs12 -in [yourfile.pfx] -nocerts -out [keyfile-encrypted.key]
openssl rsa -in [keyfile-encrypted.key] -out [keyfile-decrypted.key]
openssl pkcs12 -in [yourfile.pfx] -clcerts -nokeys -out [certificate.pem]
Next 2 steps can be combined into previous step, but I want to make this clear
6) Rename [certificate.pem] to demo.example.com-crt.pem
7) Rename [keyfile-decrypted.key] to demo.example.com-key.pem
(demo.example.com is your 3CX FQDN)
8) Review demo.example.com-crt.pem and make sure the intermediate cert is present. Add it if needed.
9) Replace the files here: /var/lib/3cxpbx/Bin/nginx/conf/Instance1
10) Restart the service '3CX PhoneSystem Nginx Server'
Shouldn't take 30 minutes start to finish.