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