Prosody IM/how to/SSL

from HTYP, the free directory anyone can edit if they can prove to me that they're not a spambot
Jump to navigation Jump to search

Prosody actually has a command for importing root-owned certificates, en masse. Works specifically with Let's Encrypt. To be documented. Woozle (talk) 15:10, 4 February 2021 (UTC)

Old

In order to get Prosody to use an existing SSL certificate whose files belong to another user ("hypertwins"), I had to do the following:

  • edit (or create) the necessary config file under /etc/prosody/conf.avail and link to it from /etc/prosody/conf.d
    • Do NOT activate the SSL section in /etc/prosody/prosody.cfg.lua
  • make sure there is a group for sharing SSL certs (on my system, there was already a "ssl-cert" group)
  • add user "prosody" to this group
  • for certificate files and /home/hypertwins:
    • make sure the each one is are group-readable (chmod 750)
    • chown to hypertwins:ssl-cert (so the group is ssl-cert)
    • You may also need to add www-data to the ssl-cert group so that Apache will still be able to access the virtual domain whose user is "hypertwins".
    • There were permissions issues; I had to use chown -h on the links -- this may also have been unnecessary, even if you're using links
  • restart prosody
    • note that "reload" is apparently insufficient
  • If IM client gives SSL errors
    • check /var/log/prosody.err
    • check file access directly:
      • change user prosody's shell from /bin/false to /bin/bash
      • su prosody (as root)
      • attempt to access the files. If you can see the contents, then prosody can also.

2017-09-30

SSL stopped working again. Apparently the SSL files were renewed three days earlier (9/26) but not given the modified permissions, and it took 2-3 days for Prosody to notice. All I had to do was fix the ownership ("chown :ssl-cert ssl.*"), "service prosody restart", and then tell Pidgin to reconnect.

I should probably set up a script to do this automatically after the cert renewal.

2018-12-06

Script written awhile ago, now finally working right (this time): /prosody-cert-fix.php