使用openssl生成的私钥不是以 BEGIN RSA PRIVATE KEY 开头,而是以BEGIN PRIVATE KEY开头

Posted 环游世界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用openssl生成的私钥不是以 BEGIN RSA PRIVATE KEY 开头,而是以BEGIN PRIVATE KEY开头相关的知识,希望对你有一定的参考价值。

 

一、背景

       项目上需要对密码进行加密解密(项目中有一对秘钥,但是因为某种原因需要替换掉),需要使用openssl生成rsa算法的一对秘钥,本地是windows环境,没有openssl工具,所以找到官网下载openssl工具。

  https://slproweb.com/products/Win32OpenSSL.html

  但是每次生成的私钥都是以BEGIN PRIVATE KEY开始,放到项目中,无法使用(项目中原有的私钥是以BEGIN RSA PRIVATE KEY开始)。生成公钥私钥的命令参考:

openssl生成公钥私钥

  

二、问题解决

  尝试过网上说的几种方式,都没有解决,最后找了一台服务器生成私钥,是以BEGIN RSA PRIVATE KEY开始,将生成的密钥对配置到项目中,可以解决问题。

  然后看了下服务器上的openssl版本,发现是1.1.1,而我下载的版本是3.1.0(尝试过3.0.8也不能用)。

  下载了1.1.1版本的openssl后,生成的私钥可以使用了。

 

使用OpenSSL生成私钥 Private Key 以及根据Private Key创建证书

公钥和私钥通常是成对出现的,有了公钥那就存在对应的私钥,通常OpenSSL,公钥是很容易从私钥中得到的,因而我们要创建证书,那我们首先要做的就是创建私钥。


1、使用OpenSSL生成私钥
常用的生成算法有RSA及DSA,RSA生成的私钥可以用来加密以及签名,而DSA生成的私钥只可以用来签名
1.1)、RSA算法生成key的示例
 openssl genrsa -des3 -out privkey.pem 2048
 
genrsa:指定了生成了算法使用RSA
-desc:表示生成的key是有密码保护的(注:如果是将生成的key与server的证书一起使用,最好不需要密码,就是不要这个参数,否则其它人就会在请求的时候每次都要求输入密码)
-out:后面的参数表示生成的key的输入文件
2048:表示的是生成key的大小,单为字节(bits)
1.2)、DSA算法生成key的示例
根据DSA算法生成Key需要两步:
1.2.1)、第一步是生成用于生成Key的参数:
 openssl dsaparam -out dsaparam.pem 2048
1.2.2)、根据生成的参数生成Key:
openssl gendsa -des3 -out privkey.pem dsaparam.pem

详细参见:http://www.openssl.org/docs/HOWTO/keys.txt


2、使用OpenSSL创建证书申请及自签名证书
在第1步中,我们已经创建好了私钥,这个时候我们就可以使用创建好的private.pem来创建证书申请及自签名证书。


2.1) 创建证书申请
openssl req -new -key privkey.pem -out cert.csr
使用上面的命令就会创建一个证书申请,这里我们会要求输入国家、组织、姓名等信息,但是不会要求输入证书有效天数,因为证书有效天数是CA认证中心给我们的;然后我们会把这个生成好的cert.csr(Certificate Signing Request (CSR):证书签名申请)发给CA认证中心。
CA认证中心通过后,会反馈(通常是邮件)回来认证的信息,再导入即可。
关于导出CSR以及导入CA认证信息,可以参看文档:http://docs.oracle.com/javase/1.4.2/docs/tooldocs/windows/keytool.html


2.2) 创建自签名的证书
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095
如果不需要第三方授权,或者是要创建一个用于测试的授权,我们就可以这样操作。后面的参数"-days 1095"表示授权天数为1095天。


详细参见:http://www.openssl.org/docs/HOWTO/certificates.txt

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow







































以上是关于使用openssl生成的私钥不是以 BEGIN RSA PRIVATE KEY 开头,而是以BEGIN PRIVATE KEY开头的主要内容,如果未能解决你的问题,请参考以下文章

使用OpenSSL生成私钥 Private Key 以及根据Private Key创建证书

如何在不使用 OpenSSL 的情况下使用私钥导出 base64 编码的 x.509 证书

如何使用openssl生成RSA公钥和私钥对 / 蓝讯

使用openssl 生成RSA公钥和私钥

openssl生成RSA公钥和私钥对

openssl生成RSA公钥和私钥