<?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>serverless Archives - Apostolidis Cloud Corner</title>
	<atom:link href="https://www.cloudcorner.gr/tag/serverless/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.cloudcorner.gr/tag/serverless/</link>
	<description>Remarks from a Cloud Architect encounters</description>
	<lastBuildDate>Fri, 28 Dec 2018 13:50:57 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://www.cloudcorner.gr/wp-content/uploads/2021/04/cropped-cloudcorner2-32x32.png</url>
	<title>serverless Archives - Apostolidis Cloud Corner</title>
	<link>https://www.cloudcorner.gr/tag/serverless/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Serverless Computing &#124;  Email Report Azure WAF Logs</title>
		<link>https://www.cloudcorner.gr/microsoft/azure/serverless-computing-email-report-azure-waf-logs/</link>
					<comments>https://www.cloudcorner.gr/microsoft/azure/serverless-computing-email-report-azure-waf-logs/#respond</comments>
		
		<dc:creator><![CDATA[Pantelis Apostolidis]]></dc:creator>
		<pubDate>Fri, 28 Dec 2018 13:50:55 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[application gateway]]></category>
		<category><![CDATA[azure]]></category>
		<category><![CDATA[azurerm]]></category>
		<category><![CDATA[log analytics]]></category>
		<category><![CDATA[report]]></category>
		<category><![CDATA[reports]]></category>
		<category><![CDATA[sendgrid]]></category>
		<category><![CDATA[serverless]]></category>
		<category><![CDATA[waf]]></category>
		<category><![CDATA[web application firewall]]></category>
		<guid isPermaLink="false">https://www.e-apostolidis.gr/?p=2349</guid>

					<description><![CDATA[<p>At this post, we will create a Logic App that will query the Log Analytics workspace for the WAF logs</p>
<p>The post <a href="https://www.cloudcorner.gr/microsoft/azure/serverless-computing-email-report-azure-waf-logs/">Serverless Computing |  Email Report Azure WAF Logs</a> appeared first on <a href="https://www.cloudcorner.gr">Apostolidis Cloud Corner</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>At this post, we will create a Logic App that will query the Log Analytics workspace for the WAF logs of the last 24 hours and send the results in an email, using a free SendGrid account.</p>



<p>A Web Application Firewall protects your application from common web vulnerabilities. Azure provides enterprise grade Web Application Firewall through the Application Gateway. You can read more at my previous post: <a href="https://www.e-apostolidis.gr/microsoft/azure/protect-your-web-application-with-azure-application-gateway-waf/">https://www.e-apostolidis.gr/microsoft/azure/protect-your-web-application-with-azure-application-gateway-waf/</a> </p>



<h2 class="wp-block-heading">Use Log Analytics to Query the WAF Logs</h2>



<p>The Application Gateway WAF sends its logs to the Log Analytics workspace. You can see them using a typical query like the below, that will list all events at the past 24 hours.</p>


<p>AzureDiagnostics | where Resource == &#8220;PROWAF&#8221; and OperationName == &#8220;ApplicationGatewayFirewall&#8221; | where TimeGenerated > ago(24h) | summarize count() by TimeGenerated, clientIp_s , TimeGenerated , ruleId_s , Message , details_message_s , requestUri_s, details_file_s , hostname_s</p>



<figure class="wp-block-image"><img fetchpriority="high" decoding="async" width="1024" height="439" src="https://www.e-apostolidis.gr/wp-content/uploads/2018/12/image-23-1024x439.png" alt="waflogicappreports" class="wp-image-2367" srcset="https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-23-1024x439.png 1024w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-23-300x129.png 300w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-23-768x330.png 768w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-23-600x258.png 600w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-23.png 1398w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>You can save the query by clicking the Save button and give it a name and a Category.</p>



<figure class="wp-block-image"><img decoding="async" width="493" height="224" src="https://www.e-apostolidis.gr/wp-content/uploads/2018/12/image-17.png" alt="waflogicappreports" class="wp-image-2360" srcset="https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-17.png 493w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-17-300x136.png 300w" sizes="(max-width: 493px) 100vw, 493px" /></figure>



<p>We can send those logs as email by using an Azure Logic App and a SendGrid account. You can see how to create a SendGrid free account at my previous post: <a href="https://www.e-apostolidis.gr/microsoft/azure/azure-free-smtp-relay-using-sendgrid/">https://www.e-apostolidis.gr/microsoft/azure/azure-free-smtp-relay-using-sendgrid/</a></p>



<h2 class="wp-block-heading">Create a Logic App</h2>



<p>From the portal.azure.com, Create a resource and write &#8220;logic app&#8221;, click the &#8220;Logic App&#8221;and press &#8220;Create&#8221;</p>



<figure class="wp-block-image"><img decoding="async" width="511" height="304" src="https://www.e-apostolidis.gr/wp-content/uploads/2018/12/image-10.png" alt="waflogicappreports" class="wp-image-2351" srcset="https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-10.png 511w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-10-300x178.png 300w" sizes="(max-width: 511px) 100vw, 511px" /><figcaption><br></figcaption></figure>



<p>At the Logic App creation wizard add Name, subscription, resource group, location and press Create</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="462" height="416" src="https://www.e-apostolidis.gr/wp-content/uploads/2018/12/image-11.png" alt="waflogicappreports" class="wp-image-2352" srcset="https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-11.png 462w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-11-300x270.png 300w" sizes="auto, (max-width: 462px) 100vw, 462px" /><figcaption><br></figcaption></figure>



<p>Next the Logic App will be created. Open it and from the Logics App Designer select the &#8220;Recurrence&#8221; common trigger.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="622" height="264" src="https://www.e-apostolidis.gr/wp-content/uploads/2018/12/image-12.png" alt="waflogicappreports" class="wp-image-2354" srcset="https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-12.png 622w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-12-300x127.png 300w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-12-600x255.png 600w" sizes="auto, (max-width: 622px) 100vw, 622px" /></figure>



<p>Change the Recurrence Interval to &#8220;1&#8221; and the Frequency to &#8220;Day&#8221; and press the &#8220;+ New step&#8221;</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="621" height="227" src="https://www.e-apostolidis.gr/wp-content/uploads/2018/12/image-14.png" alt="waflogicappreports" class="wp-image-2357" srcset="https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-14.png 621w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-14-300x110.png 300w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-14-600x219.png 600w" sizes="auto, (max-width: 621px) 100vw, 621px" /></figure>



<p>search for &#8220;log analytics&#8221; and select the &#8220;Run query and visualize results&#8221;</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="585" height="500" src="https://www.e-apostolidis.gr/wp-content/uploads/2018/12/image-24.png" alt="waflogicappreports" class="wp-image-2368" srcset="https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-24.png 585w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-24-300x256.png 300w" sizes="auto, (max-width: 585px) 100vw, 585px" /></figure>



<p>I will proceed with &#8220;Sign in&#8221;, you can also use a Service Principal but we will cover this to another post.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="627" height="264" src="https://www.e-apostolidis.gr/wp-content/uploads/2018/12/image-16.png" alt="waflogicappreports" class="wp-image-2359" srcset="https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-16.png 627w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-16-300x126.png 300w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-16-600x253.png 600w" sizes="auto, (max-width: 627px) 100vw, 627px" /></figure>



<p>After you login select the Subscription, Resource Group and the Log Analytics Workspace. Next, add the query, for Chart Type select &#8220;Html Table&#8221; and add a &#8220;Next Step&#8221;</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="602" height="335" src="https://www.e-apostolidis.gr/wp-content/uploads/2018/12/image-26.png" alt="waflogicappreports" class="wp-image-2370" srcset="https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-26.png 602w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-26-300x167.png 300w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-26-600x334.png 600w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-26-360x200.png 360w" sizes="auto, (max-width: 602px) 100vw, 602px" /></figure>



<p></p>



<p>search for &#8220;sendgrid&#8221; and select the &#8220;Send email (V2)&#8221;</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="581" height="577" src="https://www.e-apostolidis.gr/wp-content/uploads/2018/12/image-19.png" alt="waflogicappreports" class="wp-image-2363" srcset="https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-19.png 581w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-19-150x150.png 150w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-19-300x298.png 300w" sizes="auto, (max-width: 581px) 100vw, 581px" /></figure>



<p>Add a name for the connection and the API key that you created at the SendGrid creation post and press create.  <a href="https://www.e-apostolidis.gr/microsoft/azure/azure-free-smtp-relay-using-sendgrid/">https://www.e-apostolidis.gr/microsoft/azure/azure-free-smtp-relay-using-sendgrid/</a></p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="612" height="211" src="https://www.e-apostolidis.gr/wp-content/uploads/2018/12/image-20.png" alt="waflogicappreports" class="wp-image-2364" srcset="https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-20.png 612w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-20-300x103.png 300w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-20-600x207.png 600w" sizes="auto, (max-width: 612px) 100vw, 612px" /></figure>



<p>Fill the From address, To address and Subject. At the email body, add dynamic content and select the blocs of the previous set result.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="844" height="365" src="https://www.e-apostolidis.gr/wp-content/uploads/2018/12/image-25.png" alt="waflogicappreports" class="wp-image-2369" srcset="https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-25.png 844w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-25-300x130.png 300w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-25-768x332.png 768w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-25-600x259.png 600w" sizes="auto, (max-width: 844px) 100vw, 844px" /></figure>



<p>Press Save to save the Flow and Run to test it.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="525" height="119" src="https://www.e-apostolidis.gr/wp-content/uploads/2018/12/image-22.png" alt="waflogicappreports" class="wp-image-2366" srcset="https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-22.png 525w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-22-300x68.png 300w" sizes="auto, (max-width: 525px) 100vw, 525px" /></figure>



<p>The result at my email:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="885" height="348" src="https://www.e-apostolidis.gr/wp-content/uploads/2018/12/image-27.png" alt="waflogicappreports" class="wp-image-2372" srcset="https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-27.png 885w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-27-300x118.png 300w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-27-768x302.png 768w, https://www.cloudcorner.gr/wp-content/uploads/2018/12/image-27-600x236.png 600w" sizes="auto, (max-width: 885px) 100vw, 885px" /></figure>



<p></p>



<p></p>



<p></p>
<div class="saboxplugin-wrap" itemtype="http://schema.org/Person" itemscope itemprop="author"><div class="saboxplugin-tab"><div class="saboxplugin-gravatar"><img loading="lazy" decoding="async" src="https://www.e-apostolidis.gr/wp-content/uploads/2019/05/mvpsummit2019.jpg" width="100"  height="100" alt="Pantelis Apostolidis" itemprop="image"></div><div class="saboxplugin-authorname"><a href="https://www.cloudcorner.gr/author/admin/" class="vcard author" rel="author"><span class="fn">Pantelis Apostolidis</span></a></div><div class="saboxplugin-desc"><div itemprop="description"><p>Pantelis Apostolidis is a Sr. Specialist, Azure at Microsoft and a former Microsoft Azure MVP. For the last 20 years, Pantelis has been involved to major cloud projects in Greece and abroad, helping companies to adopt and deploy cloud technologies, driving business value. He is entitled to a lot of Microsoft Expert Certifications, demonstrating his proven experience in delivering high quality solutions. He is an author, blogger and he is acting as a spokesperson for conferences, workshops and webinars. He is also an active member of several communities as a moderator in azureheads.gr and autoexec.gr. Follow him on Twitter @papostolidis.</p>
</div></div><div class="saboxplugin-web "><a href="https://www.cloudcorner.gr" target="_self" >www.cloudcorner.gr</a></div><div class="clearfix"></div><div class="saboxplugin-socials "><a title="Facebook" target="_blank" href="https://www.facebook.com/pantelis.apostolidis" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-facebook" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 264 512"><path fill="currentColor" d="M76.7 512V283H0v-91h76.7v-71.7C76.7 42.4 124.3 0 193.8 0c33.3 0 61.9 2.5 70.2 3.6V85h-48.2c-37.8 0-45.1 18-45.1 44.3V192H256l-11.7 91h-73.6v229"></path></svg></span></a><a title="Linkedin" target="_blank" href="https://www.linkedin.com/in/papostolidis/" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-linkedin" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M100.3 480H7.4V180.9h92.9V480zM53.8 140.1C24.1 140.1 0 115.5 0 85.8 0 56.1 24.1 32 53.8 32c29.7 0 53.8 24.1 53.8 53.8 0 29.7-24.1 54.3-53.8 54.3zM448 480h-92.7V334.4c0-34.7-.7-79.2-48.3-79.2-48.3 0-55.7 37.7-55.7 76.7V480h-92.8V180.9h89.1v40.8h1.3c12.4-23.5 42.7-48.3 87.9-48.3 94 0 111.3 61.9 111.3 142.3V480z"></path></svg></span></a><a title="Instagram" target="_blank" href="https://www.instagram.com/proximagr" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-instagram" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg></span></a><a title="Rss" target="_blank" href="https://wwwcloudcorner.gr/feed/rdf/" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-rss" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041 64.04 28.673 64.04 64.041zm175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018 111.832 7.284 201.473 96.702 208.772 208.772.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79zm144.249.288C439.596 229.677 251.465 40.445 16.503 32.01 7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999 191.179 7.839 344.627 161.316 352.465 352.465.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504z"></path></svg></span></a><a title="Twitter" target="_blank" href="https://twitter.com/papostolidis" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-twitter" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path d="M26.37,26l-8.795-12.822l0.015,0.012L25.52,4h-2.65l-6.46,7.48L11.28,4H4.33l8.211,11.971L12.54,15.97L3.88,26h2.65 l7.182-8.322L19.42,26H26.37z M10.23,6l12.34,18h-2.1L8.12,6H10.23z" /></svg></span></a><a title="Github" target="_blank" href="https://github.com/proximagr" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-github" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg></span></a><a title="User email" target="_self" href="mailto:p&#114;o&#120;&#105;&#109;a&#103;&#114;&#064;ho&#116;&#109;&#097;&#105;l&#046;&#099;o&#109;" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-user_email" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"></path></svg></span></a></div></div></div><p><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fwww.cloudcorner.gr%2Fmicrosoft%2Fazure%2Fserverless-computing-email-report-azure-waf-logs%2F&amp;linkname=Serverless%20Computing%20%7C%20%20Email%20Report%20Azure%20WAF%20Logs" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_print" href="https://www.addtoany.com/add_to/print?linkurl=https%3A%2F%2Fwww.cloudcorner.gr%2Fmicrosoft%2Fazure%2Fserverless-computing-email-report-azure-waf-logs%2F&amp;linkname=Serverless%20Computing%20%7C%20%20Email%20Report%20Azure%20WAF%20Logs" title="Print" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fwww.cloudcorner.gr%2Fmicrosoft%2Fazure%2Fserverless-computing-email-report-azure-waf-logs%2F&#038;title=Serverless%20Computing%20%7C%20%20Email%20Report%20Azure%20WAF%20Logs" data-a2a-url="https://www.cloudcorner.gr/microsoft/azure/serverless-computing-email-report-azure-waf-logs/" data-a2a-title="Serverless Computing |  Email Report Azure WAF Logs"><img src="https://static.addtoany.com/buttons/share_save_171_16.png" alt="Share"></a></p><p>The post <a href="https://www.cloudcorner.gr/microsoft/azure/serverless-computing-email-report-azure-waf-logs/">Serverless Computing |  Email Report Azure WAF Logs</a> appeared first on <a href="https://www.cloudcorner.gr">Apostolidis Cloud Corner</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.cloudcorner.gr/microsoft/azure/serverless-computing-email-report-azure-waf-logs/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Serverless Computing &#124; Check your expired public certificates</title>
		<link>https://www.cloudcorner.gr/microsoft/azure/serverless-computing-check-your-expired-public-certificates/</link>
					<comments>https://www.cloudcorner.gr/microsoft/azure/serverless-computing-check-your-expired-public-certificates/#respond</comments>
		
		<dc:creator><![CDATA[Pantelis Apostolidis]]></dc:creator>
		<pubDate>Fri, 12 Oct 2018 09:41:29 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[azure]]></category>
		<category><![CDATA[azure function apps]]></category>
		<category><![CDATA[azurerm]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[serverless]]></category>
		<guid isPermaLink="false">https://www.e-apostolidis.gr/?p=2220</guid>

					<description><![CDATA[<p>Serverless Computing &#124; Check your expired public certificates Check for expired public certificates serverless, using an Azure Function App. Magically</p>
<p>The post <a href="https://www.cloudcorner.gr/microsoft/azure/serverless-computing-check-your-expired-public-certificates/">Serverless Computing | Check your expired public certificates</a> appeared first on <a href="https://www.cloudcorner.gr">Apostolidis Cloud Corner</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1 style="text-align: justify;">Serverless Computing | Check your expired public certificates</h1>
<p style="text-align: justify;">Check for expired public certificates serverless, using an Azure Function App. Magically run the required PowerShell script directly at the Portal without deploying VMs or App Services. At this post I combine Azure Function Apps, with a PowerShell script to check the certificate expirations and the Send-MailMessage PowerShell function for sending emails directly from the PowerShell script.</p>
<h2 style="text-align: justify;">Setup the Azure Function App</h2>
<p style="text-align: justify;">At the Azure Portal, create a new Function App. Select Consumption Plan and .NET Runtime Stack</p>
<p id="MXzlFhG" style="text-align: justify;"><img loading="lazy" decoding="async" class="alignnone wp-image-2226 size-full" src="https://www.e-apostolidis.gr/wp-content/uploads/2018/10/img_5bbfa628f28d7.png" alt="Azure Function App" width="565" height="798" srcset="https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bbfa628f28d7.png 565w, https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bbfa628f28d7-212x300.png 212w" sizes="auto, (max-width: 565px) 100vw, 565px" /></p>
<p style="text-align: justify;">Once the Function App is created, we need to enable PowerShell language support. To do so, open it, select the Function App and at the Platform features tab, open the Application Settings</p>
<p id="OhAViFR" style="text-align: justify;"><img loading="lazy" decoding="async" class="alignnone wp-image-2228 size-full" src="https://www.e-apostolidis.gr/wp-content/uploads/2018/10/img_5bbfa72059c9c.png" alt="Azure Function App" width="758" height="371" srcset="https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bbfa72059c9c.png 758w, https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bbfa72059c9c-300x147.png 300w, https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bbfa72059c9c-600x294.png 600w" sizes="auto, (max-width: 758px) 100vw, 758px" /></p>
<p style="text-align: justify;">Change the FUNCTIONS_EXTENSION_VERSION to ~1 and delete the FUNCTIONS_WORKER_RUNTIME line</p>
<p style="text-align: justify;">Before:</p>
<p id="xEnrOsO" style="text-align: justify;"><img loading="lazy" decoding="async" class="alignnone wp-image-2230 size-full" src="https://www.e-apostolidis.gr/wp-content/uploads/2018/10/img_5bbfa7f11745d.png" alt="Azure Function App" width="715" height="296" srcset="https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bbfa7f11745d.png 715w, https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bbfa7f11745d-300x124.png 300w, https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bbfa7f11745d-600x248.png 600w" sizes="auto, (max-width: 715px) 100vw, 715px" /></p>
<p style="text-align: justify;">After:</p>
<p id="SIlnSos" style="text-align: justify;"><img loading="lazy" decoding="async" class="alignnone wp-image-2231 size-full" src="https://www.e-apostolidis.gr/wp-content/uploads/2018/10/img_5bbfa85190469.png" alt="Azure Function App" width="746" height="301" srcset="https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bbfa85190469.png 746w, https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bbfa85190469-300x121.png 300w, https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bbfa85190469-600x242.png 600w" sizes="auto, (max-width: 746px) 100vw, 746px" /></p>
<h2 style="text-align: justify;">Create the Function</h2>
<p style="text-align: justify;">Once you click Save, go back to the Function App, select the &#8220;Functions&#8221; and press &#8220;New function&#8221;</p>
<p id="hCPzlED" style="text-align: justify;"><img loading="lazy" decoding="async" class="alignnone wp-image-2232 size-full" src="https://www.e-apostolidis.gr/wp-content/uploads/2018/10/img_5bbfa883c7ab5.png" alt="Azure Function App" width="798" height="361" srcset="https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bbfa883c7ab5.png 798w, https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bbfa883c7ab5-300x136.png 300w, https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bbfa883c7ab5-768x347.png 768w, https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bbfa883c7ab5-600x271.png 600w" sizes="auto, (max-width: 798px) 100vw, 798px" /></p>
<p style="text-align: justify;">If we change the application settings correctly, the &#8220;Experimental Language Support&#8221; option will appear. Enable it and the templates will be able to support PowerShell (And more languages). To get started click the &#8220;Time trigger&#8221; template.</p>
<p id="FMRGdTd" style="text-align: justify;"><img loading="lazy" decoding="async" class="alignnone wp-image-2233 size-full" src="https://www.e-apostolidis.gr/wp-content/uploads/2018/10/img_5bbfa8d95fe43.png" alt="Azure Function App" width="825" height="314" srcset="https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bbfa8d95fe43.png 825w, https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bbfa8d95fe43-300x114.png 300w, https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bbfa8d95fe43-768x292.png 768w, https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bbfa8d95fe43-600x228.png 600w" sizes="auto, (max-width: 825px) 100vw, 825px" /></p>
<p style="text-align: justify;">At the window, select &#8220;PowerShell&#8221; for language and set the schedule. &#8220;Enter a cron expression of the format &#8216;{second} {minute} {hour} {day} {month} {day of week}&#8217; to specify the schedule.&#8221;</p>
<p style="text-align: justify;">Entering 0 0 0 1 * * the function will run once per day</p>
<p id="igDGJif" style="text-align: justify;"><img loading="lazy" decoding="async" class="alignnone wp-image-2234 size-full" src="https://www.e-apostolidis.gr/wp-content/uploads/2018/10/img_5bbfa9c9bedcd.png" alt="Azure Function App" width="547" height="574" srcset="https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bbfa9c9bedcd.png 547w, https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bbfa9c9bedcd-286x300.png 286w" sizes="auto, (max-width: 547px) 100vw, 547px" /></p>
<h2 style="text-align: justify;">Add the PowerShell script</h2>
<p style="text-align: justify;">Once the Function is created, you will be directed to the &#8220;Function Name&#8221; run.ps1 file. There we can run PowerShell scripts.</p>
<p id="RlvLXyc" style="text-align: justify;"><img loading="lazy" decoding="async" class="alignnone wp-image-2235 size-full" src="https://www.e-apostolidis.gr/wp-content/uploads/2018/10/img_5bc06384d99f4.png" alt="Azure Function App" width="842" height="505" srcset="https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bc06384d99f4.png 842w, https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bc06384d99f4-300x180.png 300w, https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bc06384d99f4-768x461.png 768w, https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bc06384d99f4-600x360.png 600w" sizes="auto, (max-width: 842px) 100vw, 842px" /></p>
<p style="text-align: justify;">Below is the script, change the required variables to fit your needs and paste it to the Function run.ps1 file. The variables that you need to change is:</p>
<p style="text-align: justify;">$WebsiteURLs | This is the list, comma separated, of the URLs you want to check for certificate expiration<br />
$From | The email address of the Sender<br />
$To | The email address of the Recipient<br />
$Cc | The email address of the CC Recipient<br />
$Subject | The subject of the email<br />
$SMTPServer | The email server you will use to send the emails. You can Use the SendGrid service from Azure that currenlty provides 25000 email per month for free. More details here: <a href="http://guidestomicrosoft.com/2016/02/17/configure-a-smtp-server-in-azure/">https://sendgrid.com/docs/API_Reference/SMTP_API/getting_started_smtp.html </a><br />
$SMTPPort | The port that the SMTP service requires<br />
$username | The username to authenticate to the SMTP Service<br />
$password = ConvertTo-SecureString &#8220;here you need to add the password in plain text&#8221; -AsPlainText -Force</p>
<pre class="lang:ps decode:true">$WebsiteURLs= @("e-apostolidis.gr","azureheads.gr")
$WebsitePort=443
$Threshold=120
$Severe=30
$ID=0

$body +=  "&lt;html&gt;&lt;body&gt;&lt;br&gt;"
$body +=  "&lt;font color =""darkblue""&gt;"
$body += "#	Website_URL:	Current Certificate:	Expiration Date:	Days Remaining:	Errors:"
foreach ($WebsiteURL in $WebsiteURLs){
$CommonName=$WebsiteURL
$ID+=1
Try{
$Conn = New-Object System.Net.Sockets.TcpClient($WebsiteURL,$WebsitePort) 
Try {
$Stream = New-Object System.Net.Security.SslStream($Conn.GetStream(),$false, {
param($sender, $certificate, $chain, $sslPolicyErrors) 
return $true
})
$Stream.AuthenticateAsClient($CommonName) 

$Cert = $Stream.Get_RemoteCertificate()
$CN=(($cert.Subject -split "=")[1] -split ",")[0]
$ValidTo = [datetime]::Parse($Cert.GetExpirationDatestring())

$ValidDays = $($ValidTo - [datetime]::Now).Days
if ($ValidDays -lt $Threshold) {
$fontcolor +=  "&lt;font color =darkgreen&gt;"
} 
if ($ValidDays -lt $Severe) {
$fontcolor +=  "&lt;font color =darkred&gt;"
}
$body += "&lt;br /&gt;"
$body += $fontcolor
$body += "$ID	$WebsiteURL	$CN	$ValidTo	$ValidDays"
}
Catch { Throw $_ }
Finally { $Conn.close() }
}
Catch {
$body += "&lt;br /&gt;"
$body +="&lt;font color=red&gt; gest &lt;/font&gt;"
$body += " $ID	$WebsiteURL"
$body +=  "&lt;/body&gt;&lt;/html&gt;"
}

}

$From = "alias@domain.gr"
$To = "alias@domain.gr"
$Cc = "alias@domain.gr"
$Subject = "check the certificates"

$SMTPServer = "mail.mailserver.gr"
$SMTPPort = "587"


$username = "username"
$password = ConvertTo-SecureString "password" -AsPlainText -Force
$mycred = New-Object System.Management.Automation.PSCredential($username, $password)
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = { return $true }
Send-MailMessage -From $From -to $To -Cc $Cc -Subject $Subject -SmtpServer $SMTPServer -UseSSL -port $SMTPPort -Credential ($mycred) -Body $body -BodyAsHtml</pre>
<p style="text-align: justify;">Press SAve &amp; Run and you are ready. Now on, once per day the script will run and it will sent an email with the certificates. Something like this:</p>
<p id="fYgDHmV" style="text-align: justify;"><img loading="lazy" decoding="async" class="alignnone wp-image-2236 size-full" src="https://www.e-apostolidis.gr/wp-content/uploads/2018/10/img_5bc0649bdf4ce.png" alt="Azure Function App" width="637" height="229" srcset="https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bc0649bdf4ce.png 637w, https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bc0649bdf4ce-300x108.png 300w, https://www.cloudcorner.gr/wp-content/uploads/2018/10/img_5bc0649bdf4ce-600x216.png 600w" sizes="auto, (max-width: 637px) 100vw, 637px" /></p>
<p style="text-align: justify;">Feel free to play with the colors on the script. I have added Dark Green for the valid certificates and Red for those that is about to expire.</p>
<h2 style="text-align: justify;">Credits</h2>
<p style="text-align: justify;">Use this line to ignore the certificate check on the email server when sending the email</p>
<pre class="prettyprint prettyprinted"><span class="pun">[</span><span class="typ">System</span><span class="pun">.</span><span class="typ">Net</span><span class="pun">.</span><span class="typ">ServicePointManager</span><span class="pun">]::</span><span class="typ">ServerCertificateValidationCallback</span> <span class="pun">=</span> <span class="pun">{</span> <span class="kwd">return</span><span class="pln"> $true </span><span class="pun">}</span></pre>
<p style="text-align: justify;"><a href="https://social.technet.microsoft.com/Forums/windows/en-US/d9e9af2b-3bb9-4cb4-8046-dd0a092bc456/send-email-by-powershell?forum=winserverpowershell">https://social.technet.microsoft.com/Forums/windows/en-US/d9e9af2b-3bb9-4cb4-8046-dd0a092bc456/send-email-by-powershell?forum=winserverpowershell</a></p>
<p style="text-align: justify;">The basic script for checking for certificate revocation:</p>
<p style="text-align: justify;"><a href="https://isc.sans.edu/forums/diary/Assessing+Remote+Certificates+with+Powershell/20645/">https://isc.sans.edu/forums/diary/Assessing+Remote+Certificates+with+Powershell/20645/</a></p>
<p style="text-align: justify;">At his blog is the idea for sending emails with powershell with html:</p>
<p style="text-align: justify;"><a href="http://www.techtrek.io/send-automated-email-with-powershell/">http://www.techtrek.io/send-automated-email-with-powershell/</a></p>
<div class="saboxplugin-wrap" itemtype="http://schema.org/Person" itemscope itemprop="author">
<div class="saboxplugin-tab">
<div class="saboxplugin-gravatar"><img loading="lazy" decoding="async" src="https://www.e-apostolidis.gr/wp-content/uploads/2019/05/mvpsummit2019.jpg" width="100"  height="100" alt="Pantelis Apostolidis" itemprop="image"></div>
<div class="saboxplugin-authorname"><a href="https://www.cloudcorner.gr/author/admin/" class="vcard author" rel="author"><span class="fn">Pantelis Apostolidis</span></a></div>
<div class="saboxplugin-desc">
<div itemprop="description">
<p>Pantelis Apostolidis is a Sr. Specialist, Azure at Microsoft and a former Microsoft Azure MVP. For the last 20 years, Pantelis has been involved to major cloud projects in Greece and abroad, helping companies to adopt and deploy cloud technologies, driving business value. He is entitled to a lot of Microsoft Expert Certifications, demonstrating his proven experience in delivering high quality solutions. He is an author, blogger and he is acting as a spokesperson for conferences, workshops and webinars. He is also an active member of several communities as a moderator in azureheads.gr and autoexec.gr. Follow him on Twitter @papostolidis.</p>
</div>
</div>
<div class="saboxplugin-web "><a href="https://www.cloudcorner.gr" target="_self" >www.cloudcorner.gr</a></div>
<div class="clearfix"></div>
<div class="saboxplugin-socials "><a title="Facebook" target="_blank" href="https://www.facebook.com/pantelis.apostolidis" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-facebook" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 264 512"><path fill="currentColor" d="M76.7 512V283H0v-91h76.7v-71.7C76.7 42.4 124.3 0 193.8 0c33.3 0 61.9 2.5 70.2 3.6V85h-48.2c-37.8 0-45.1 18-45.1 44.3V192H256l-11.7 91h-73.6v229"></path></svg></span></a><a title="Linkedin" target="_blank" href="https://www.linkedin.com/in/papostolidis/" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-linkedin" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M100.3 480H7.4V180.9h92.9V480zM53.8 140.1C24.1 140.1 0 115.5 0 85.8 0 56.1 24.1 32 53.8 32c29.7 0 53.8 24.1 53.8 53.8 0 29.7-24.1 54.3-53.8 54.3zM448 480h-92.7V334.4c0-34.7-.7-79.2-48.3-79.2-48.3 0-55.7 37.7-55.7 76.7V480h-92.8V180.9h89.1v40.8h1.3c12.4-23.5 42.7-48.3 87.9-48.3 94 0 111.3 61.9 111.3 142.3V480z"></path></svg></span></a><a title="Instagram" target="_blank" href="https://www.instagram.com/proximagr" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-instagram" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg></span></a><a title="Rss" target="_blank" href="https://wwwcloudcorner.gr/feed/rdf/" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-rss" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041 64.04 28.673 64.04 64.041zm175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018 111.832 7.284 201.473 96.702 208.772 208.772.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79zm144.249.288C439.596 229.677 251.465 40.445 16.503 32.01 7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999 191.179 7.839 344.627 161.316 352.465 352.465.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504z"></path></svg></span></a><a title="Twitter" target="_blank" href="https://twitter.com/papostolidis" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-twitter" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path d="M26.37,26l-8.795-12.822l0.015,0.012L25.52,4h-2.65l-6.46,7.48L11.28,4H4.33l8.211,11.971L12.54,15.97L3.88,26h2.65 l7.182-8.322L19.42,26H26.37z M10.23,6l12.34,18h-2.1L8.12,6H10.23z" /></svg></span></a><a title="Github" target="_blank" href="https://github.com/proximagr" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-github" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg></span></a><a title="User email" target="_self" href="mailto:p&#114;&#111;&#120;&#105;ma&#103;r&#064;h&#111;t&#109;&#097;i&#108;&#046;&#099;&#111;m" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-user_email" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"></path></svg></span></a></div>
</div>
</div>
<p><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fwww.cloudcorner.gr%2Fmicrosoft%2Fazure%2Fserverless-computing-check-your-expired-public-certificates%2F&amp;linkname=Serverless%20Computing%20%7C%20Check%20your%20expired%20public%20certificates" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_print" href="https://www.addtoany.com/add_to/print?linkurl=https%3A%2F%2Fwww.cloudcorner.gr%2Fmicrosoft%2Fazure%2Fserverless-computing-check-your-expired-public-certificates%2F&amp;linkname=Serverless%20Computing%20%7C%20Check%20your%20expired%20public%20certificates" title="Print" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fwww.cloudcorner.gr%2Fmicrosoft%2Fazure%2Fserverless-computing-check-your-expired-public-certificates%2F&#038;title=Serverless%20Computing%20%7C%20Check%20your%20expired%20public%20certificates" data-a2a-url="https://www.cloudcorner.gr/microsoft/azure/serverless-computing-check-your-expired-public-certificates/" data-a2a-title="Serverless Computing | Check your expired public certificates"><img src="https://static.addtoany.com/buttons/share_save_171_16.png" alt="Share"></a></p><p>The post <a href="https://www.cloudcorner.gr/microsoft/azure/serverless-computing-check-your-expired-public-certificates/">Serverless Computing | Check your expired public certificates</a> appeared first on <a href="https://www.cloudcorner.gr">Apostolidis Cloud Corner</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.cloudcorner.gr/microsoft/azure/serverless-computing-check-your-expired-public-certificates/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
