<?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>Software and Tools Archives - E19 Creative</title>
	<atom:link href="https://e19creative.com/category/software-and-tools/feed/" rel="self" type="application/rss+xml" />
	<link>https://e19creative.com/category/software-and-tools/</link>
	<description></description>
	<lastBuildDate>Thu, 23 Oct 2025 01:56:19 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>
	<item>
		<title>Automating SQL Server TLS Certificate Updates with Let’s Encrypt and Certify The Web</title>
		<link>https://e19creative.com/automating-sql-server-tls-certificate-updates-with-lets-encrypt-and-certify-the-web/</link>
		
		<dc:creator><![CDATA[Jakob Ward]]></dc:creator>
		<pubDate>Mon, 16 Jun 2025 14:52:05 +0000</pubDate>
				<category><![CDATA[Software and Tools]]></category>
		<category><![CDATA[automated workflows]]></category>
		<category><![CDATA[certificate management]]></category>
		<category><![CDATA[Certify The Web]]></category>
		<category><![CDATA[DevOps practices]]></category>
		<category><![CDATA[Let’s Encrypt]]></category>
		<category><![CDATA[PowerShell automation]]></category>
		<category><![CDATA[server encryption]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server security]]></category>
		<category><![CDATA[SSL renewal]]></category>
		<category><![CDATA[TLS certificates]]></category>
		<category><![CDATA[Windows Server administration]]></category>
		<guid isPermaLink="false">https://e19creative.com/?p=379</guid>

					<description><![CDATA[<p>Ensuring that your SQL Server traffic is encrypted with&#160;valid, trusted TLS certificates&#160;is an essential security best practice — especially for any server that communicates across networks or the Internet. Recently, I set up a fully&#160;automated certificate renewal workflow&#160;for our SQL Server instance using: ✅&#160;Let’s Encrypt✅&#160;Certify The Web✅&#160;SQL Server 2019 (Express)✅&#160;PowerShell automation The Challenge While&#160;Let’s Encrypt&#160;makes&#8230;</p>
<p>The post <a href="https://e19creative.com/automating-sql-server-tls-certificate-updates-with-lets-encrypt-and-certify-the-web/">Automating SQL Server TLS Certificate Updates with Let’s Encrypt and Certify The Web</a> appeared first on <a href="https://e19creative.com">E19 Creative</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Ensuring that your SQL Server traffic is encrypted with&nbsp;<strong>valid, trusted TLS certificates</strong>&nbsp;is an essential security best practice — especially for any server that communicates across networks or the Internet.</p>



<p class="wp-block-paragraph">Recently, I set up a fully&nbsp;<strong>automated certificate renewal workflow</strong>&nbsp;for our SQL Server instance using:</p>



<p class="wp-block-paragraph">✅&nbsp;<strong>Let’s Encrypt</strong><br>✅&nbsp;<strong>Certify The Web</strong><br>✅&nbsp;<strong>SQL Server 2019 (Express)</strong><br>✅&nbsp;<strong>PowerShell automation</strong></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">The Challenge</h3>



<p class="wp-block-paragraph">While&nbsp;<strong>Let’s Encrypt</strong>&nbsp;makes certificate issuance and renewal easy, SQL Server presents two common hurdles:</p>



<p class="wp-block-paragraph">1️⃣&nbsp;<strong>SQL Server TLS binding</strong>: The certificate thumbprint must be updated in the SQL Server Registry after every renewal.</p>



<p class="wp-block-paragraph">2️⃣&nbsp;<strong>Private key permissions</strong>: SQL Server runs under a specific service account (<code>NT SERVICE\MSSQL$YourInstanceName</code>) — this account needs&nbsp;<strong>explicit Read permissions</strong>&nbsp;on the certificate’s private key to start the service successfully.</p>



<p class="wp-block-paragraph">If either of these is not handled after a renewal:</p>



<p class="wp-block-paragraph">🚫 SQL Server will fail to start<br>🚫 Encrypted connections will fail<br>🚫 Production systems may be impacted</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">The Solution</h3>



<p class="wp-block-paragraph">👉 I wrote a simple&nbsp;<strong>PowerShell automation script</strong>&nbsp;that runs as a&nbsp;<strong>Post-Renewal Task</strong>&nbsp;in Certify The Web.</p>



<p class="wp-block-paragraph">The script:</p>



<p class="wp-block-paragraph">✅ Locates the latest Let’s Encrypt certificate<br>✅ Updates the Registry with the new certificate thumbprint<br>✅ Grants the correct private key permissions to the SQL Server service account<br>✅ Restarts the SQL Server service<br>✅ Logs the change for audit/compliance</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Key Lessons Learned</h3>



<p class="wp-block-paragraph">✅&nbsp;<strong>Don’t fight the MMC GUI</strong>&nbsp;— use PowerShell to manage private key ACLs.<br>✅ Always distinguish between:</p>



<ul class="wp-block-list">
<li><code>NT SERVICE\MSSQL$InstanceName</code> → used for ACLs</li>



<li><code>MSSQL$InstanceName</code> → used for restarting the service</li>
</ul>



<p class="wp-block-paragraph">✅ Certify The Web’s&nbsp;<strong>Post-Renewal Tasks</strong>&nbsp;feature is powerful — and when used with a well-tested PowerShell script, it gives you a reliable automation flow.</p>



<p class="wp-block-paragraph">✅ Testing the flow with&nbsp;<strong>Run All Tasks Now</strong>&nbsp;in Certify The Web ensures smooth production operation.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Results</h3>



<p class="wp-block-paragraph">I now have a&nbsp;<strong>fully automated, repeatable, hands-off process</strong>:</p>



<ul class="wp-block-list">
<li>Every 90 days, when Let’s Encrypt renews the SQL Server TLS cert:
<ul class="wp-block-list">
<li>The cert binding is updated</li>



<li>Permissions are correct</li>



<li>SQL Server is restarted</li>



<li>Logs are written for auditing</li>
</ul>
</li>



<li>No manual work, no downtime, no surprises.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Final Thoughts</h3>



<p class="wp-block-paragraph">Automating your&nbsp;<strong>SQL Server TLS lifecycle</strong>&nbsp;with Let’s Encrypt is absolutely achievable — even on&nbsp;<strong>Express edition</strong>, even when the GUI lacks certain options.</p>



<p class="wp-block-paragraph">By combining:</p>



<p class="wp-block-paragraph">✅&nbsp;<strong>Certify The Web</strong><br>✅ A solid&nbsp;<strong>PowerShell script</strong><br>✅ Careful configuration of permissions and Post-Renewal Tasks</p>



<p class="wp-block-paragraph">&#8230; you can build a highly professional, production-grade solution.</p>
<p>The post <a href="https://e19creative.com/automating-sql-server-tls-certificate-updates-with-lets-encrypt-and-certify-the-web/">Automating SQL Server TLS Certificate Updates with Let’s Encrypt and Certify The Web</a> appeared first on <a href="https://e19creative.com">E19 Creative</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Centris: Multilateral Marketing and Contact Management Database</title>
		<link>https://e19creative.com/centris-multilateral-marketing-and-contact-management-database/</link>
		
		<dc:creator><![CDATA[Jakob Ward]]></dc:creator>
		<pubDate>Tue, 12 Nov 2024 12:48:25 +0000</pubDate>
				<category><![CDATA[Software and Tools]]></category>
		<guid isPermaLink="false">https://e19creative.com/?p=216</guid>

					<description><![CDATA[<p>Centris is a versatile database application designed to organize and manage contacts efficiently across multiple channels and regions. It serves as a centralized repository, allowing you to categorize and store essential attributes for each contact. These attributes can be seamlessly integrated with other applications for marketing purposes, enabling targeted and personalized outreach. Centris streamlines the&#8230;</p>
<p>The post <a href="https://e19creative.com/centris-multilateral-marketing-and-contact-management-database/">Centris: Multilateral Marketing and Contact Management Database</a> appeared first on <a href="https://e19creative.com">E19 Creative</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Centris is a versatile database application designed to organize and manage contacts efficiently across multiple channels and regions. It serves as a centralized repository, allowing you to categorize and store essential attributes for each contact. These attributes can be seamlessly integrated with other applications for marketing purposes, enabling targeted and personalized outreach. Centris streamlines the management of your contact data, ensuring that all information is easily accessible and organized for optimal use in your broader marketing strategies.</p>
<p>The post <a href="https://e19creative.com/centris-multilateral-marketing-and-contact-management-database/">Centris: Multilateral Marketing and Contact Management Database</a> appeared first on <a href="https://e19creative.com">E19 Creative</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
