<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/rss-style.xsl" type="text/xsl"?>
<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>Should you use Let&#8217;s Encrypt for internal hostnames? &#8211; Terence Eden’s Blog</title>
	<atom:link href="https://shkspr.mobi/blog/2022/01/should-you-use-lets-encrypt-for-internal-hostnames/feed/" rel="self" type="application/rss+xml" />
	<link>https://shkspr.mobi/blog</link>
	<description>Regular nonsense about tech and its effects 🙃</description>
	<lastBuildDate>Sun, 18 Feb 2024 08:40:35 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://shkspr.mobi/blog/wp-content/uploads/2023/07/cropped-avatar-32x32.jpeg</url>
	<title>Should you use Let&#8217;s Encrypt for internal hostnames? &#8211; Terence Eden’s Blog</title>
	<link>https://shkspr.mobi/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title><![CDATA[Should you use Let's Encrypt for internal hostnames?]]></title>
		<link>https://shkspr.mobi/blog/2022/01/should-you-use-lets-encrypt-for-internal-hostnames/</link>
					<comments>https://shkspr.mobi/blog/2022/01/should-you-use-lets-encrypt-for-internal-hostnames/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 05 Jan 2022 12:34:08 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[ssl]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=41580</guid>

					<description><![CDATA[Julien Savoie has written a brilliant post explaining how you can enable https on your intranet.  This is useful for several reasons. It means your employees aren&#039;t constantly fighting browser warnings when trying to submit stuff internally. All your http traffic is encrypted. You don&#039;t need to install a self-generated root certificate on devices. Lovely!  But there&#039;s a downside. Every TLS…]]></description>
										<content:encoded><![CDATA[<p>Julien Savoie has written a brilliant post explaining <a href="https://jsavoie.github.io/2021/06/01/letsencrypt.html">how you can enable https on your <em>intra</em>net</a>.</p>

<p>This is useful for several reasons. It means your employees aren't constantly fighting browser warnings when trying to submit stuff internally. All your http traffic is encrypted. You don't need to install a self-generated root certificate on devices. Lovely!</p>

<p>But there's a downside. Every TLS certificate created by Let's Encrypt is recorded in a <a href="https://letsencrypt.org/docs/ct-logs/">Certificate Transparency log</a>.  These CT logs are primarily to detect <a href="https://certificate.transparency.dev/">maliciously or mistakenly issued certificates</a>. For example, you can look through them and see that someone unauthorised has created a cert for your domain - or its sub-domains.</p>

<p>But there is a downside. The CT logs are <em>public</em> and can be searched. Here's <a href="https://crt.sh/?q=twitter.com">all the certificates issued for Twitter's sub-domains</a>.</p>

<p>There are a few ways that this can be dangerous for use with <em>internal</em> services.</p>

<p>Firstly, it aides reconnaissance for attackers. Having a "map" of your internal infrastructure is useful. Especially if you have "obviously" named servers like <code>exchange.example.com</code> or <code>customerdata.example.com</code>.  Also handy for social engineering - who else but someone internal would know that <code>gandalf.example.com</code> was a valid server?</p>

<p>Secondly, it might expose some vulnerabilities - depending on how you name things. Let's hope you don't have <code>log4j.example.com</code>!</p>

<p>Thirdly, there's the potential for espionage. Do you want your competitors knowing that you've got <code>olympics-campaign.staging.example.com</code>?</p>

<p>I'm sure you can think of a few other ways this could be used for mischief and mayhem.</p>

<p>As I wrote a few years ago, "<a href="https://shkspr.mobi/blog/2017/11/theres-no-https-for-the-internet-of-things/">There's no HTTPS for the Internet of Things</a>". Internal networks which only have IP addresses cannot use TLS certificates. OK, so you decide to have an internal DNS - now the whole world knows you have <code>doorbell-model-xyz.myhome.example.com</code>!</p>

<p>The only real answer to this is to use <a href="https://community.letsencrypt.org/t/acme-v2-production-environment-wildcards/55578">Wildcard Certificates</a>.  You can get a TLS certificate for <code>*.internal.example.com</code></p>

<p>This requires setting up a <a href="https://letsencrypt.org/docs/challenge-types/#dns-01-challenge">DNS-01 Challenge</a> - which can be more difficult to configure and has some non-obvious risks. And, sadly, <a href="https://blog.sean-wright.com/wildcard-certs-not-quite-the-star/">Wildcard certificates come with their own difficulties</a>.</p>

<h2 id="recap"><a href="https://shkspr.mobi/blog/2022/01/should-you-use-lets-encrypt-for-internal-hostnames/#recap">Recap</a></h2>

<p>I don't think there's a good solution to this.</p>

<ul>
<li>Self-signed certificates require something to be installed on all clients. Not always possible with BYOD.</li>
<li>Named LE certificates expose details of your infrastructure which you may wish to keep private.</li>
<li>Wildcard certificates require a heightened level of co-ordination and management.</li>
</ul>

<p>These problems <a href="https://news.ycombinator.com/item?id=19353294">have all been discussed before</a>. But I can't help but wishing that there was something obvious I'm missing.</p>

<p>How would you solve this knotty problem?</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=41580&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2022/01/should-you-use-lets-encrypt-for-internal-hostnames/feed/</wfw:commentRss>
			<slash:comments>29</slash:comments>
		
		
			</item>
	</channel>
</rss>
