How to generate RSA public and private keys with OpenSSL
Before anything, I assume that you already have OpenSSL installed in your PC. In case you don’t and you are a Windows you can download it from this URLs:
- http://slproweb.com/products/Win32OpenSSL.html
- http://gnuwin32.sourceforge.net/packages/openssl.htm
I personally used the first one. After you are done with the installation follow this steps:
- Open a command line window and run the following command:
openssl genrsa -out priv1024.pem 1024
Your console output should look similar to this:
E:\NodeJS>openssl genrsa -out priv1024.pem 1024 Generating RSA private key, 1024 bit long modulus .......................++++++ .........++++++ e is 65537 (0x10001)
- Now that we have a 1024 bit private key in PEM format we have to extract the public key from it and save it to a different file. For that just run this command:
openssl rsa -in priv1024.pem -outform PEM -pubout -out pub1024.pem
Your console output should be similar to this:
E:\NodeJS>openssl rsa -in priv1024.pem -outform PEM -pubout -out pub1024.pem writing RSA key
That’s it, now we have a RSA key pair in PEM format ready to be used. Depending on the key size specified, and the resources available on your computer, the generation of a key can take more time. Here is an example of how the files look:
E:\NodeJS>more priv1024.pem -----BEGIN RSA PRIVATE KEY----- MIICWgIBAAKBgQC/gvPLdlTe4uwrHzPfj/gTj6QghOL1gC0padG6Qp/totpWIluQ hgqfR1/X9vNbNxx1N88e1S/i2wtfFxfBZAcayoVOJwsikGWuRb2Z+OZDP2R2Qegh SE0VBL74RsMpcfSPP9MsJ66ZMEyEFFBAlSvEJgvnpbVQljFj0jgRNA6KTwIDAQAB An8sIwIM4jitJZ9IUOijnYqO94vb8sRb0C6YXMr5ImG5Ys7vCvwPUtUf4FM2crOj UhA885/Ie1mN7u2v/KJ875CzNdnf+1YYyuIBwl2fQuAS2vaEDkVqzT0T+4GA9x6j DCbkOVbtju6zox2sqsr3xugzcDSPVA6UHc3Cm0xoL3j5AkEA5VD8z4F/mZ1/QbpV LunE1QBqq/myAxvx/LbCw6nkaWBqxOx+PE+OV2Zivad8tDwnxYpjXbnDpnMv6rLU Ff7qlQJBANXLz+XOuBmU/IA6BVKs8GXkmrDjtGC4KsATHcXRO6FcACMebUcYfYc/ 5YizBtR2NxT7BCKYKGM8kZTTSAjjjFMCQD2BjW1yxHDFZ56Phc2BcgPXisT5wh9H XY50zqSAav1AmSKcc/dlNz6F/bH0vGPzRo+bYK+A5dM9TfrbYDtOFkkCQQDUz5py wxFIDaBFtvtjb1ef5S0B1LbQ66FKLf0d0obLuHs+eeQGt98DyNue9a1fwQhVLwPP t6vEFB9JiAIVLwOXAkBneT454XNDIH2+4l5zyDAZCBWDR/mwlKpNv54ORdUZWlxK 5Fun+9bK5NFE5SHj/f8dkMosHPRWg2ZaK/Az7+zJ -----END RSA PRIVATE KEY----- E:\NodeJS>more pub1024.pem -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/gvPLdlTe4uwrHzPfj/gTj6Qg hOL1gC0padG6Qp/totpWIluQhgqfR1/X9vNbNxx1N88e1S/i2wtfFxfBZAcayoVO JwsikGWuRb2Z+OZDP2R2QeghSE0VBL74RsMpcfSPP9MsJ66ZMEyEFFBAlSvEJgvn pbVQljFj0jgRNA6KTwIDAQAB -----END PUBLIC KEY-----
Just for fun I generated a 8192 bit key pair. It took around 10 seconds.
E:\NodeJS>more priv8192.pem -----BEGIN RSA PRIVATE KEY----- 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 -----END RSA PRIVATE KEY----- E:\NodeJS>more pub8192.pem -----BEGIN PUBLIC KEY----- MIIEIjANBgkqhkiG9w0BAQEFAAOCBA8AMIIECgKCBAEArWVyl6FmMZnUz3vzA4Al SF501WZ6Rs1qB8qmvtfF9ihxr5OMIZhdJnAt7HMk8wn7ZWQwN2xZeUSOYnHuAC39 LvajcsTIJwmluCSuzP33cB4P6uhzSP6Wwf3aaHuuRUt6nw32iRwtSvCnRPI5L74E 2gp2H19fM4Wd9IWwAAjesbN0vNqo7HBUaYOumLQQDEOxKtiUrn/CwE7zABFEdCn4 awTxhhm9CpIjBlcqBCUYMfoMB7SOmOCWLbBkCHoome9WnkwcFcSLMSH+om2Uzjh+ P+lOda+mZpLqcHEiwkPuRTT3UHRps9/yPL52mWcG1933DxD/MMlgQvS/oOHCFWNm IKp4U0g5pxJtgf0AKpx8Ao/ai4DeM2CwmnrrOUYTnw3roQ1yz3mI5AMfm5vAxOcz DKSlJUEImQKwknXRXdEbnLfAe+IZDbg0Vk9OFm8Aza32SiMDwrg3A7vWo0O9PMwZ 9IaQ2isah0Db6/WFWuSsUb328OWt56MrBzwBh7ScCTmnXT7py6DJa5xj6s5M6pQX ++0zRjC/n2GF9BsbXtjDQ02FN71LoWHOohO6yixFkLZ2rQJtcMnpCaKz5EI0yTov Fnn/niR0qSU1E5zEZWK/dzDPOp7afvoqlp2JSges7TWpb+/miEok1z/vzfmZAoY0 UaR2Roe50uo230kMeVJBxEWEeBvhm10rOe8Z3Aj5uTw0OBQC0keSuC/hVAhJD/kI g+m133Dzj10nEeZx8minm3G3TBPXHKzG8bkTn9L7wh/kciHV12/uI5qXLwEgNwt3 Bh5S5/H33q4KCQXjry72N/0DtmrNopj4YlM6JFZ710jOXT849+LRn9xi0SYApx+p PsT97KEQIyYP0+RiDB26s+5VvYAY1pkn71dPyooyOq4XuP22+cPHastfmkSa0LYf 0tlSvc/4UO1U0aYZrqTFhO1pcyDxcnaln6JfQO2x1OLkcKogcxAY5VWySrXc2Euq lsGhrRavveivyBqroB8Bh3fnIlJYJTjki3PyUpNlOW4Glzuat0stMsflL8eHrrwC Wmtb9StEAZFNLkXVQkX4oK05vpLXgKgw/aIA+YVMs7EUHSKZMbZ8Z46yUp5GZKBQ p8BLve3/Xh6TdJ7NwIrpNddtJXCiqIuBxpIq1PH9RYKylSPPm3S/e/8P1mZBcr7E u8yh+6cQr1EZcOA2OJcC0qkZ22I9MOS+eePBXzsHhxS8hkDl9+JR08lUsB91b+/Q 9mQtt+ig2YLSEhQlqQWRoqRzhw7GpFGw8RK/L2oCuCOAJB/S1ubdlvgKs1lzBIoP 333qXNSxdK+7LPxUTNeQg4tN/B1NfbClKDwcEXIFLxHZPwF+g0GGf27gkeJbBvBo 4QIDAQAB -----END PUBLIC KEY-----
Well, this is the end.
Sources
- https://developers.yubico.com/PIV/Guides/Generating_keys_using_OpenSSL.html
[…] To get those you will have use OpenSSL, please take a look at this post How to generate RSA public and private keys with OpenSSL. […]