Let's Encrypt is the first free and open CA. SSLForFree is the website which you can use to generate the SSL for your website using LetsEncrypt and here are steps.
Step 1: Go to www.sslforfree.com and register. After the registration visit the homepage of the website and enter the url you wish to create a certificate for (you will need to already own the domain), before clicking the "Create Free SSL Certificate" button. You can pass more than one domain (subdomains) in the same box with space in between.
Step 2: Click the Manual Verification (DNS) option.
Step 2: The section below will appear on the page after you clicked the button in the previous step. Click "Manual Verification (DNS)".
Step 3: You will now see a section like below. Just go and Create the DNS Record onto the DNS Provider (GoDaddy/AWS etc)
Step 4: Create a new TXT record with the appropriate name and value that was given to you. In this example, I am creating SSL for two domains so I need to verify for two domains but you may need only for one.
For example, the screenshot above shows a name of _acme-challenge.queryhome.com so I will enter the host value of _acme-challenge (because the domain automatically gets appended), and a value of KOR4QIFCFuBJbRkkm8DYvtJWTxIKGIQa7Lf_8KWtGbc
Step 5: Click Submit
Once you see that the TXT record has propagated, click the Download SSL Certificate button and you will be shown your SSL certificate. Copy and paste the certificate, CA Bundle and private key into appropriate files or you can simply download them using download button available at the bottom and you are done.