Correct location of openssl.cnf file

openssl

Solution

/usr/local/ssl/openssl.cnf

This is a local installation. You downloaded and built OpenSSL taking the default `prefix`, of you configured with `./config --prefix=/usr/local/ssl` or `./config --openssldir=/usr/local/ssl`.

You will use this if you use the OpenSSL in `/usr/local/ssl/bin`. That is, `/usr/local/ssl/openssl.cnf` will be used when you issue:

/usr/local/ssl/bin/openssl s_client -connect localhost:443 -tls1 -servername localhost

/usr/lib/ssl/openssl.cnf

This is where Ubuntu places `openssl.cnf` for the OpenSSL they provide.

You will use this if you use the OpenSSL in `/usr/bin`. That is, `/usr/lib/ssl/openssl.cnf` will be used when you issue:

openssl s_client -connect localhost:443 -tls1 -servername localhost

/etc/ssl/openssl.cnf

I don't know when this is used. The stuff in `/etc/ssl` is usually certificates and private keys, and it sometimes contains a copy of `openssl.cnf`. But I've never seen it used for anything.

Which is the main/correct one that I should use to make changes?

From the sounds of it, you should probably add the engine to `/usr/lib/ssl/openssl.cnf`. That ensures most "off the shelf" gear will use the new engine.

After you do that, add it to `/usr/local/ssl/openssl.cnf` also because copy/paste is easy.

Here's how to see which `openssl.cnf` directory is associated with a OpenSSL installation. The library and programs look for `openssl.cnf` in `OPENSSLDIR`. `OPENSSLDIR` is a configure option, and its set with `--openssldir`.

I'm on a MacBook with 3 different OpenSSL's (Apple's, MacPort's and the one I build):

# Apple    
$ /usr/bin/openssl version -a | grep OPENSSLDIR
OPENSSLDIR: "/System/Library/OpenSSL"

# MacPorts
$ /opt/local/bin/openssl version -a | grep OPENSSLDIR
OPENSSLDIR: "/opt/local/etc/openssl"

# My build of OpenSSL
$ openssl version -a | grep OPENSSLDIR
OPENSSLDIR: "/usr/local/ssl/darwin"

I have an Ubuntu system and I have installed openssl.

Just bike shedding, but be careful of Ubuntu's version of OpenSSL. It disables TLSv1.1 and TLSv1.2, so you will only have clients capable of older cipher suites; and you will not be able to use newer ciphers like AES/CTR (to replace RC4) and elliptic curve gear (like `ECDHE_ECDSA_*` and `ECDHE_RSA_*`). See Ubuntu 12.04 LTS: OpenSSL downlevel version is 1.0.0, and does not support TLS 1.2 in Launchpad.

EDIT: Ubuntu enabled TLS 1.1 and TLS 1.2 recently. See Comment 17 on the bug report.

Problem

I have an Ubuntu system and I have installed OpenSSL. Now I want to make changes to the config file. I searched my folders and found the following locations for the config files. Which is the main/correct one that I should use to make changes? I need to add an engine here. Any help would be appreciated. Here are the locations: ``` /usr/local/ssl/openssl.cnf /usr/lib/ssl/openssl.cnf /etc/ssl/openssl.cnf ```

Original source