使用OpenSSL生成PKCS#12格式的证书和私钥

2023-12-18 21:04

本文主要是介绍使用OpenSSL生成PKCS#12格式的证书和私钥,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

要使用OpenSSL生成PKCS12格式的证书和私钥,可以按照以下步骤进行操作:

1. 安装OpenSSL

首先,确保已在计算机上安装了OpenSSL。可以从OpenSSL官方网站(https://www.openssl.org/)下载并安装适用于您的操作系统的版本。这里简单总结下在 Windows 上安装 OpenSSL 步骤。

1.1 下载 OpenSSL

从 OpenSSL 官方网站(https://www.openssl.org/)下载最新版本的 OpenSSL。

1.2 安装 OpenSSL

运行下载的 OpenSSL 安装程序,并按照提示进行操作。在默认情况下,OpenSSL 将安装在 `C:\Program Files\OpenSSL` 目录下。

1.3 配置系统环境变量

在 Windows 操作系统中,需要将 OpenSSL 的路径添加到系统的环境变量中,以便能够从任何位置执行 OpenSSL 命令。请按照以下步骤进行操作:

   a. 右键单击“计算机”或“我的电脑”,然后选择“属性”。

   b. 点击“高级系统设置”,在弹出的对话框中选择“环境变量”。

   c. 在“系统变量”下找到“Path”变量并双击编辑。

   d. 在变量值的末尾输入 OpenSSL 的安装路径,例如 `;C:\Program Files\OpenSSL\bin`(请注意分号和路径中的空格)。然后点击“确定”。

1.4 验证安装

打开命令提示符并运行以下命令来验证是否成功安装了 OpenSSL:

openssl version

如果看到输出的 OpenSSL 版本号,则说明 OpenSSL 已成功安装并配置。


2. 生成私钥

打开终端或命令提示符,并运行以下命令来生成私钥文件:

openssl genpkey -algorithm RSA -out private.key

这将生成一个名为private.key的私钥文件。


3. 生成证书签名请求(CSR)

使用生成的私钥,运行以下命令生成CSR文件:

openssl req -new -key private.key -out csr.csr

这里将需要提供一些与证书相关的信息,例如组织名称、通用名称等。根据提示输入所需信息。


4. 自签名证书

如果您想生成自签名证书,可以使用以下命令生成证书:

openssl x509 -req -days 3650 -in csr.csr -signkey private.key -out certificate.crt

这将生成一个名为certificate.crt的自签名证书文件,并且该证书将在3650天后过期。您可以根据需要调整有效期限。


5. 生成PKCS12文件

现在,使用以下命令将私钥和证书合并到PKCS12文件中。这里有两种方式设置口令:

5.1 自定义口令方式

openssl pkcs12 -export -out certificate.p12 -inkey private.key -in certificate.crt

您将被要求设置一个密码以保护PKCS12文件。

5.2 强制口令方式

强制设置密码长度不是一个好的做法,因为这降低了密码的安全性。如果您坚持要设置8个1作为密码,可以使用以下命令:

openssl pkcs12 -export -out certificate.p12 -inkey private.key -in certificate.crt -passout pass:11111111

该命令将从名为 `private.key` 的私钥文件和名为 `certificate.crt` 的证书文件中生成一个 `.p12` 文件,并设置密码为八个数字 1。

    请注意,强制要求密码长度为 8 位数字并不是一种好的做法,因为这使得密码更容易被猜测或破解。建议您使用更长、更复杂的密码,并遵循最佳实践以确保密码的安全性。


6.使用 OpenSSL 查看 .p12 文件的内容

使用 OpenSSL 工具来查看 .p12 文件的内容。按以下步骤进行操作:

  • 打开终端或命令提示符,并导航到包含.p12文件的目录。
  •  运行以下命令来查看 .p12 文件的内容:

openssl pkcs12 -info -in certificate.p12

   此命令将显示 .p12文件中包含的证书和私钥的详细信息,例如颁发机构、有效期限等。

  查看刚才产生的certificate.p12文件内容如下:


E:\RJ\openssl\installed\OpenSSL-Win64\bin>
E:\RJ\openssl\installed\OpenSSL-Win64\bin>openssl pkcs12 -info -in certificate.p12
Enter Import Password:
MAC: sha256, Iteration 2048
MAC length: 32, salt length: 8
PKCS7 Encrypted data: PBES2, PBKDF2, AES-256-CBC, Iteration 2048, PRF hmacWithSHA256
Certificate bag
Bag AttributeslocalKeyID: AF C4 DE AF A0 97 88 29 AB 3E 45 B2 AE 50 E5 85 47 E7 27 77
subject=C = CN, ST = SC, L = CD, O = CETCCST, OU = CETCCST, CN = CETCCST
issuer=C = CN, ST = SC, L = CD, O = CETCCST, OU = CETCCST, CN = CETCCST
-----BEGIN CERTIFICATE-----
MIIDQTCCAikCFCbkxe+aDst30+2ajis12WN5oq3oMA0GCSqGSIb3DQEBCwUAMF0x
CzAJBgNVBAYTAkNOMQswCQYDVQQIDAJTQzELMAkGA1UEBwwCQ0QxEDAOBgNVBAoM
B0NFVENDU1QxEDAOBgNVBAsMB0NFVENDU1QxEDAOBgNVBAMMB0NFVENDU1QwHhcN
MjMxMjE3MDUzNzM3WhcNMjQxMjE2MDUzNzM3WjBdMQswCQYDVQQGEwJDTjELMAkG
A1UECAwCU0MxCzAJBgNVBAcMAkNEMRAwDgYDVQQKDAdDRVRDQ1NUMRAwDgYDVQQL
DAdDRVRDQ1NUMRAwDgYDVQQDDAdDRVRDQ1NUMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEApCugCrfRarsT6hVxQiBGdFokur5VOVPyy9Hvfp4AM7SGZnHL
d38IByXWzSqgqbrD+hamKEY77X33/oWueSFB7tFd5Vxspydv6dfCqxRVTp35AyNj
0dzmitjcazNRphqeM/XAqTot95p6fJpykdHWT0v1ekYZyH58ilhxLM+Y24FILVAs
NCsOsSwXIpNzPOwJfIyE2tGGPE4RXVpaysRiPYx9LzwzHwpA6o7AZfl20w1IPNTy
6Ov+spOcDnq5/wmIBcfKxyiQNUM68Sni9FtC/5UjmigsnHDCj3dZKsPQgGf1DYBZ
TiV5DwOpuQA7q3+hUwMaCRZqZG4NDN+27ok9SwIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQAsfajDkA5maKJZxW/Gl3hL0gIij6j346lf9RWJMnUX6SDc0mtpg033CzPN
Y3H4Is1VQ7vBMWVZqCQmfQgdmL9UTl8oGprsi3srhjRRWqxslivX+5bAa7f/lIcR
qk8N42CXJ6w+IkyHKArBEG21iz/nLbb2OVcvPu3tVO/I0GLjVjdwr0FJ6GnBH+vv
0QhjKZLR8zCAKhbplqX0pWIMuZdsrekoU/lRTVwGvB0G3oK3HW9EXMmUDiHcPPhC
W16/0zsIHwRfRm6GjuiTHXZxamX9Nnbw5G3BETjdKJdvXwcDl+veZUzl1pOAnutG
VipTLXifLFCD7lADMyIxQV7xcPiX
-----END CERTIFICATE-----
PKCS7 Data
Shrouded Keybag: PBES2, PBKDF2, AES-256-CBC, Iteration 2048, PRF hmacWithSHA256
Bag AttributeslocalKeyID: AF C4 DE AF A0 97 88 29 AB 3E 45 B2 AE 50 E5 85 47 E7 27 77
Key Attributes: <No Attributes>
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFLTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIXS7Sp38x+fECAggA
MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEqBBAX7BUqc2Kea7pInSH0lXkSBIIE
0J3i5GBSxn6QAhfWcaJJjTL/YBVPT5Cc4WpLWXwsKK5DDTeVFbt4DcEqAvcNPf0k
0KdSUvCWrWH28JKJ0r5TEnwAUiXbjfK6Kd5dBV25lN43/3ZaAWs/aP/y909bvCja
xQtdpSyF6IyajgFCnolqed6PCoY3fT/CzFzgFxiFNDyjaI8ZLYz7Oe3ihuTqfJwD
a/B+7y/KEf3EKpaEwpNRk2aju7ucs9jZB870XzLgmHB3ABsGLD1q10W5wGDyvQPk
D+0QSAN587BuyG6L4uUVPiKBIK+BIYVWCjHF97stCNBa+obCwktZpfeZvwNkLsiH
mY57y4Tkuu6Kqacdfe5qKCQdYF6illp5UtNx5JODB9T4iSxqKMsGErW04i/SXs9r
RyOZpZB824SD4WpOXFoo1lwU0M8rYbWhnH393CRp9ffjhPk5iK+qvLAuDgMiTRhf
0ophKnMbpqKmtyEfsZ+XVta8+W3pSdtzw71Am8dadtlzAo8J60IWwZdEWrJ82tIk
BRl2Lrt3hKfyuTkhMW69q4790hg5gHL4iBy+A3fatJizUFgd+V/fp3Pe6rq22ReB
Y+S4d9RKgEiKlZzPZiuUXr2pMVHVLo3jNDORckv7Ec/VlSpKbbUDDrNo/EtUf9+r
y3wxnymV3RPtmCeIHpKDJg2NXTlRcYdn+01WPc8AOPZ7r46ehQ49EEiOGqX09rDO
SlX3e4UNbte1x/bR6GWJ+EwjWpo4AcLJ5O28jJXUP1ZFpNrdddobRES7QaHIGity
+QYb+aet0D5Cpx+Ygq9+RumEG+j3dd9CrK+r7lMUhejAFYms1NSDXL5g0jjflutM
McWZVMqR+179+PeDl+ykLeVa08zVqIBwn3L16Jpjx/fjsGkPr+rWmpHvMdT6r5lI
IKJhOgqFpF3NMoq2GTXwzrPMxruwXszkUB1NfSJluuG1imNk6hL4IwEpzKN+lcZ2
tDkyc/IGPG9o0O08qgjuQHAoNvK70kRCCqzy9OF8HnKe63n0aX0In0FVGGTIchjm
89/MsGVTKihK+rOyDgCWYhWil9fNhuHt+qdNPXMTvuNkqdDe2XulnN9xkQ8UCXlv
T8GnaBv0GkspgNXABFQ7cvDSSAmrtr+9QvGuEgUOSVvSk8+n5eMOdfD/M4916ezw
Wpo01kgHjptPjpZWveS2spB7VQiNGIEbhU2msmk8ZbQ/F0olzJ/KMWoUgZfl+RLA
5yTlWTEW+dobliWcHLJX/TAyeBICzLU5mPRyE0b3btim9vHVFreC4TWS+sfHiocC
uNvPX0J7XAYvQY188Oq/EbPp8CSRB2Yu0LBS4ilVyooY8tdzVJ2d6aroA4YVSkMe
vM/RZnoLGsezkW+16mP1+TmHAWEk0gLc9BzToHRHI9WJJmv7D+p5XunaeSRSqYro
j8fQK0TrDSvfgHP5Asc1tziRRAUQ1cy9sQV1DUlPGzvRbpQD7RmNJ/yfUt94K2+X
6Vbo9Vgt/iTO9+pjzNRW05HwpkjPajBWNkbze95vSPVFIVhxrtS3tQlEyD26JHw3
6XJvtnOJaRTODUWloIsE7zhDxKk2YhqnlSqfIYzkA3fTGa6lgvIoDyuSv0Ln1g5C
uVwIOK+aag8w5nArZx6vGWulYwILVWEGT40u+GPedWs8
-----END ENCRYPTED PRIVATE KEY-----E:\RJ\openssl\installed\OpenSSL-Win64\bin>
  • 也可以通过运行以下命令来检查 .p12 文件的密码是否正确:

openssl pkcs12 -nokeys -info -in certificate.p12

   此命令将只显示证书的详细信息,而不会显示私钥信息。

注意:在运行这些命令之前,需要确保已安装 OpenSSL 工具。


7. 结束

现在,已经生成了一个名为certificate.p12的PKCS12文件,其中包含证书和私钥。

注意:

以上步骤仅提供了一个基本的示例。我们可以根据需要进行更多的配置和调整。此外,如果您具有可用的CA证书和私钥,可以使用类似的命令生成PKCS12文件。确保妥善保管和保护您的私钥和证书。

————————————————————

DONE

这篇关于使用OpenSSL生成PKCS#12格式的证书和私钥的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/509752

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

poj 1287 Networking(prim or kruscal最小生成树)

题意给你点与点间距离,求最小生成树。 注意点是,两点之间可能有不同的路,输入的时候选择最小的,和之前有道最短路WA的题目类似。 prim代码: #include<stdio.h>const int MaxN = 51;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int P;int prim(){bool vis[MaxN];