<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Multisite Archives - WP Encryption</title>
	<atom:link href="https://wpencryption.com/tag/multisite/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>WordPress SSL Plugin</description>
	<lastBuildDate>Thu, 21 Jan 2021 08:48:47 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://wpencryption.com/wp-content/uploads/2020/04/cropped-icon-512-32x32.png</url>
	<title>Multisite Archives - WP Encryption</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Easy Install SSL for WordPress Multisite Mapped Domains</title>
		<link>https://wpencryption.com/ssl-for-wordpress-multisite-mapped-domains/</link>
		
		<dc:creator><![CDATA[wp_encryption]]></dc:creator>
		<pubDate>Tue, 25 Aug 2020 11:47:38 +0000</pubDate>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[DOCS]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[HTTPS]]></category>
		<category><![CDATA[Mapped Domains]]></category>
		<category><![CDATA[Multisite]]></category>
		<category><![CDATA[SSL]]></category>
		<guid isPermaLink="false">https://wpencryption.com/?p=461</guid>

					<description><![CDATA[<p>Install free lets encrypt SSL for mapped domains of wordpress multisite network within minutes. step by step tutorial on apache SSL configuration</p>
<p>The post <a href="https://wpencryption.com/ssl-for-wordpress-multisite-mapped-domains/">Easy Install SSL for WordPress Multisite Mapped Domains</a> appeared first on <a href="https://wpencryption.com">WP Encryption</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>This tutorial assumes that you already have a multisite setup with mapped domains (<strong>domain1.com</strong>, <strong>domain2.com</strong>, etc.,) using <strong><a href="https://wordpress.org/plugins/wordpress-mu-domain-mapping/" target="_blank" rel="noreferrer noopener nofollow">WordPress MU domain mapping plugin</a></strong>. To make it much more clear, WordPress Multisite allows <strong>sub-domain</strong> or <strong>sub-directory</strong> based network sites setup, however mapping of domains refers to pointing of different domain names to each sub site of multisite network using domain mapping plugin.</p>



<p>In this tutorial, We will be installing free SSL certificate provided by <strong><a href="https://letsencrypt.org" target="_blank" rel="noreferrer noopener nofollow">Let&#8217;s Encrypt®</a></strong> (open certificate authority) , you are free to use SSL certificate from any certificate authority unless you have SSL certificate for each of mapped domain name.</p>



<p><strong>Technical Requirements:</strong></p>



<ul class="wp-block-list"><li>Linux server</li><li>Apache</li><li>SSH / Command line access with root privileges</li><li>Your server should have SNI support (Server Name Indication)</li></ul>



<p></p>



<h2 class="wp-block-heading">1. Generate SSL certificate for each mapped domain of multisite network</h2>



<p>First of all, you will need SSL certificates generated for each of domain you have mapped. We have a very handy WordPress plugin to make this SSL generate job very easier &#8220;<strong><a rel="noreferrer noopener" href="https://gowebsmarty.com/product/wp-encryption-pro/" target="_blank">WP Encryption</a></strong>&#8220;. Buying an SSL certificate for each domain of your network would cost several <strong>$$$</strong> each year, if you have large ecommerce sites or membership portals in your multisite network &#8211; We would highly recommend purchasing premium standard SSL certificates from one of premium SSL providers out there.</p>



<p>On the other hand, you could make use of free SSL certificates provided by Let&#8217;s Encrypt<strong>®</strong> using WP Encryption plugin as a mechanism to generate and auto renew SSL certificates easily in one click without any need of technical knowledge. Support for mapped domains is offered in &#8220;<a rel="noreferrer noopener" href="https://gowebsmarty.com/product/wp-encryption-pro/" target="_blank">WP Encryption Pro</a>&#8221; version (You might need 3 sites / 50 sites license based on number of sites you have). It&#8217;s an one time upgrade and lifetime SSL solution.</p>



<p>Upload the <strong>WP Encryption Pro</strong> plugin via your <strong>network -&gt; plugins</strong>. Activate the plugin in each individual site (instead of network activation) and enter your license key to activate the premium features. WP Encryption Pro will auto detect your main site &amp; sub-sites and generate SSL certificate accordingly. You will need to open <strong>WP Encryption</strong> page in your <strong>WP-Admin</strong> of each site, enter your email address and click on <strong>Generate SSL Certificate</strong> button.</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://gowebsmarty.com/wp-content/uploads/2020/04/wp-encryption-page.png" alt="" class="wp-image-379"/><figcaption>WP Encryption</figcaption></figure>



<p>You will notice a message in response log of WP Encryption saying <em><strong>Certificate for &#8216;yourdomain.com&#8217; saved</strong></em>. Required SSL certificate files <strong>certificate.crt</strong> and <strong>private.pem</strong> will be generated &amp; stored in <strong>keys/</strong> folder inside your WordPress directory (in case of main site). For sub sites, it will auto create a separate folder (<strong>keys/domain2.com/</strong>) inside <strong>keys/</strong> folder and store the <strong>certificate.crt</strong> and <strong>private.pem</strong> inside it. </p>



<h2 class="wp-block-heading">2. Install SSL for main site of your multisite network</h2>



<p>First, We will go through the process of modifying the apache config file of your server to enable SSL for main site. Note that this config modifications are just one time process &amp; you don&#8217;t need to do it again in future. The required certificate.crt and private.pem files for this main site will be stored directly inside keys/ folder as stated above.</p>



<p>Connect via SSH / Command line and navigate to <strong>/etc/apache2/sites-enabled/ </strong>using below SSH command</p>



<pre class="wp-block-code"><code>cd /etc/apache2/sites-enabled</code></pre>



<p>Run <strong>ls -la</strong> to see list of files inside this directory. You should notice a file similar to <strong>default-ssl.conf</strong>, <strong>ssl.conf</strong>, etc., We will need to modify this config file to set correct SSL paths. Please run the below command to start the editor:</p>



<pre class="wp-block-code"><code>sudo nano default-ssl.conf</code></pre>



<p>Enter root password if prompted. You should notice a <strong>&lt;VirtualHost&gt;&lt;/VirtualHost&gt;</strong> config block similar to below one</p>



<pre class="wp-block-code"><code>&lt;VirtualHost _default_:443>
                ServerAdmin webmaster@localhost
                ServerName example.com
                DocumentRoot /var/www/html

                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined

                #   SSL Engine Switch:
                #   Enable/Disable SSL for this virtual host.
                SSLEngine on

                #   SSLCertificateFile directive is needed.
               SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
               SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
              
                &lt;FilesMatch "\.(cgi|shtml|phtml|php)$">
                                SSLOptions +StdEnvVars
                &lt;/FilesMatch>
                &lt;Directory /usr/lib/cgi-bin>
                                SSLOptions +StdEnvVars
                &lt;/Directory>
&lt;/VirtualHost></code></pre>



<p>You might find the above VirtualHost block much more bigger &amp; it doesn&#8217;t need to be same as above. Out of the above block, you only need to focus on 4 lines i.e., <strong>ServerName</strong>, <strong>DocumentRoot</strong>, <strong>SSLCertificateFile</strong>, <strong>SSLCertificateKeyFile</strong>. Modify these 4 lines based on below instructions:</p>



<ul class="wp-block-list"><li><strong>ServerName</strong> <strong>yourdomain.com</strong></li><li><strong>DocumentRoot</strong> should point to your WordPress directory, this will be <strong>/var/www/html </strong>most of the time on an apache server.</li><li><strong>SSLCertificateFile</strong> should point to <strong>certificate.crt</strong> file inside keys dir Ex:<strong> /var/www/html/keys/certificate.crt</strong></li><li><strong>SSLCertificateKeyFile</strong> should point to <strong>private.pem</strong> file inside keys dir Ex: <strong>/var/www/html/keys/private.pem</strong></li></ul>



<p>Once after you correct these 4 lines, press <strong>CTRL + O</strong> to save the changes, <strong>CTRL + X</strong> to exit file editor and restart apache server once using below command</p>



<pre class="wp-block-code"><code>sudo service apache2 restart</code></pre>



<p>Now open your main site with <strong>https://</strong> protocol and you should see Let&#8217;s Encrypt valid certificate while clicking on padlock in browser address bar which means you have perfectly configured SSL for your main site.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" src="https://gowebsmarty.com/wp-content/uploads/2020/04/letsencrypt-certificate-1.png" alt="" class="wp-image-383"/></figure></div>



<h2 class="wp-block-heading">3. Install SSL for sub sites / mapped domains</h2>



<p>This process will be very similar to above changes except minor differences. <strong>CD</strong> into<strong> /etc/apache2/sites-enabled </strong>and <strong>sudo nano default-ssl.conf</strong> again.</p>



<p>Now you will need to replicate the <strong>&lt;VirtualHost&gt;&lt;/VirtualHost&gt;</strong> block one below another for each mapped domain and correct the 4 lines as stated above. The only difference is the SSL certificate &amp; key paths will be inside <strong>sub-directory inside keys/</strong> folder. An example replication for mapped domain2.com would look like below:</p>



<pre class="wp-block-code"><code>&lt;VirtualHost _default_:443>
                ServerAdmin webmaster@localhost
       ServerName maindomain.com
       DocumentRoot /var/www/html

                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined

                #   SSL Engine Switch:
                #   Enable/Disable SSL for this virtual host.
                SSLEngine on

                #   SSLCertificateFile directive is needed.
       SSLCertificateFile      /var/www/html/keys/certificate.crt
       SSLCertificateKeyFile /var/www/html/keys/private.pem
              
                &lt;FilesMatch "\.(cgi|shtml|phtml|php)$">
                                SSLOptions +StdEnvVars
                &lt;/FilesMatch>
                &lt;Directory /usr/lib/cgi-bin>
                                SSLOptions +StdEnvVars
                &lt;/Directory>
&lt;/VirtualHost>

&lt;VirtualHost _default_:443>
                ServerAdmin webmaster@localhost
      ServerName domain2.com
      DocumentRoot /var/www/html

                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined

                #   SSL Engine Switch:
                #   Enable/Disable SSL for this virtual host.
                SSLEngine on

                #   SSLCertificateFile directive is needed.
      SSLCertificateFile    /var/www/html/keys/domain2.com/certificate.crt
      SSLCertificateKeyFile /var/www/html/keys/domain2.com/private.pem
              
                &lt;FilesMatch "\.(cgi|shtml|phtml|php)$">
                                SSLOptions +StdEnvVars
                &lt;/FilesMatch>
                &lt;Directory /usr/lib/cgi-bin>
                                SSLOptions +StdEnvVars
                &lt;/Directory>
&lt;/VirtualHost></code></pre>



<p>Finally, You are all set with the config changes and just need to restart server once for config changes to take effect.</p>



<pre class="wp-block-code"><code>sudo service apache2 restart</code></pre>



<p>Now make sure a valid certificate exists for all your mapped domains by accessing the <strong>https://</strong> version of them. Once after everything looks perfect, You can change <strong>site</strong> &amp; <strong>admin url</strong> of all mapped domains to <strong>https:// </strong>protocol and enable &#8220;<strong>Force HTTPS</strong>&#8221; feature of WP Encryption if you notice any <strong>mixed content</strong> warnings in browser console.</p>



<p>We tried to be as transparent as possible so please excuse for a lengthy explanation.</p>
<p>The post <a href="https://wpencryption.com/ssl-for-wordpress-multisite-mapped-domains/">Easy Install SSL for WordPress Multisite Mapped Domains</a> appeared first on <a href="https://wpencryption.com">WP Encryption</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
