{"id":556,"date":"2016-01-25T12:01:07","date_gmt":"2016-01-25T10:01:07","guid":{"rendered":"http:\/\/www.systemcodegeeks.com\/?p=556"},"modified":"2018-11-08T13:19:43","modified_gmt":"2018-11-08T11:19:43","slug":"nginx-ssl-configuration-guide","status":"publish","type":"post","link":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/","title":{"rendered":"Nginx SSL configuration guide (Ubuntu 12.04 LTS)"},"content":{"rendered":"<p><em>In this post, we feature a comprehensive Nginx SSL configuration guide. This article is part of our Academy Course titled <a href=\"http:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/introduction-to-nginx-complete-tutorial\/\">Introduction to Nginx<\/a>.<\/em><\/p>\n<p>This course will introduce you to the magic of nginx. You will learn to install and configure nginx for a variety of software platforms and how to integrate it with Apache. Additionally, you will get involved with more advanced concepts like Load Balancing, SSL configuration and Websockets proxying. Check it out <a href=\"http:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/introduction-to-nginx-complete-tutorial\/\">here<\/a>!<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n[ulp id=&#8217;O5wwlXQPIiCQp2ED&#8217;]<\/p>\n<div class=\"toc\">\n<h4>Table Of Contents<\/h4>\n<dl>\n<dt><a href=\"#introduction\">1. Introduction<\/a><\/dt>\n<dt><a href=\"#add_support_ssl\">2. Adding support for SSL to Nginx<\/a><\/dt>\n<dt><a href=\"#create_sign_use_certificate\">3. Creating, signing, and using a certificate<\/a><\/dt>\n<dt><a href=\"#download\">4. Download the files<\/a><\/dt>\n<\/dl>\n<\/div>\n<h2><a name=\"introduction\"><\/a>1. Introduction<\/h2>\n<p>The SSL (Secure Socket Layer) protocol was created by Netscape to ensure secure transactions between web servers and browsers (using secure pages often identified with https:\/\/). The protocol uses a third party, a Certificate Authority (CA), to identify one end or both ends of the transactions. <a href=\"#1\">[1]<\/a><\/p>\n<h2><a name=\"add_support_ssl\"><\/a>2. Adding support for SSL to Nginx<\/h2>\n<p>Since The Linux Documentation Project website offers a comprehensive explanation of how this procedure is performed, we will limit this tutorial to show how to set up SSL with Nginx on Ubuntu 12.04 LTS. We will need to compile Nginx with SSL support (see Fig. 1).<\/p>\n<figure style=\"width: 1129px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_001.png\"><img decoding=\"async\" src=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_001.png\" alt=\"Nginx SSL configuration guide: id=&quot;attachment_2969&quot; align=&quot;aligncenter&quot; width=&quot;1094&quot;\" width=\"1129\" height=\"54\" \/><\/a><figcaption class=\"wp-caption-text\">Figure 1: Compiling Nginx with SSL support<\/figcaption><\/figure>\n<p>However, the ssl module requires the OpenSSL library (see Fig. 2) to be installed on the system beforehand. We will install the <code>libssl-dev<\/code> package, which includes the said library (see Fig. 3).<\/p>\n<figure style=\"width: 1034px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_002.png\"><img decoding=\"async\" src=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_002.png\" alt=\"Figure 2:Nginx SSL configuration guide:  The ssl module needs the OpenSSL library to be installed\" width=\"1034\" height=\"132\" \/><\/a><figcaption class=\"wp-caption-text\">Figure 2: The ssl module needs the OpenSSL library to be installed<\/figcaption><\/figure>\n<figure style=\"width: 1045px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_003.png\"><img decoding=\"async\" src=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_003.png\" alt=\"Figure 3: Nginx SSL configuration guide: Installing the libssl-dev package, which provides the OpenSSL library\" width=\"1045\" height=\"484\" \/><\/a><figcaption class=\"wp-caption-text\">Figure 3: Installing the libssl-dev package, which provides the OpenSSL library<\/figcaption><\/figure>\n<h2><a name=\"create_sign_use_certificate\"><\/a>3. Creating, signing, and using a certificate<\/h2>\n<ol>\n<li>We will create a directory to store our public key and ssl certificate (see Fig. 4).\n<p><figure style=\"width: 743px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_004.png\"><img decoding=\"async\" src=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_004.png\" alt=\"Figure 4: Nginx SSL configuration guide: Creating a directory to store the public key and ssl certificate\" width=\"743\" height=\"98\" \/><\/a><figcaption class=\"wp-caption-text\">Figure 4: Creating a directory to store the public key and ssl certificate<\/figcaption><\/figure><\/li>\n<li>Now let\u2019s generate the server private key (see Fig. 5)\n<p><figure style=\"width: 1022px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_005.png\"><img decoding=\"async\" src=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_005.png\" alt=\"Figure 5: Nginx SSL configuration guide\" width=\"1022\" height=\"240\" \/><\/a><figcaption class=\"wp-caption-text\">Figure 5<\/figcaption><\/figure><\/li>\n<li>Create a certificate signing request (see Fig. 6)\n<p><figure style=\"width: 1129px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_006.png\"><img decoding=\"async\" src=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_006.png\" alt=\"Figure 6: Nginx SSL configuration guide\" width=\"1129\" height=\"481\" \/><\/a><figcaption class=\"wp-caption-text\">Figure 6<\/figcaption><\/figure><\/li>\n<li>Sign your certificate (see Fig. 7). Please note that this certificate will only last one day (you can modify this setting by changing the argument to the \u2013 <code>days<\/code> option).\n<p><figure style=\"width: 1129px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_007.png\"><img decoding=\"async\" src=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_007.png\" alt=\"Figure 7:Nginx SSL configuration guide:  Signing your ssl certificate\" width=\"1129\" height=\"155\" \/><\/a><figcaption class=\"wp-caption-text\">Figure 7: Signing your ssl certificate<\/figcaption><\/figure><\/li>\n<li>Set up the certificate. Edit the nginx.conf file (see Fig. 8). Note that even though there is a ssl directive <code>(ssl on | off)<\/code> available, it is recommended to use the ssl parameter of the listen directive instead of this directive.<\/li>\n<\/ol>\n<figure style=\"width: 857px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_008.png\"><img decoding=\"async\" src=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_008.png\" alt=\"Figure 8: Nginx SSL configuration guide\" width=\"857\" height=\"270\" \/><\/a><figcaption class=\"wp-caption-text\">Figure 8<\/figcaption><\/figure>\n<p>It should be kept in mind that due to the HTTPS protocol limitations virtual servers should listen on different IP addresses (see Fig. 9). Refer to the nginx.conf file to perform the following modifications if needed:<\/p>\n<p><figure style=\"width: 818px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_009.png\"><img decoding=\"async\" src=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_009.png\" alt=\"Figure 9: Nginx SSL configuration guide\" width=\"818\" height=\"340\" \/><\/a><figcaption class=\"wp-caption-text\">Figure 9 <a href=\"#2\">[2]<\/a><\/figcaption><\/figure>Otherwise the first server\u2019s certificate will be issued for the second site.<\/p>\n<p>In order to allow to share a single IP address between multiple HTTPS servers is to use a certificate with a wildcard name, for example, <code>*.example.org<\/code>. A wildcard certificate secures all subdomains of the specified domain, but only on one level. This certificate matches <code>www.example.org<\/code>, but does not match example.org and <code>www.sub.example.org<\/code>. These two methods can also be combined. A certificate may contain exact and wildcard names in the <code>SubjectAltName<\/code> field, for example, <code>example.org<\/code> and <code>*.example.org<\/code>.<\/p>\n<p>If we want to allow Subject Alternative Names (SANs) for our certificates we need to enable the following options in the file openssl.cnf file (located in \/etc\/ssl\/openssl\/):<\/p>\n<p>1. Include the X509 Version 3 (RFC 2459) extension to allow an SSL certificate to specify multiple names that the certificate should match. We need the <code>[ req ]<\/code> section to read as follows (see Fig 10). This tells openssl to include the <code>v3_req<\/code> section while generating certificate requests:<\/p>\n<figure style=\"width: 1032px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_010.png\"><img decoding=\"async\" src=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_010.png\" alt=\"Figure 10: Nginx SSL configuration guide\" width=\"1032\" height=\"74\" \/><\/a><figcaption class=\"wp-caption-text\">Figure 10<\/figcaption><\/figure>\n<p>2. Edit the <code>[ v3_req ]<\/code> section as follows (see Fig. 11):<\/p>\n<figure style=\"width: 868px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_011.png\"><img decoding=\"async\" src=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_011.png\" alt=\"Figure 11: Nginx SSL configuration guide\" width=\"868\" height=\"262\" \/><\/a><figcaption class=\"wp-caption-text\">Figure 11<\/figcaption><\/figure>\n<p>Please note that whatever we put in the file openssl.cnf will appear on all certificate requests generated from this point on: if at a later date you want to generate a CSR with different SANs, you&#8217;ll need to edit this file by hand and change the DNS.x entries.<\/p>\n<p>It is better to place a certificate file with several names and its private key file at the http level of configuration to inherit their single memory copy in all servers (see Fig. 12).<\/p>\n<figure style=\"width: 836px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_012.png\"><img decoding=\"async\" src=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_012.png\" alt=\"Figure 12: Nginx SSL configuration guide: Using a certificate in two server blocks (nginxtest.com y www.nginxtest.com)\" width=\"836\" height=\"535\" \/><\/a><figcaption class=\"wp-caption-text\">Figure 12: Using a certificate in two server blocks (nginxtest.com y www.nginxtest.com)<\/figcaption><\/figure>\n<p>3. Now we can either browse to <a href=\"https:\/\/nginxtest.com\" target=\"_blank\" rel=\"noopener\">https:\/\/nginxtest.com<\/a> or <a href=\"https:\/\/www.nginxtest.com\" target=\"_blank\" rel=\"noopener\">https:\/\/www.nginxtest.com<\/a> and we\u2019ll see the warning of a self-signed security certificate (see Fig. 13):<\/p>\n<figure style=\"width: 1078px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_013.png\"><img decoding=\"async\" src=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_013.png\" alt=\"Figure 13: Nginx SSL configuration guide: A self-signed certificate works but presents this warning screen\" width=\"1078\" height=\"742\" \/><\/a><figcaption class=\"wp-caption-text\">Figure 13: A self-signed certificate works but presents this warning screen<\/figcaption><\/figure>\n<p>4. Click on \u201cAdd Exception\u201d (see Fig. 14) and then on \u201cConfirm Security Exception\u201d:<\/p>\n<figure style=\"width: 432px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_014.png\"><img decoding=\"async\" src=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_014.png\" alt=\"Figure 14: Nginx SSL configuration guide: Confirming a Security Exception\" width=\"432\" height=\"127\" \/><\/a><figcaption class=\"wp-caption-text\">Figure 14: Confirming a Security Exception<\/figcaption><\/figure>\n<p>If you get a <strong>Wrong Site message<\/strong> (see Fig. 15), it means that your certificate belongs to a different site, or that the necessary SANs have not been specified.<\/p>\n<figure style=\"width: 660px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_015.png\"><img decoding=\"async\" src=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_015.png\" alt=\"Figure 15: Nginx SSL configuration guide\" width=\"660\" height=\"212\" \/><\/a><figcaption class=\"wp-caption-text\">Figure 15<\/figcaption><\/figure>\n<p>On the other hand, when the SANs have been defined correctly, they can be viewed using the browser\u2019s built-in certificate viewer (see Fig. 16).<\/p>\n<figure style=\"width: 356px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_016.png\"><img decoding=\"async\" src=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_016.png\" alt=\"Figure 16: Nginx SSL configuration guide: Subject Alternative Names\" width=\"356\" height=\"240\" \/><\/a><figcaption class=\"wp-caption-text\">Figure 16: Subject Alternative Names<\/figcaption><\/figure>\n<p>or using (see Fig. 17)<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nopenssl req \u2013text \u2013noout \u2013in server.csr from the command line \r\n<\/pre>\n<figure style=\"width: 1037px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_017.png\"><img decoding=\"async\" src=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_017.png\" alt=\"Figure 17: Nginx SSL configuration guide\" width=\"1037\" height=\"565\" \/><\/a><figcaption class=\"wp-caption-text\">Figure 17<\/figcaption><\/figure>\n<p>As we mentioned earlier, a certificate will only be valid within the time frame that was specified when it was first created (1 day, in our case, refer to Figs. 18a, 18b, and 18c)<\/p>\n<figure style=\"width: 257px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_018a.png\"><img decoding=\"async\" src=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_018a.png\" alt=\"Figure 18a: Nginx SSL configuration guide\" width=\"257\" height=\"152\" \/><\/a><figcaption class=\"wp-caption-text\">Figure 18a<\/figcaption><\/figure>\n<figure style=\"width: 390px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_018b.png\"><img decoding=\"async\" src=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_018b.png\" alt=\"Figure 18b: Nginx SSL configuration guide\" width=\"390\" height=\"447\" \/><\/a><figcaption class=\"wp-caption-text\">Figure 18b<\/figcaption><\/figure>\n<figure style=\"width: 394px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_018c.png\"><img decoding=\"async\" src=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_018c.png\" alt=\"Figure 18c: Nginx SSL configuration guide\" width=\"394\" height=\"447\" \/><\/a><figcaption class=\"wp-caption-text\">Figure 18c<\/figcaption><\/figure>\n<p>Once that period of time is over, the certificate will expire (see Fig. 19).<\/p>\n<figure style=\"width: 813px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_019.png\"><img decoding=\"async\" src=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/P5_019.png\" alt=\"Figure 19: Nginx SSL configuration guide:  The SSL certificate expired\" width=\"813\" height=\"211\" \/><\/a><figcaption class=\"wp-caption-text\">Figure 19: The SSL certificate expired<\/figcaption><\/figure>\n<p>Unless you have a certificate from a trusted third party, your users will get the same warning as above in Fig. 13. Aside from the fact that it looks unprofessional, it&#8217;s also a real risk due to the fact that in a large organization, it is not likely that all users will know the difference between a legitimate key generated by your IT department, and keys generated by a malicious third party. In this case, you need to buy a certificate from a trusted third party, such as GeoTrust (used by Google), Digicert, Comodo, Thawte, or VeriSign (used by Facebook, for example). For other cases, especially when you want to use https for your own use (i.e. securing your admin panel), a self-signed certificate will do just fine.<\/p>\n<h2><a name=\"download\"><\/a>4. Download the\u00a0Nginx SSL configuration guide files<\/h2>\n<p>Here you can download the Nginx SSL configuration guide files used in this tutorial: <a href=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/ConfigFile.zip\">ConfigFile.zip<\/a><\/p>\n<p>Also you can download a usefull pdf file: <a href=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/openssl.pdf\">Openssl.pdf<\/a><\/p>\n<table class=\"ref-table\">\n<tbody>\n<tr>\n<td id=\"1\">[1]: <a href=\"http:\/\/www.tldp.org\/HOWTO\/SSL-Certificates-HOWTO\/x64.html\" target=\"_blank\" rel=\"noopener\">The Linux Documentation Project<\/a><\/td>\n<\/tr>\n<tr>\n<td id=\"2\">[2]: Image source: <a href=\"http:\/\/nginx.org\/en\/docs\/http\/configuring_https_servers.html#name_based_https_servers\" target=\"_blank\" rel=\"noopener\">Nginx Wiki<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>In this post, we feature a comprehensive Nginx SSL configuration guide. This article is part of our Academy Course titled Introduction to Nginx. This course will introduce you to the magic of nginx. You will learn to install and configure nginx for a variety of software platforms and how to integrate it with Apache. Additionally, &hellip;<\/p>\n","protected":false},"author":15,"featured_media":195,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25],"tags":[],"class_list":["post-556","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-nginx"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Nginx SSL configuration guide (Ubuntu 12.04 LTS) - System Code Geeks - 2026<\/title>\n<meta name=\"description\" content=\"Interested to learn more about Nginx SSL confuguration? Then check out our detailed Nginx SSL configuration guide where you will learn to install and configure nginx for a variety of software platforms and how to integrate it with Apache.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Nginx SSL configuration guide (Ubuntu 12.04 LTS) - System Code Geeks - 2026\" \/>\n<meta property=\"og:description\" content=\"Interested to learn more about Nginx SSL confuguration? Then check out our detailed Nginx SSL configuration guide where you will learn to install and configure nginx for a variety of software platforms and how to integrate it with Apache.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/\" \/>\n<meta property=\"og:site_name\" content=\"System Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/systemcodegeeks\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/gacanepa\" \/>\n<meta property=\"article:published_time\" content=\"2016-01-25T10:01:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-11-08T11:19:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/nginx-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Gabriel Canepa\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@gacanepa\" \/>\n<meta name=\"twitter:site\" content=\"@systemcodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Gabriel Canepa\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/\"},\"author\":{\"name\":\"Gabriel Canepa\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/#\/schema\/person\/967da353d0f1a1de21c9504942625a5f\"},\"headline\":\"Nginx SSL configuration guide (Ubuntu 12.04 LTS)\",\"datePublished\":\"2016-01-25T10:01:07+00:00\",\"dateModified\":\"2018-11-08T11:19:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/\"},\"wordCount\":1168,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/nginx-logo.jpg\",\"articleSection\":[\"NGINX\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/\",\"url\":\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/\",\"name\":\"Nginx SSL configuration guide (Ubuntu 12.04 LTS) - System Code Geeks - 2026\",\"isPartOf\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/nginx-logo.jpg\",\"datePublished\":\"2016-01-25T10:01:07+00:00\",\"dateModified\":\"2018-11-08T11:19:43+00:00\",\"description\":\"Interested to learn more about Nginx SSL confuguration? Then check out our detailed Nginx SSL configuration guide where you will learn to install and configure nginx for a variety of software platforms and how to integrate it with Apache.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/#primaryimage\",\"url\":\"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/nginx-logo.jpg\",\"contentUrl\":\"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/nginx-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.systemcodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Web Servers\",\"item\":\"https:\/\/www.systemcodegeeks.com\/category\/web-servers\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"NGINX\",\"item\":\"https:\/\/www.systemcodegeeks.com\/category\/web-servers\/nginx\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Nginx SSL configuration guide (Ubuntu 12.04 LTS)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/#website\",\"url\":\"https:\/\/www.systemcodegeeks.com\/\",\"name\":\"System Code Geeks\",\"description\":\"Operating System Developers Resource Center\",\"publisher\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.systemcodegeeks.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\/\/www.systemcodegeeks.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"contentUrl\":\"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/systemcodegeeks\",\"https:\/\/x.com\/systemcodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/#\/schema\/person\/967da353d0f1a1de21c9504942625a5f\",\"name\":\"Gabriel Canepa\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/27b3ea2a3fb1de4ed1c8694a1465c099a86586d8b833a0d852a26d76d750df9f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/27b3ea2a3fb1de4ed1c8694a1465c099a86586d8b833a0d852a26d76d750df9f?s=96&d=mm&r=g\",\"caption\":\"Gabriel Canepa\"},\"description\":\"Gabriel Canepa is a Linux Foundation Certified System Administrator (LFCS-1500-0576-0100) and web developer from Villa Mercedes, San Luis, Argentina. He works for a worldwide leading consumer product company and takes great pleasure in using FOSS tools to increase productivity in all areas of his daily work. When he's not typing commands or writing code or articles, he enjoys telling bedtime stories with his wife to his two little daughters and playing with them, the great pleasure of his life.\",\"sameAs\":[\"http:\/\/www.gabrielcanepa.com.ar\/\",\"https:\/\/www.facebook.com\/gacanepa\",\"https:\/\/ar.linkedin.com\/in\/gacanepa\",\"https:\/\/x.com\/gacanepa\"],\"url\":\"https:\/\/www.systemcodegeeks.com\/author\/gabriel-canepa\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Nginx SSL configuration guide (Ubuntu 12.04 LTS) - System Code Geeks - 2026","description":"Interested to learn more about Nginx SSL confuguration? Then check out our detailed Nginx SSL configuration guide where you will learn to install and configure nginx for a variety of software platforms and how to integrate it with Apache.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/","og_locale":"en_US","og_type":"article","og_title":"Nginx SSL configuration guide (Ubuntu 12.04 LTS) - System Code Geeks - 2026","og_description":"Interested to learn more about Nginx SSL confuguration? Then check out our detailed Nginx SSL configuration guide where you will learn to install and configure nginx for a variety of software platforms and how to integrate it with Apache.","og_url":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/","og_site_name":"System Code Geeks","article_publisher":"https:\/\/www.facebook.com\/systemcodegeeks","article_author":"https:\/\/www.facebook.com\/gacanepa","article_published_time":"2016-01-25T10:01:07+00:00","article_modified_time":"2018-11-08T11:19:43+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/nginx-logo.jpg","type":"image\/jpeg"}],"author":"Gabriel Canepa","twitter_card":"summary_large_image","twitter_creator":"@gacanepa","twitter_site":"@systemcodegeeks","twitter_misc":{"Written by":"Gabriel Canepa","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/#article","isPartOf":{"@id":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/"},"author":{"name":"Gabriel Canepa","@id":"https:\/\/www.systemcodegeeks.com\/#\/schema\/person\/967da353d0f1a1de21c9504942625a5f"},"headline":"Nginx SSL configuration guide (Ubuntu 12.04 LTS)","datePublished":"2016-01-25T10:01:07+00:00","dateModified":"2018-11-08T11:19:43+00:00","mainEntityOfPage":{"@id":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/"},"wordCount":1168,"commentCount":0,"publisher":{"@id":"https:\/\/www.systemcodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/nginx-logo.jpg","articleSection":["NGINX"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/","url":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/","name":"Nginx SSL configuration guide (Ubuntu 12.04 LTS) - System Code Geeks - 2026","isPartOf":{"@id":"https:\/\/www.systemcodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/#primaryimage"},"image":{"@id":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/nginx-logo.jpg","datePublished":"2016-01-25T10:01:07+00:00","dateModified":"2018-11-08T11:19:43+00:00","description":"Interested to learn more about Nginx SSL confuguration? Then check out our detailed Nginx SSL configuration guide where you will learn to install and configure nginx for a variety of software platforms and how to integrate it with Apache.","breadcrumb":{"@id":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/#primaryimage","url":"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/nginx-logo.jpg","contentUrl":"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/nginx-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/nginx-ssl-configuration-guide\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.systemcodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Web Servers","item":"https:\/\/www.systemcodegeeks.com\/category\/web-servers\/"},{"@type":"ListItem","position":3,"name":"NGINX","item":"https:\/\/www.systemcodegeeks.com\/category\/web-servers\/nginx\/"},{"@type":"ListItem","position":4,"name":"Nginx SSL configuration guide (Ubuntu 12.04 LTS)"}]},{"@type":"WebSite","@id":"https:\/\/www.systemcodegeeks.com\/#website","url":"https:\/\/www.systemcodegeeks.com\/","name":"System Code Geeks","description":"Operating System Developers Resource Center","publisher":{"@id":"https:\/\/www.systemcodegeeks.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.systemcodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.systemcodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.systemcodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.systemcodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.systemcodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/systemcodegeeks","https:\/\/x.com\/systemcodegeeks"]},{"@type":"Person","@id":"https:\/\/www.systemcodegeeks.com\/#\/schema\/person\/967da353d0f1a1de21c9504942625a5f","name":"Gabriel Canepa","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.systemcodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/27b3ea2a3fb1de4ed1c8694a1465c099a86586d8b833a0d852a26d76d750df9f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/27b3ea2a3fb1de4ed1c8694a1465c099a86586d8b833a0d852a26d76d750df9f?s=96&d=mm&r=g","caption":"Gabriel Canepa"},"description":"Gabriel Canepa is a Linux Foundation Certified System Administrator (LFCS-1500-0576-0100) and web developer from Villa Mercedes, San Luis, Argentina. He works for a worldwide leading consumer product company and takes great pleasure in using FOSS tools to increase productivity in all areas of his daily work. When he's not typing commands or writing code or articles, he enjoys telling bedtime stories with his wife to his two little daughters and playing with them, the great pleasure of his life.","sameAs":["http:\/\/www.gabrielcanepa.com.ar\/","https:\/\/www.facebook.com\/gacanepa","https:\/\/ar.linkedin.com\/in\/gacanepa","https:\/\/x.com\/gacanepa"],"url":"https:\/\/www.systemcodegeeks.com\/author\/gabriel-canepa\/"}]}},"_links":{"self":[{"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/posts\/556","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/comments?post=556"}],"version-history":[{"count":0,"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/posts\/556\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/media\/195"}],"wp:attachment":[{"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/media?parent=556"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/categories?post=556"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/tags?post=556"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}