<?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>Spring-Boot Archive - Das ist die Welt von Thomas</title>
	<atom:link href="https://www.schiffler.eu/thema/spring-boot/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.schiffler.eu/thema/spring-boot/</link>
	<description>meine Gedanken, mal strukturiert, mal nicht ...</description>
	<lastBuildDate>Fri, 26 Feb 2021 14:25:43 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.3</generator>

<image>
	<url>https://www.schiffler.eu/wp-content/uploads/2025/07/cropped-Profilfoto_2024-32x32.png</url>
	<title>Spring-Boot Archive - Das ist die Welt von Thomas</title>
	<link>https://www.schiffler.eu/thema/spring-boot/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Spring Boot mit SSL Zertifikat von LetsEncrypt unter Debian 10</title>
		<link>https://www.schiffler.eu/spring-boot-mit-ssl-zertifikat-von-letsencrypt-unter-debian-10/</link>
					<comments>https://www.schiffler.eu/spring-boot-mit-ssl-zertifikat-von-letsencrypt-unter-debian-10/#respond</comments>
		
		<dc:creator><![CDATA[Thomas Schiffler]]></dc:creator>
		<pubDate>Fri, 12 Mar 2021 12:40:00 +0000</pubDate>
				<category><![CDATA[IT-Know How]]></category>
		<category><![CDATA[certbot]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Homeserver]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[LetsEncrypt]]></category>
		<category><![CDATA[Spring-Boot]]></category>
		<guid isPermaLink="false">https://www.schiffler.eu/?p=1271</guid>

					<description><![CDATA[<p>Wie bereits erwähnt habe ich mir zuhause einen neuen Homeserver aufgebaut. Auf diesem laufen diverse Anwendungen, unter anderem diverse auf &#8230; <a href="https://www.schiffler.eu/spring-boot-mit-ssl-zertifikat-von-letsencrypt-unter-debian-10/" class="more-link">More <span class="screen-reader-text">Spring Boot mit SSL Zertifikat von LetsEncrypt unter Debian 10</span> <span class="meta-nav">&#8594;</span></a></p>
<p>Der Beitrag <a href="https://www.schiffler.eu/spring-boot-mit-ssl-zertifikat-von-letsencrypt-unter-debian-10/">Spring Boot mit SSL Zertifikat von LetsEncrypt unter Debian 10</a> erschien zuerst auf <a href="https://www.schiffler.eu">Das ist die Welt von Thomas</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Wie bereits erwähnt habe ich mir <a href="https://www.schifler.eu/neuer-homeserver-ryzen-9-3900x-mit-64gb" target="_blank" rel="noreferrer noopener sponsored nofollow">zuhause einen neuen Homeserver aufgebaut</a>. Auf diesem laufen diverse Anwendungen, unter anderem diverse auf Spring-Boot basierende Microservices. Die Anwendung ist über einen eigenen Port aus dem Internet erreichbar. Der Traffic wird hierbei über <a href="https://spring.io/projects/spring-cloud-gateway" target="_blank" rel="noreferrer noopener">Spring Cloud Gateway</a> gefiltert und (sofern die Berechtigung vorliegt) auf die einzelnen Systeme weiter geroutet. Eine Herausforderung beim Aufbau lag darin herauszufinden, wie ich Spring-Boot mit SSL Zertifikat von LetsEncrypt unter Debian 10 absichern kann. </p>



<h2 class="wp-block-heading">Spring Boot Anwendung hinter der FritzBox</h2>



<p class="wp-block-paragraph">Wie so viele setze auch ich zuhause eine FritzBox ein. Das ist an dieser Stelle allerdings eigentlich irrelevant, denn die benötigten Features liefert im Grunde jede Router. Damit der Homeserver hinter dem Router aus dem Internet erreichbar ist sind 2 Dinge notwendig:</p>



<div class="wp-block-advgb-list"><ul class="advgblist-4ca13a9f-e724-4362-aa3b-b477e54cb143 advgb-list advgb-list-admin-post"><li>ein dynamischer DNS damit der Server über eine gleichbleibenden Hostnamen erreichbar ist</li><li>die Weiterleitung der definierten Ports vom Router auf den Server</li></ul></div>
<style type="text/css" class="advgb-blocks-styles-renderer">.wp-block-advgb-list ul.advgblist-4ca13a9f-e724-4362-aa3b-b477e54cb143 > li{font-size:16px;}.wp-block-advgb-list ul.advgblist-4ca13a9f-e724-4362-aa3b-b477e54cb143 > li{padding-left:18px;margin-left:0;}.wp-block-advgb-list ul.advgblist-4ca13a9f-e724-4362-aa3b-b477e54cb143 > li:before{font-size:16px;color:#000000;line-height:18px;margin:2px;padding:2px;margin-left:-20px}</style>


<div class="wp-block-image"><figure class="aligncenter size-medium"><a href="https://www.schiffler.eu/wp-content/uploads/2021/02/homeserver_network_1.png"><img fetchpriority="high" decoding="async" width="300" height="200" src="https://www.schiffler.eu/wp-content/uploads/2021/02/homeserver_network_1-300x200.png" alt="Homeserver - Netzwerkarchitektur" class="wp-image-1292" srcset="https://www.schiffler.eu/wp-content/uploads/2021/02/homeserver_network_1-300x200.png 300w, https://www.schiffler.eu/wp-content/uploads/2021/02/homeserver_network_1-360x240.png 360w, https://www.schiffler.eu/wp-content/uploads/2021/02/homeserver_network_1-600x400.png 600w, https://www.schiffler.eu/wp-content/uploads/2021/02/homeserver_network_1.png 656w" sizes="(max-width: 300px) 100vw, 300px" /></a></figure></div>



<p class="wp-block-paragraph">Sobald diese Konfiguration vorgenommen ist kann der Server, sofern denn alles richtig läuft, aus dem Internet auf dem freigeschalteten Port erreicht werden. </p>



<h2 class="wp-block-heading">SSL Zertifikat für DynDNS Eintrag erzeugen</h2>



<p class="wp-block-paragraph">Soweit so gut, doch wie kommen wir nun dazu den Hostname, welchen wir über den DynDNS-Anbieter erhalten haben, über ein SSL Zertifikat zu schützen. Im Idealfall soll das Zertifikat dann auch noch kostenneutral verwaltet werden können. Das Stichwort hierfür lautet LetsEncrypt.</p>



<p class="wp-block-paragraph">Über <a href="https://letsencrypt.org/de/" target="_blank" rel="noreferrer noopener">Let´s Encrypt</a> ist es möglich SSL-Zertifikate mit sauberer Authentifizierungschain zu erstellen, sofern man denn der &#8222;Eigentümer des Servers&#8220; ist, also Administrativen Zugang zu selbigem hat. Das Vorgehen ist recht trivial und <a href="https://letsencrypt.org/de/how-it-works/" target="_blank" rel="noreferrer noopener nofollow">hier sehr plakativ beschrieben</a>.</p>



<h2 class="wp-block-heading">Certbot mit Let´s Encrypt auf Debian 10 einrichten</h2>



<p class="wp-block-paragraph">Die ersten Versuche eine geeignete Lösung zu finden brachten mich ein wenig zur Verzweiflung. Na klar man findet diverse Tutorials im Internet, diese sind jedoch meist für Ubuntu oder für altere Debian Versionen. Ab der Version 10 von Debian ist die auf den meisten Seiten beschriebene Installation des Certbot jedoch nicht mehr möglich da für diese Variante Debian nicht mehr unterstützt wird. </p>



<p class="wp-block-paragraph">Nach ein wenig Recherche dann doch die Lösung, der <a href="https://certbot.eff.org/lets-encrypt/debianbuster-other" target="_blank" rel="noreferrer noopener">Certbot</a> muss lediglich über <a href="https://snapcraft.io/docs/installing-snap-on-debian" target="_blank" rel="noreferrer noopener">snap</a> auf Debian installiert werden. Im Grund nur ein kleiner Umweg welcher genau so zum Ziel führt.</p>



<p class="wp-block-paragraph">Nachdem nun das SSL Zertifikat für die &#8222;eigene&#8220; DynDNS-Domain eingerichtet wurde kann dieses in einen Keystore für die Java-Anwendung gelegt werden.  Dies geschieht über den folgenden Befehl:</p>



<pre class="wp-block-code"><code>openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out keystore.p12 -name &lt;applicationName&gt; -CAfile chain.pem -caname root -passout pass:&lt;keystorePass&gt;</code></pre>



<p class="wp-block-paragraph">Da der Certbot das SSL-Zertifikat regelmäßig erneuert (min. alle 3 Monate) habe ich das Kommando zur Aktualisierung des Keystores in einen Cronjob gepackt. Somit sorge ich dafür dass der Keystore immer über das aktuellste Zertifikat verfügt.</p>



<h2 class="wp-block-heading">Spring Boot mit SSL Zertifikat &#8211; Konfiguration</h2>



<p class="wp-block-paragraph">In Projekten in welchen ich Spring-Boot einsetze versuche ich, die eigentlichen Anwendungen nicht völlig für die Anwender zu öffnen. Ich habe mir angewöhnt, die einzelnen Microservices hinter einem Gateway &#8222;zu verstecken&#8220;. Dieses Gateway (Spring Cloud Gateway) nimmt alle Aufrufe entgegen, prüft Berechtigungen und Aufbau der Aufrufe. Somit werden nur gültige Requests an die einzelnen Services weiter geroutet.</p>



<div class="wp-block-image"><figure class="aligncenter size-medium"><a href="https://www.schiffler.eu/wp-content/uploads/2021/02/homeserver_network_2.png"><img decoding="async" width="300" height="141" src="https://www.schiffler.eu/wp-content/uploads/2021/02/homeserver_network_2-300x141.png" alt="Homeserver - Anwendungsarchitektur mit SSL" class="wp-image-1291" srcset="https://www.schiffler.eu/wp-content/uploads/2021/02/homeserver_network_2-300x141.png 300w, https://www.schiffler.eu/wp-content/uploads/2021/02/homeserver_network_2.png 696w" sizes="(max-width: 300px) 100vw, 300px" /></a></figure></div>



<p class="wp-block-paragraph">Durch diesen Ansatz geht der gesamte Traffic über das Gateway. Dieses ist also die einzige Anwendung die direkt von außen aufgerufen werden kann. Somit genügt es, aus externer Sicht, dieses Gateway mit einem SSL-Zertifikat auszustatten. Um diese Konfiguration durchzuführen passen wir nun noch die application.yaml an und fügen den Bereich der SSL-Konfiguration hinzu:</p>



<pre class="wp-block-code"><code>server:
  port: &lt;portAusForward&gt;
  ssl:
    enabled: true
    key-store-type: PKCS12
    key-store: /home/ssl/keystore/keystore.p12
    key-store-password: &lt;keystorePass&gt;
    key-alias: &lt;applicationName&gt;</code></pre>



<p class="wp-block-paragraph"></p>
<p>Der Beitrag <a href="https://www.schiffler.eu/spring-boot-mit-ssl-zertifikat-von-letsencrypt-unter-debian-10/">Spring Boot mit SSL Zertifikat von LetsEncrypt unter Debian 10</a> erschien zuerst auf <a href="https://www.schiffler.eu">Das ist die Welt von Thomas</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.schiffler.eu/spring-boot-mit-ssl-zertifikat-von-letsencrypt-unter-debian-10/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Object Caching 43/54 objects using APC
Page Caching using Disk: Enhanced 
Lazy Loading (feed)
Minified using APC
Database Caching 5/26 queries in 0.003 seconds using APC

Served from: www.schiffler.eu @ 2026-08-12 15:33:15 by W3 Total Cache
-->