Every year the security boundaries are being pushed to protect more resources. For example
- Encrypt DNS lookup requests. Without this, bad guys can see what sites you are looking at. Or, depending on your view point, good guys can see what sites a bad guy is looking at.
- Encryption of cookies in http traffic. In https, cookies are encrypted, but some sites just use https for the logon, and then use http for normal traffic.
- Padding of strings, so the length of data cannot be seen. If you send up an encrypted password and the length is 4 characters, you can guess that the password is short.
The CCDT in MQ defines parameters for a client connection, it contains, for example,
- The connection host address and port
- The cipher specification
- The certificate label to use
- The certificate peer name (what is in the certificate sent from the server)
You may want to protect this information, so bad guys cannot intercept and change it.
The CCDT can be stored in the local file system, or it can be accessed from the network using http, or ftp.
This file will need to be updated for example, when there are changes to the configuration of the back-end servers, or the cipher spec is being upgraded.
Local file system.
You need to be careful how you update the local file system. Most enterprises have technology which securely distribute updates to client machines, for example with operating fixes, application upgrades, and configuration information.
Emailing a file, or simple FTP may not be secure enough for some organisations. Secure FTP (SFTP) or FTPS may be good enough.
Getting the CCDT from the network
Using HTTP and having the CCDT on a central site has many advantages. You update it, and the next time the client starts, it will phone home, and get the updated CCDT. You may want to use a secure site so only production machines can access the production CCDT files, and only test machines can access the test CCDT files.
The MQ documentation has
And says : If you want to use authenticated connections you must, as with JMS, provide the user name and password encoded in the URL.
To me these are not very secure, as they could be intercepted, and you could be sending userid and password on an potentially unencrypted connection.
In my Java program I managed to use https://127.0.0.1:9444/myccdt.json, to get the CCDT from my little Python https server. The url can be http, https, ftp, or file, so the only two “secure” ones are https: and file:, but the MQ documentation does not mention https.
I could not get a C program to work when I used export MQCCDTURL=”https://127.0.0.1:9443/myccdt.json”. It hung during the TLS handshake.
To make your CCDT secure, you are stuck with getting the file securely to the machine and using export MQCCDTURL=”file:///…”, which means it will updated whenever your machine gets the automatic updates – perhaps once a week.
Remember you can never be too paranoid when it comes to security. If someone steals your wallet or purse you know. If someone copies your identity file you may never know.