I've generated a self-signed certificate for my build server and i'd like to globally trust the certificate on my machine, as i created the key myself and i'm sick of seeing warnings.
I'm on Ubuntu 12.04. How can I take the certificate and globally trust it so that browsers (Google Chrome), CLI utilities (wget, curl), and programming languages (Python, Java, etc.) trust the connection to https://mysite.com without asking questions?
The simple answer to this question is that pretty much every application handles this differently
Also openssl and gnutls the most widely used certificate processing libraries used to handle signed certificates behave differently in their treatment of certificates which complicates the issue Also operating systems utilize different mechanisms to utilize "root ca" used by most websites.
Let's give debian as an example Install the
apt-get install ca-certificates
You then copy the public half of your untrusted ca certificate that you use to sign your csr into the ca certificate directory as root
cp cacert.pem /usr/share/ca-certificates
And get it to rebuild the directory with your certificate included, run as root.
and select the
ask option, scroll to your certificate, mark it for inclusion and select ok.
Most browsers use their own CA database, and so tools like
certutil have to be used to modify their contents (on Debian that is provided by the
libnss3-tools package). For example, with chrome you run something along the lines of.
certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n "My Homemade CA" -i /path/to/CA/cert.file
Firefox will allow you to browse to the certificate on disk, recognize it a certificate file and then allow you to import it to root ca list.
Most other commands such as
curl take command line switches you can use to point at your CA,
curl --cacert /path/to/CA/cert.file https://...
or drop the SSL validation altogether
curl --insecure https://...
The rest will need individual investigation if the
ca-certificates like trick does not sort it for that particular application.