2025年详解从p12证书提取RSA公私钥和序列号(小白向)

详解从p12证书提取RSA公私钥和序列号(小白向)前言 在工作中我们或多或少会接触对接外部系统 如微信支付宝 对接过程中又无可避免会对数据的加解密和加签验签 一般第三方会提供一个授权证书 让我们自行解密提取秘钥 为了让你拿到证书后不会像我当初一样一脸懵逼 咱们来看看如何从 p12 证书中提取公私钥 什么是 p12 证书

大家好,我是讯享网,很高兴认识大家。

前言

在工作中我们或多或少会接触对接外部系统(如微信支付宝),对接过程中又无可避免会对数据的加解密和加签验签。一般第三方会提供一个授权证书,让我们自行解密提取秘钥。为了让你拿到证书后不会像我当初一样一脸懵逼,咱们来看看如何从p12证书中提取公私钥。

什么是p12证书

p12证书图示
讯享网
我们常说的p12证书全称是PKCS#12(Public-Key Cryptography Standards:公钥加密标准)

p12证书提取秘钥流程图

秘钥提取流程

提取流程详解

1. 提取证书序列号

我们可能听过“公钥序列号”、“私钥序列号”等说法,这都是错误的概念,只有证书才存在序列号。
一个最简单的办法,在Windows系统下直接双击p12证书导入证书。在输入密码后看到如下提示表示证书导入成功。
证书导入成功
然后Win+R打开命令行输入certmgr.msc打开
运行证书管理
按如下图即可找到证书序列号,至此证书序列号获取完毕。
在这里插入图片描述

2.提取原始秘钥

我们利用OpenSSL命令提取RSA原始密钥对。

openssl pkcs12 -in 你的证书.p12 -nocerts -nodes -out rsa_origin.key 

讯享网

该秘钥内容如下:

讯享网-----BEGIN PRIVATE KEY----- MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCxB/LNFITHme/a 此处省略N行 +naXDzKULrHVPtBYQkcGneZx2A2DLYBMupWI6EVw/anw9vLuhH8tVwuB77/1xQvf 4vngZlegOoSf2DQOcwU9z7A= -----END PRIVATE KEY----- 

提示输入证书口令后可得到原始秘钥rsa_origin.key,但仅有该秘钥是没用的,必须再从其中提取出公钥和私钥。

3.从原始秘钥提取RSA私钥

同样,利用OpenSSL命令提取RSA私钥

openssl rsa -in rsa_origin.key -out rsa_pkcs1.pem 

提取出私钥rsa_pkcs1.pem内容如下:

讯享网-----BEGIN RSA PRIVATE KEY----- MIIEowIBAAKCAQEAsQfyzRSEx5nv2pM/Lv0FXvohs+mSnzSOhK5C44PMXoGsAGmT 此处省略N行 cEYdpIoL/QDF5zz7lFDSOvryep+g1Pp2lw8ylC6x1T7QWEJHBp3mcdgNgy2ATLqV iOhFcP2p8Pby7oR/LVcLge+/9cUL3+L54GZXoDqEn9g0DnMFPc+w -----END RSA PRIVATE KEY----- 

此处注意,该秘钥为PKCS#1格式,在PHP下可直接使用,若为java环境,我们一般需要使用PKCS#8格式私钥,那么再来做一次转换。

openssl pkcs8 -topk8 -inform PEM -in rsa_pkcs1.pem -outform PEM -out rsa_private_pkcs8.pem -nocrypt 

通过该命令我们得到java下可用的RSA私钥

讯享网-----BEGIN PRIVATE KEY----- MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCxB/LNFITHme/a 此处省略N行 +naXDzKULrHVPtBYQkcGneZx2A2DLYBMupWI6EVw/anw9vLuhH8tVwuB77/1xQvf 4vngZlegOoSf2DQOcwU9z7A= -----END PRIVATE KEY----- 

至此RSA私钥提取完毕。

4.从原始秘钥提取RSA公钥
openssl rsa -in rsa_origin.key -pubout -out rsa_public_key.pem 

以上命令可提取出RSA公钥。
提示:RSA公钥不存在格式问题,可以直接使用。

讯享网-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsQfyzRSEx5nv2pM/Lv0F 此处省略N行 vucXimGLR2AS6yooZg3dcELsQmQ9tsoPdKB0IlGpZwp/XPf5Gxwia/WHJzS9PMjb bQIDAQAB -----END PUBLIC KEY----- 

至此RSA公钥提取完毕。

验证秘钥提取结果

我们可以使用在线RSA加解密工具,输入我们提取出的RSA公钥和私钥,在下方输入任何字符后点公钥加密,然后将密文覆盖到原文,点击私钥解密。若能得到原文说明RSA公私钥正确无误。
在线RSA公私钥加解密

本教程同时发布在我的公众号:Java学步园,欢迎加入JAVA初级交流群:,滑到最上面左侧扫描二维码哦~

小讯
上一篇 2025-02-15 09:06
下一篇 2025-03-10 22:54

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/27058.html