<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Rakesh Cherukuri]]></title><description><![CDATA[Decoding Computers, One Subject at a Time! 💻🔍]]></description><link>https://srebytes.xyz</link><generator>RSS for Node</generator><lastBuildDate>Fri, 01 May 2026 23:46:25 GMT</lastBuildDate><atom:link href="https://srebytes.xyz/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[How i passed Terraform Certified Associate-002]]></title><description><![CDATA[Recently, I embarked on a journey to become Terraform Certified Associate - and I'm thrilled to share my experience and resources with you!
My Learning Path:
My journey to becoming Terraform Certified started with enrolling in the Udemy course "Terra...]]></description><link>https://srebytes.xyz/how-i-passed-terraform-certified-associate-002</link><guid isPermaLink="true">https://srebytes.xyz/how-i-passed-terraform-certified-associate-002</guid><category><![CDATA[terraform-exam]]></category><category><![CDATA[Terraform]]></category><dc:creator><![CDATA[Rakesh Cherukuri]]></dc:creator><pubDate>Tue, 20 Feb 2024 18:03:37 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1708452082044/475952d6-bccf-4ab4-be26-e75d2dc2118c.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Recently, I embarked on a journey to become Terraform Certified Associate - and I'm thrilled to share my experience and resources with you!</p>
<h3 id="heading-my-learning-path">My Learning Path:</h3>
<p>My journey to becoming Terraform Certified started with enrolling in the Udemy course "Terraform - Beginner to Advanced" by Zeal Vora. This comprehensive course provided me with a solid foundation in Terraform, covering everything from the basics to advanced topics like modules, workspaces, and state management. Zeal's clear explanations and hands-on examples were instrumental in my learning journey.</p>
<p>Key Topics Covered:</p>
<ol>
<li><p>Introduction to Terraform and Infrastructure as Code (IaC)</p>
</li>
<li><p>Setting up Terraform Environment</p>
</li>
<li><p>Terraform Configuration Language (HCL)</p>
</li>
<li><p>Managing Resources with Terraform</p>
</li>
<li><p>Modules and Reusability</p>
</li>
<li><p>Workspaces and State Management</p>
</li>
<li><p>Best Practices and Advanced Topics</p>
</li>
</ol>
<h3 id="heading-hands-on-practice">Hands-on Practice:</h3>
<p>To reinforce my understanding and gain practical experience, I extensively worked on projects using Terraform. One invaluable resource that I leveraged was the Ministry of Justice's Modernisation Platform <a target="_blank" href="https://github.com/ministryofjustice/modernisation-platform/tree/main/terraform">repository</a> on GitHub. This repository contains real-world Terraform configurations used by the Ministry of Justice, providing hands-on experience with complex infrastructure setups and best practices.</p>
<h3 id="heading-preparation-for-the-exam">Preparation for the Exam:</h3>
<p>After completing the Udemy course and gaining hands-on experience, I felt confident to tackle the Terraform Certified Associate exam. However, I also invested time in reviewing the official Terraform documentation, especially the <a target="_blank" href="https://developer.hashicorp.com/terraform/tutorials/">tutorials</a> and Configuration Language documentation. Additionally, I practiced with sample exam questions and scenarios to familiarize myself with the exam format and content.</p>
<h3 id="heading-exam-day">Exam Day:</h3>
<p>On the eve of the exam, ensuring I had a good night's sleep was a priority. Waking up refreshed and with a clear mind, I approached the exam day with confidence. The exam itself was structured around multiple-choice questions, thoroughly probing a range of Terraform concepts, commands, and best practices</p>
<h3 id="heading-conclusion">Conclusion:</h3>
<p>Becoming Terraform Certified Associate has been a rewarding journey, and I'm grateful for the resources and support that helped me along the way. If you're aspiring to become Terraform Certified, I highly recommend Zeal Vora's Udemy course and hands-on practice with real-world projects like the Ministry of Justice's Modernisation Platform repository.</p>
]]></content:encoded></item><item><title><![CDATA[TLS/SSL Certificates. Why/What/How?]]></title><description><![CDATA[WHY?
Let’s begin with acronyms-
TLS — Transport Layer Security
SSL — Secure Socket Layer
When sending and receiving traffic through Internet (which basically is group of computers connected together) , any computer on the path could read what you are...]]></description><link>https://srebytes.xyz/tls-ssl-certificates-why-what-how</link><guid isPermaLink="true">https://srebytes.xyz/tls-ssl-certificates-why-what-how</guid><category><![CDATA[SSL]]></category><category><![CDATA[SSL Certificate]]></category><category><![CDATA[SSL/TLS]]></category><category><![CDATA[Free SSL Certificate]]></category><dc:creator><![CDATA[Rakesh Cherukuri]]></dc:creator><pubDate>Tue, 23 Jan 2024 17:32:54 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1706044474652/23054574-64f0-4352-a8e7-5d16f9117ae0.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<hr />
<h1 id="heading-why"><strong><em>WHY?</em></strong></h1>
<p><strong>Let’s begin with acronyms-</strong></p>
<p><em>TLS — Transport Layer Security</em></p>
<p><em>SSL — Secure Socket Layer</em></p>
<p>When sending and receiving traffic through Internet (which basically is group of computers connected together) , any computer on the path could read what you are sending to the destination or receiving from it.</p>
<p>So, security experts developed an encryption protocol to send and receive sensitive data on the internet. That how SSL is born. It was developed at Netscape in 1990's.</p>
<p>Later on, SSL 3.1 version was later developed into TLS(Transport Layer Security) 1.0 with the name changed to indicate that it no longer associated to netscape. Because of this SSL and TLS terms are interchangeably used.</p>
<iframe src="https://docs.google.com/forms/d/e/1FAIpQLSdjhtulvpvUnG0kMt9yrJw9onNifw7iyWrRt288ZQH1uQAlfg/viewform?embedded=true" width="100%" height="600">Loading…</iframe>

