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
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
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