openssl从PFX导出私钥、公钥

本文详细介绍了如何使用openssl命令从pfx文件中提取密钥对,并进一步将其转换为私钥和公钥,适用于PKCS12模式的证书管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从pfx提取密钥信息,并转换为key格式(pfx使用pkcs12模式补足)

1、提取密钥对(如果pfx证书已加密,会提示输入密码。)
       openssl pkcs12 -in 1.pfx -nocerts -nodes -out 1.key

2、从密钥对提取私钥
       openssl rsa -in  1.key -out 1_pri.key

3、从密钥对提取公钥
       openssl rsa -in 1.key -pubout -out 1_pub.key

4、因为RSA算法使用的是pkcs8模式补足,需要对提取的私钥进一步处理

       openssl pkcs8 -in 1_pri.key -out 1_pri.p8 -outform der -nocrypt -topk8


### 如何从 PFX 文件中分别导出私钥公钥 #### 使用 OpenSSL 工具导出私钥 为了从 `.pfx` 文件中提取私钥,可以使用 `openssl` 命令行工具。该命令将读取指定的 `.pfx` 文件并从中分离出私钥部分,保存到新的文件中。 ```bash $ openssl pkcs12 -in myfile.pfx -nocerts -out private-key.pem -nodes ``` 这条命令会在当前工作目录下创建名为 `private-key.pem` 的新文件来存储未加密形式的私钥[^1]。 #### 使用 OpenSSL 工具导出公钥及其对应的证书 对于希望单独获得公钥的情况,则可以通过下面的方式先导出整个证书链: ```bash $ openssl pkcs12 -in myfile.pfx -clcerts -nokeys -out certificate.crt ``` 这一步骤会把所有的客户端认证证书写入至 `certificate.crt` 中。接着可以从这个证书文件里进一步解析得到具体的公钥信息[^2]。 #### Java 编程方式处理 PFX 文件中的密钥材料 除了通过命令行操作外,在Java应用程序内部也可以实现相同的功能。这里给出一段简单的代码片段用于加载由字节数组表示的`.pfx`数据,并访问其中包含的秘密密钥和其他相关信息。 ```java import java.security.KeyStore; // ... other imports ... public class PfxHandler { public static KeyStore getKeyStore(byte[] pfxData, String password) throws Exception { KeyStore ks = KeyStore.getInstance("PKCS12"); try (ByteArrayInputStream bis = new ByteArrayInputStream(pfxData)) { char[] nPassword = null; if ((password == null) || password.trim().isEmpty()) { nPassword = "".toCharArray(); } else { nPassword = password.toCharArray(); } ks.load(bis, nPassword); } return ks; } // Additional methods to extract keys from the keystore... } ``` 上述方法返回了一个已经装载好给定 `.pfx` 数据以及相应密码后的 `KeyStore` 对象实例,之后可以根据需要调用额外的方法去具体取出所需的私钥公钥[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值