<h1 id="heading-what"><strong><em>WHAT?</em></strong></h1>
<h3 id="heading-q-what-is-a-tls-certificate"><strong>Q. What is a TLS certificate?</strong></h3>
<p>A TLS certificate is <em>certificate</em> is issued by the Certificate Authority(CA) to the person or business who owns a domain.</p>
<h3 id="heading-q-what-is-a-certificate-authority"><strong>Q. What is a Certificate Authority?</strong></h3>
<p>Certificate Authority is a <em>trusted entity</em> responsible for issuing digital Certificates. Digital Certificates are used to verify the identity of individuals, servers, and other entities on internet.</p>
<p>There are several CAs like DigiCert, Lets Encrypt, GoDaddy, Amazon Trust Services, GlobalSign.</p>
<h3 id="heading-q-how-can-anyone-create-a-certificate-authority"><strong>Q. How can anyone create a Certificate Authority?</strong></h3>
<p>The approval process to become a Certificate Authority involves various steps and entities, and depends on the industry and the CA itself. The general view is that it need to comply with guidelines of :</p>
<ul>
<li><p>Browser and Operating System Vendors</p>
</li>
<li><p>Certification Authorities/Browser Forum (CA/B Forum)</p>
</li>
<li><p>WebTrust Audits</p>
</li>
<li><p>Cross-Signing by Existing CAs</p>
</li>
<li><p>Compliance with Industry Standards</p>
</li>
</ul>
<hr />
<p>To view a SSL certificate for a domain , Simply type the domain in the chrome browser, and click on the <em>tune</em> icon (replaces the lock icon) in the address bar.</p>
<p><img src="https://cdn-images-1.medium.com/max/1600/1*6PX2arIE8NVfI7tDndmMlw.png" alt /></p>
<p>You can see all the certificate details by the following these steps:<br />Connection is secure → Certificate is Valid.</p>
<p>The Certificate usually contains the following Sections:</p>
<p><img src="https://cdn-images-1.medium.com/max/1600/1*tTWhnuXgzL_QLGeEqXS2JA.png" alt /></p>
<h3 id="heading-q-what-are-types-of-ssl-certificates-and-how-are-they-classified"><strong>Q. What are types of SSL certificates and how are they classified?</strong></h3>
<p>There are two types:<br />1. Self-Signed Certificates<br />2. Trusted CA signed certificates</p>
<p>and are in turn classified based on the validation performed by CA while issuing certificate and the number of domains they secure.</p>
<p>Certificate based on validation level:</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td><strong>Certificate Type</strong></td><td><strong>Level of Validation</strong></td><td><strong>Verification Process</strong></td><td><strong>Example of Use</strong></td></tr>
</thead>
<tbody>
<tr>
<td>Domain Validated (DV)</td><td>Lowest</td><td>- Verification of control over the domain either through email confirmation or DNS record placement.</td><td>Personal blogs, small websites, internal systems</td></tr>
<tr>
<td>Organization Validated (OV)</td><td>Moderate</td><td>- Domain ownership verification.</td><td></td></tr>
<tr>
<td>- Checks on the organization’s legal existence and operational status. - Verification of organization’s name, address, and phone number.</td><td>E-commerce websites, corporate websites</td><td></td><td></td></tr>
<tr>
<td>Extended Validated (EV)</td><td>Highest</td><td>- Thorough checks on domain ownership. - Organization identity and legal existence verification. - Standardized verification process, including legal documents and direct communication.</td><td>Financial institutions, major e-commerce platforms</td></tr>
</tbody>
</table>
</div><p>Certificates based on number of domains they secure:</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td><strong>Certificate Type</strong></td><td><strong>Description</strong></td><td><strong>Example Usage</strong></td></tr>
</thead>
<tbody>
<tr>
<td>Single Domain</td><td>Issued for a single, specific domain.</td><td><code>www.example.com</code></td></tr>
<tr>
<td>Wild Card</td><td>Issued for a domain and all its subdomains, denoted by an asterisk (*) as the leftmost label</td><td><code>.example.com, .app.example.com</code></td></tr>
<tr>
<td>Multi-Domain (SAN/UCC)</td><td>Includes multiple domains in a single certificate, also known as Subject Alternative Name.</td><td><code>www.example.com, mail.example.net, secure.example.or</code><a target="_blank" href="http://secure.example.org"><code>g</code></a></td></tr>
</tbody>
</table>
</div><ul>
<li>To learn more: <a target="_blank" href="https://aboutssl.org/type-of-ssl/">type-of-ssl</a></li>
</ul>
<h1 id="heading-how"><strong>HOW?</strong></h1>
<h3 id="heading-q-how-to-generate-a-self-signed-tlsssl-certificate"><strong>Q. How to generate a Self Signed TLS/SSL Certificate?</strong></h3>
<p>Below are the steps required to create self signed certificate</p>
<ul>
<li><p>Private Key Generation</p>
</li>
<li><p>Certificate Signing Request Generation</p>
</li>
<li><p>Self Signed Certificate Generation</p>
</li>
<li><p>Certificate Verfification</p>
</li>
</ul>
<p>For this purpose, we use an OpenSSL an open source tool tool for TLS/SSL protocols. If you don't have OpenSSL in your system, install using your system package manager.</p>
<pre><code class="lang-bash"><span class="hljs-comment"># To  check if pre installed</span>
openssl -v
<span class="hljs-comment"># To install on mac</span>
brew install openssl
<span class="hljs-comment"># To install on Debian/Ubuntu</span>
sudo apt-get update
sudo apt-get install openssl
</code></pre>
<ol>
<li>Once you have OpenSSL installed, create a private key using the following command</li>
</ol>
<pre><code class="lang-bash">openssl genpkey -algorithm RSA -out my_private_key.pem
<span class="hljs-comment"># genpkey -&gt; generate private key</span>
<span class="hljs-comment"># -algorithm -&gt; algorithm to use for key generation. you can use stronger algorithms like Elliptic Curve Cryptography or others</span>
<span class="hljs-comment"># -out -&gt; specifies the output file</span>
</code></pre>
<ol>
<li>Use the following command to generate a Certificate Signing Request(CSR)</li>
</ol>
<pre><code class="lang-bash">openssl req -new -key my_private_key.pem -out my_new_csr.pem
<span class="hljs-comment"># req -&gt; specifies operation is related certificate requests(CSR)</span>
<span class="hljs-comment"># new -&gt; indicates new csr being created</span>
<span class="hljs-comment"># key -&gt; specifies your private key</span>
<span class="hljs-comment"># out -&gt; specifies ouput file that contains the CSR</span>
</code></pre>
<p>Once you run the command, you will be asked to fill the some details. I am attaching a sample screen shot of the values i entered when i ran the above command</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1705449457642/02f08ad3-ba27-4141-aaf4-06c784afe83a.png" alt class="image--center mx-auto" /></p>
<ol>
<li>Use the following command to generate Self Signed Certificate</li>
</ol>
<pre><code class="lang-bash">openssl x509 -req -<span class="hljs-keyword">in</span> my_new_csr.pem -signkey my_private_key.pem -out my_cert.pem

