openssl和ssh-keygen对证书的相互转换

我们平时使用ssh-keygen生成的ssh免密证书,其实和openssl生成的是一样,只不过是不同格式的体现,仔细观察私钥是一样的,可以通过命令进行转换和查看。

从私钥提取公钥

如果您只有私钥文件,而没有公钥文件,您可以通过以下步骤间接提取SSH OpenSSH公钥。
首先,使用OpenSSL命令从私钥文件中提取OpenSSL格式的公钥:

1
openssl rsa -in private_key -outform PEM -pubout -out public_key.pem

接下来,将公钥转换为OpenSSH格式的公钥。使用以下命令,这将会将OpenSSL格式的公钥转换为OpenSSH格式的公钥,并保存在public_key.pub文件中。 现在,您可以使用文本编辑器打开public_key.pub文件,复制公钥内容以供使用。

1
ssh-keygen -i -m PKCS8 -f public_key.pem > public_key.pub

或者直接使用ssh-keygen提取:

1
ssh-keygen -y -e -f private_key > public_key.pub

查看公钥信息

使用OpenSSL命令查看公钥的信息,可以看到包括公钥算法、模数(Modulus)和指数(Exponent)等:

1
openssl rsa -in public_key.pem -pubin -text -noout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Public-Key: (2048 bit)
Modulus:
00:eb:9e:ea:66:1f:17:1d:58:e4:94:21:c3:70:6f:
7f:23:05:9d:b2:04:7e:49:49:03:68:c3:16:ba:da:
71:bc:1e:b0:8a:3d:45:69:8f:e9:f1:8b:d3:e0:f2:
c0:85:be:67:1f:b9:c1:cf:3d:22:ed:71:83:19:b1:
8c:19:d4:72:1f:d4:15:21:d2:aa:3c:f1:aa:08:ad:
9a:a0:13:bf:e1:1d:05:21:7e:5a:ad:60:f6:10:70:
b6:5d:80:7e:47:71:ec:47:b5:a0:da:1e:c1:16:4e:
4e:cf:7b:1b:f4:93:be:fb:d5:11:aa:01:80:b2:56:
ab:93:b8:db:0b:1f:ca:3d:09:8a:91:3d:00:ed:e4:
51:b9:80:e7:bf:98:59:2f:f3:c3:b4:ea:ec:2f:52:
2e:74:42:45:bc:df:db:7a:c9:f2:c6:74:7f:79:b4:
0a:ba:0a:90:4c:8a:17:a5:e1:b4:fd:87:2b:21:c0:
28:e0:89:dd:d7:a1:e5:5a:74:85:92:02:3e:99:0b:
68:44:90:6a:7e:04:e1:af:a1:cc:ee:fb:ef:8b:be:
bd:10:85:0c:eb:a7:82:00:69:cc:a2:24:4c:cb:9c:
07:d3:4e:45:08:38:97:61:1a:13:68:67:79:ec:c4:
4c:7f:4e:35:fc:fb:a0:2b:0f:ad:14:c2:d8:d8:a1:
c3:ef
Exponent: 65537 (0x10001)

如果公钥是以其他格式(如OpenSSH格式)保存的,可以先将其转换为PEM格式,然后再使用上述命令查看公钥信息。例如

1
ssh-keygen -f public_key.pub -e -m pem > public_key.pem
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2018-2024 Outsrkem
  • 访问人数: | 浏览次数:

      请我喝杯咖啡吧~

      支付宝
      微信