Nginx's unique architecture makes it easy to handle large number of concurrent connections at one time with low CPU and memory consumption, compared with IIS and Apache.
Nginx has also taken the place as the front-end proxy server for traditional web servers like IIS and Apache.
Now, back to the topic we are facing today.
Assuming you have received .p12 file from your trust provider, you might need to know more about what a .p12 file is.
According to wiki, PKCS #12 defines an archive file format for storing many cryptography objects as a single file. It is commonly used to bundle a private key with its X.509 certificate or to bundle all the members of a chain of trust.
This means a .p12/.pfx file contains everything we need to provide SSL services, like server certificates, CA root certificate, intermediate chain certificates and server private key.
Unlike .pem file, .p12/.pfx file is in binary form so we cannot copy and paste those blocks for use in a human readable format. It needs a conversion tool like openssl to extract necessary files for the web server like Nginx.
Nginx is also sensitive to the order of server certificate and other CA root and chain certificates in a bundle .pem file so it may not start up properly with a .pem file which has been tempered with no proper knowledge.
Here're the two commands to generate necessary certificate bundle and server key files from a .p12/.pfx bundle file which is supposed to be directly imported into IIS web erver.
# # #Generate certificates bundle file > openssl pkcs12 -nokeys -in server-cert-key-bundle.p12 -out server-ca-cert-bundle.pem # # #Generate server key file > openssl pkcs12 -nocerts -nodes -in server-cert-key-bundle.p12 -out server.key # #
whereas you might be asked to input the password which was included in .p12 file during the creation.
In Niginx.conf, we can include these two files for SSL connection:
# # server { listen 443 default ssl; server_name localhost ...; ssl on; ssl_certificate /some_where/ssl_cert/server-ca-cert-bundle.pem; ssl_certificate_key /some_where/ssl_cert/server.key; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; #... #
After that, Nginx should start up properly with HTTPS protocol ready for the web site.
I just read through the entire article of yours and it was quite good. This is a great article thanks for sharing this informative information.
ReplyDeleteInternet Blog
Great article. Thanks.
ReplyDeleteGood article. Good information on certificates for NGINX.
ReplyDeleteThanks,
Really inspirational to hear someone pursuing their dreams and becoming successful instead of following the traditional path. I have read your article about This topic. I think it's good and impressed to know your service. Thanks for share this Information.
ReplyDeleteDedicated server Miami
Thanks!
ReplyDelete