<span class="hljs-comment"># x509 -&gt; specifies that you are working with X.509 certificates, which are the standard format for public key certificates.</span>
<span class="hljs-comment"># -req -&gt; indicates that you are working with a certificate signing request (CSR). The CSR is a request sent to a Certificate Authority (CA) to obtain a digital certificate.</span>
<span class="hljs-comment"># -in -&gt; specifies input file for the command, which is your CSR containing all the entity values</span>
<span class="hljs-comment"># -signkey -&gt; specifies the private key to sign the certificate</span>
<span class="hljs-comment"># -out -&gt; specifies the output file which contains the certificate</span>
</code></pre>
<ol>
<li>Use the following command to verify the certificate</li>
</ol>
<pre><code class="lang-bash">openssl x509 -text -noout -<span class="hljs-keyword">in</span> my_cert.pem
<span class="hljs-comment"># -text -&gt; outputs the certificate in human readable format</span>
<span class="hljs-comment"># -noout -&gt; tells openssl not to output encoded data</span>
<span class="hljs-comment"># -in -&gt; input file for open ssl</span>
</code></pre>
<h3 id="heading-q-how-to-generate-trusted-ca-signed-certificates"><strong>Q. How to generate trusted CA signed certificates?</strong></h3>
<p>There are several sites that provide SSL Certificates such as DigiCert, GoDaddy, Sectigo, SSL.com. I am going to use <em>Lets Encrypt</em> which provides free SSL certificates. The steps are:</p>
<ul>
<li><p><strong>Ensure You Have a Domain:</strong></p>
<ul>
<li>You need a registered domain for which you want to obtain an SSL certificate. Ensure that your domain is correctly configured and pointing to the server where your website is hosted.</li>
</ul>
</li>
<li><p><strong>Access Your Server:</strong></p>
<ul>
<li>You need SSH access to your server. Log in using your preferred SSH client.</li>
</ul>
</li>
<li><p><strong>Install Certbot:</strong></p>
<ul>
<li><p>Certbot is the recommended client for obtaining Let's Encrypt certificates.</p>
<ul>
<li><p><strong>For Ubuntu/Debian:</strong></p>
<pre><code class="lang-bash">  sudo apt-get update
  sudo apt-get install certbot
