<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: ABHIRAM P JAYAN</title>
    <description>The latest articles on DEV Community by ABHIRAM P JAYAN (@abhirampjayan).</description>
    <link>https://dev.to/abhirampjayan</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F378164%2F47798b8c-0508-4de5-b596-83acada87b25.png</url>
      <title>DEV Community: ABHIRAM P JAYAN</title>
      <link>https://dev.to/abhirampjayan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abhirampjayan"/>
    <language>en</language>
    <item>
      <title>Generate RSA Keypair Using OpenSSL</title>
      <dc:creator>ABHIRAM P JAYAN</dc:creator>
      <pubDate>Thu, 02 Sep 2021 14:23:42 +0000</pubDate>
      <link>https://dev.to/abhirampjayan/generate-rsa-keypair-using-openssl-h1o</link>
      <guid>https://dev.to/abhirampjayan/generate-rsa-keypair-using-openssl-h1o</guid>
      <description>&lt;p&gt;OpenSSL is a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library. OpenSSL is licensed under an Apache-style license, which basically means that you are free to get and use it for commercial and non-commercial purposes subject to some simple license conditions. OpenSSL can generate several kinds of public/private keypairs. &lt;strong&gt;RSA&lt;/strong&gt; is the most common kind of keypair generation.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TrzQTePP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oymnlh9ofjpycqxp91t3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TrzQTePP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oymnlh9ofjpycqxp91t3.png" alt="Security Image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Generate an RSA keypair with a 2048 bit private key
&lt;/h2&gt;

&lt;p&gt;Execute command: &lt;code&gt;openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048&lt;/code&gt; (previously &lt;code&gt;openssl genrsa -out private_key.pem 2048&lt;/code&gt;)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openssl genpkey &lt;span class="nt"&gt;-algorithm&lt;/span&gt; RSA &lt;span class="nt"&gt;-out&lt;/span&gt; private_key.pem &lt;span class="nt"&gt;-pkeyopt&lt;/span&gt; rsa_keygen_bits:2048
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Make sure to prevent other users from reading your key by executing &lt;code&gt;chmod go-r private_key.pem&lt;/code&gt; afterward.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Extracting the public key from an RSA keypair
&lt;/h2&gt;

&lt;p&gt;Execute command: &lt;code&gt;openssl rsa -pubout -in private_key.pem -out public_key.pem&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openssl rsa &lt;span class="nt"&gt;-pubout&lt;/span&gt; &lt;span class="nt"&gt;-in&lt;/span&gt; private_key.pem &lt;span class="nt"&gt;-out&lt;/span&gt; public_key.pem
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A new file is created, &lt;code&gt;public_key.pem&lt;/code&gt;, with the public key.&lt;/p&gt;

&lt;h2&gt;
  
  
  OpenSSL Commands to Convert SSL Certificates on Your Machine
&lt;/h2&gt;

&lt;p&gt;It is highly recommended that you convert to and from &lt;code&gt;.pfx&lt;/code&gt; files on your own machine using OpenSSL so you can keep the private key there. Use the following OpenSSL commands to convert SSL certificate to different formats on your own machine:&lt;/p&gt;

&lt;h3&gt;
  
  
  OpenSSL Convert PEM
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Convert PEM to DER&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openssl x509 &lt;span class="nt"&gt;-outform&lt;/span&gt; der &lt;span class="nt"&gt;-in&lt;/span&gt; certificate.pem &lt;span class="nt"&gt;-out&lt;/span&gt; certificate.der
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Convert PEM to P7B&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openssl crl2pkcs7 &lt;span class="nt"&gt;-nocrl&lt;/span&gt; &lt;span class="nt"&gt;-certfile&lt;/span&gt; certificate.cer &lt;span class="nt"&gt;-out&lt;/span&gt; certificate.p7b &lt;span class="nt"&gt;-certfile&lt;/span&gt; CACert.cer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Convert PEM to PFX&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openssl pkcs12 &lt;span class="nt"&gt;-export&lt;/span&gt; &lt;span class="nt"&gt;-out&lt;/span&gt; certificate.pfx &lt;span class="nt"&gt;-inkey&lt;/span&gt; privateKey.key &lt;span class="nt"&gt;-in&lt;/span&gt; certificate.crt &lt;span class="nt"&gt;-certfile&lt;/span&gt; CACert.crt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  OpenSSL Convert DER
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Convert DER to PEM&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openssl x509 &lt;span class="nt"&gt;-inform&lt;/span&gt; der &lt;span class="nt"&gt;-in&lt;/span&gt; certificate.cer &lt;span class="nt"&gt;-out&lt;/span&gt; certificate.pem
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  OpenSSL Convert P7B
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Convert P7B to PEM&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openssl pkcs7 &lt;span class="nt"&gt;-print_certs&lt;/span&gt; &lt;span class="nt"&gt;-in&lt;/span&gt; certificate.p7b &lt;span class="nt"&gt;-out&lt;/span&gt; certificate.cer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Convert P7B to PFX&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openssl pkcs7 &lt;span class="nt"&gt;-print_certs&lt;/span&gt; &lt;span class="nt"&gt;-in&lt;/span&gt; certificate.p7b &lt;span class="nt"&gt;-out&lt;/span&gt; certificate.cer
openssl pkcs12 &lt;span class="nt"&gt;-export&lt;/span&gt; &lt;span class="nt"&gt;-in&lt;/span&gt; certificate.cer &lt;span class="nt"&gt;-inkey&lt;/span&gt; privateKey.key &lt;span class="nt"&gt;-out&lt;/span&gt; certificate.pfx &lt;span class="nt"&gt;-certfile&lt;/span&gt; CACert.cer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  OpenSSL Convert PFX
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Convert PFX to PEM&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openssl pkcs12 &lt;span class="nt"&gt;-in&lt;/span&gt; certificate.pfx &lt;span class="nt"&gt;-out&lt;/span&gt; certificate.cer &lt;span class="nt"&gt;-nodes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>rsa</category>
      <category>openssl</category>
      <category>keypairs</category>
      <category>cryptography</category>
    </item>
  </channel>
</rss>
