- OpenSSL is an open-source implementation of the SSL and TLS protocols.
'req' PKCS#10 certificate request and certificate generating utility. '-x509' outputs a self signed certificate instead of a certificate request '-newkey alg:file' creates a new certificate request and a new private key '-keyout filename' filename to write the newly created private key to '-out filename' filename to write to '-days n' number of days to certify the certificate for, defaults to 30 for x509 # create private key 'key.pem' and generate a certificate signing request 'req.pem' $ openssl req -newkey rsa:1024 -keyout key.pem -out req.pem or $ openssl genrsa -out key.pem 1024 ; openssl req -new -key key.pem -out req.pem # generate a self signed root certificate 'cert.pem' and private key 'key.pem' $ openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
from openssl-req@man
'-nodes' if a private key is created it will not be encrypted # generate a self signed root certificate '$CERT.csr' for apache, and private key '$CERT.key' $ export CERT=/etc/httpd/ssl/server $ openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out $CERT.key $ chmod 600 $CERT.key $ openssl req -new -key $CERT.key -out $CERT.csr $ openssl x509 -req -in $CERT.csr -signkey $CERT.key -out $CERT.crt -days 365 # edit SSLCertificateFile $CERT.crt and SSLCertificateKeyFile $CERT.key # same $ export CERT=/etc/httpd/ssl/server $ openssl req -x509 -nodes -newkey rsa:2048 -keyout $CERT.key -out $CERT.crt -days 365 # same but using 'make testcert' $ cd /usr/share/ssl/certs ; make testcert # same but using 'crypto-utils' $ sudo yum install crypto-utils | sudo apt-get install crypto-utils $ genkey your_FQDN # edit SSLCertificateFile and SSLCertificateKeyFile
from How to Create Self-Signed SSL Certificates and Keys for Apache
$ nginx -V
TLS SNI support enabled
$ mkdir -p /etc/nginx/ssl/ ; cd $_
# create private key; asks for passphrase
$ openssl genrsa -des3 -out self-ssl.key 2048
# create a certificate signing request - CSR
$ openssl req -new -key self-ssl.key -out self-ssl.csr
# optional remove passphrase
$ cp -v self-ssl.{key,original} ; openssl rsa -in self-ssl.original -out self-ssl.key ; rm -v self-ssl.original
# create certificate
$ openssl x509 -req -days 365 -in self-ssl.csr -signkey self-ssl.key -out self-ssl.crt
# configure nginx
$ cat etc/nginx/virtual/.conf
server {
listen 443;
ssl on;
ssl_certificate /path/to/self-ssl.crt;
ssl_certificate_key /path/to/self-ssl.key;
server_name theos.in;
}
# verify certificates
$ openssl verify pem-file
$ openssl verify self-ssl.crt
from HowTo: Create a Self-Signed SSL Certificate on Nginx For CentOS / RHEL