Spis treści

Generujemy certyfikat

openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key -out server.csr
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

Na potrzeby darmowego zaufanego certyfikatu z https://www.startssl.com/

openssl req -nodes -newkey rsa:2048 -keyout ssl.key -out ssl.csr

Ściągamy certyfikac startssl i zapisujemy jako plik crt Niektóre a właściwie większość przeglądarek wygeneruje błąd o niezaufanym certyfikacie z powodu braku łańcucha dostawców. Aby tego uniknąć musimy w certyfikat łączyć certyfikat dostawcy.

Rozszyfrowujemy nasz klucz. (o ile był zaszyfrowany)

openssl rsa -in ssl.key -out de.ssl.key

Ściągamy certyfikaty ca StartSSL:

wget http://www.startssl.com/certs/ca.pem
wget http://www.startssl.com/certs/sub.class1.server.ca.pem

Tworzymy połączony certyfikat :

cat ssl.crt sub.class1.server.ca.pem ca.pem > /etc/nginx/conf/ssl-unified.crt

W konfiguracji vhosta w nginx

    server_name domena lub ip;
    listen ( opcjonalnie ip:)443;
    ssl on;
    ssl_certificate /usr/local/nginx/conf/server.crt;
    ssl_certificate_key /usr/local/nginx/conf/server.key;
}

Przy użyciu połączonego certyfikat (łańcuch wystawców ) na potrzeby StartSSL

    server_name domena lub ip;
    listen ( opcjonalnie ip:)443;
    ssl on;
    ssl_certificate     /etc/nginx/conf/ssl-unified.crt;
    ssl_certificate_key /etc/nginx/conf/ssl.key;
}

do konfiguracji php5-fpm dodajemy ponadto :

fastcgi_param HTTPS on;

Całość ma postać:

  # php5-fpm

       location ~ \.php$ {
                try_files $uri =404;
                include /etc/nginx/fastcgi_params;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param HTTPS on;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_intercept_errors on;
       }

Unikniemy w ten sposób błędu :

The plain HTTP request was sent to HTTPS port