blob: b6383222227e829d184775d60944b45cea658fa6 [file] [log] [blame]
Configuring mosquitto for SSL/TLS and client-auth.
mosquitto deals in terms of PEM format certificates and key files.
The files can optionally be passphrase encrypted. If they are
encrypted, the server prompts for passphrases when starting up.
mosquitto, written in C/C++, is ignorant of Java specific notions
such as JKS encoded keystores.
mosquitto SSL client-auth follows a model where clients are issued
certificates signed by a CA known to the mosquitto server and,
unlike a typical java SSL/client-auth server configuration, the
client certificates themselves are not "registered" with the mosquitto server.
i.e., the server makes authentication decisions purely based on
receiving a client certificate signed by its know CA.
It was easiest to follow mosquitto's:
https://mosquitto.org/man/mosquitto-tls-7.html
for generating the needed info for mosquitto and then create JKS stores
from that info for use by java clients. The create-all.sh script does
just that should you need to regenerate the files.
mosquitto-SSL.conf.template file is a template mosquitto configuration
file supporting non-SSL clients on port 1883, SSL on 8883,
and SSL-client-auth on 8884. To generate a conf file that works
with these files in the edgent repository:
cd <this-keystores-directory>
cat mosquitto-SSL.conf.template |
sed -e "s,TEST-KEYSTORES-DIR,`pwd`," >/usr/local/etc/mosquitto/mosquitto-SSL.conf
start your mosquitto server as:
/usr/local/sbin/mosquitto -c /usr/local/etc/mosquitto/mosquitto-SSL.conf
Other helpful info: https://docs.oracle.com/cd/E35976_01/server.740/es_admin/src/tadm_ssl_convert_pem_to_jks.html