</code></pre>
</li>
</ul>
</li>
</ul>
</li>
<li><p><strong>Obtain a Wildcard Certificate:</strong></p>
<ul>
<li><p>To obtain a wildcard certificate, you'll need to use the DNS-01 challenge method, which involves proving that you control the DNS records for your domain. Here is an example command:</p>
<pre><code class="lang-bash">  sudo certbot certonly --manual --preferred-challenges=dns -d *.yourdomain.com
</code></pre>
<p>  Replace <a target="_blank" href="http://yourdomain.com"><code>yourdomain.com</code></a> with your actual domain.</p>
</li>
<li><p>Certbot will provide instructions on how to create a DNS TXT record for your domain. Follow these instructions carefully. You will need to add the TXT record to your DNS configuration.</p>
</li>
<li><p><strong>Verify DNS Configuration:</strong></p>
<ul>
<li>After adding the TXT record, wait for DNS propagation, and then press Enter to allow Certbot to verify the DNS configuration. Certbot will check if the TXT record is present before issuing the wildcard certificate.</li>
</ul>
</li>
<li><p><strong>Certificates and Key Locations:</strong></p>
<ul>
<li>Once the verification is successful, Certbot will generate the wildcard certificate and private key. The certificate files will be located in a directory like <code>/etc/letsencrypt/live/</code><a target="_blank" href="http://yourdomain.com/"><code>yourdomain.com/</code></a>. Note the paths to the <code>cert.pem</code>, <code>privkey.pem</code>, and <code>fullchain.pem</code> files.</li>
</ul>
</li>
<li><p><strong>Configure Your Web Server:</strong></p>
<ul>
<li>Update your web server configuration to use the newly obtained wildcard certificate. You may need to adjust the SSL configuration in your server settings.</li>
</ul>
</li>
<li><p><strong>Automate Renewal (Optional but Recommended):</strong></p>
<ul>
<li>Similar to a regular certificate, it's essential to set up automatic renewal for your wildcard certificate. Certbot typically configures this during installation, but you can verify it with the <code>sudo certbot renew --dry-run</code> command.</li>
</ul>
</li>
</ul>
</li>
</ul>
<hr />
<p>Credits: <em>I am grateful for the knowledge gained from both</em> <a target="_blank" href="https://aboutssl.org/"><em><mark>aboutssl.org </mark></em></a> <em>and ChatGPT. This blog is a testament to the collaborative learning environment fostered by these resources.</em></p>
]]></content:encoded></item></channel></rss>