Para las pruebas se utilizo una maquina Ubuntu 12.04 LTS.
si no se tiene instalado nginx se puede hacer facilmente desde consola con el comando:
sudo apt-get install nginx
El algoritmo de generacion es:
- Generar una llave
- Crear CSR (Certificate Signing Request)
- Firmar certificado usando la llave privada y el CSR
Crear un directorio para ssl
cd /etc/nginx/
mkdir ssl
cd ssl
Creacion de la llave
openssl genrsa -out server.key 2048
Creacion de CSR
$ openssl req -new -key server.key -out server.csr
Finalmente firmarlo
$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Aqui se firmo el certificado con una duracion de 1 año
Ahora queda configurar el nginx copia el fichero de default para crear uno nuevo
cp /etc/nginx/sites-available/default /etc/nginx/sites-available/ejemplo
luego se edita este archivo con los parametros que hemos puesto principalmente como se llama el dominio y las rutas de ssl
nano /etc/nginx/sites-available/ejemplo
Se puede dejar para que quede habilidado el puerto 80 y el 443
# HTTPS server
#
server {
listen 443;
server_name example.com;
root /usr/share/nginx/www;
index index.html index.htm;
ssl on;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
ssl_prefer_server_ciphers on;
location / {
listen 443;
server_name example.com;
root /usr/share/nginx/www;
index index.html index.htm;
ssl on;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
ssl_prefer_server_ciphers on;
location / {
try_files $uri $uri/ /index.html;
}
}
Configuracion HTTPS de ejemplo, luego se reinicia nginx
service restart nginx