openssl 生成证书【整理】

openssl生成证书和keystore生成证书 阅读详情

要生成证书的目录下建立几个文件和文件夹,有
./demoCA/
./demoCA/newcerts/
./demoCA/private/
./demoCA/index.txt (空文件,生成证书时会将数据记录写入)
./demoCA/serial (在serial文件中写入第一个序列号“01”,在生成证书时会以此递增)

概念:首先要有一个根证书,然后用根证书来签发用户证书。
      用户进行证书申请:一般先生成一个私钥,然后用私钥生成证书请求(证书请求里应含有公钥信息),再利用证书服务器的根证书来签发证书。

特别说明:
(1)自签名证书(一般用于顶级证书、根证书): 证书的名称和认证机构的名称相同.

(2)根证书:根证书是CA认证中心给自己颁发的证书,是信任链的起始点。安装根证书意味着对这个CA认证中心的信任

数字证书则是由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机构的公章)后形成的一个数字文件。数字证书包含证书中所标识的实体的公钥(就是说你的证书里有你的公钥),由于证书将公钥与特定的个人匹配,并且该证书的真实性由颁发机构保证(就是说可以让大家相信你的证书是真的),因此,数字证书为如何找到用户的公钥并知道它是否有效这一问题提供了解决方案。

openssl中有如下后缀名的文件

.key格式:私有的密钥
.csr格式:证书签名请求(证书请求文件),含有公钥信息,certificate signing request的缩写
.crt格式:证书文件,certificate的缩写
.crl格式:证书吊销列表,Certificate Revocation List的缩写
.pem格式:用于导出,导入证书时候的证书的格式,有证书开头,结尾的格式
 
常用证书协议
x509v3: IETF的证书标准
x.500:目录的标准
SCEP:  简单证书申请协议,用http来进行申请,数据有PKCS#7封装,数据其实格式也是PKCS#10的
PKCS#7:  是封装数据的标准,可以放置证书和一些请求信息
PKCS#10:  用于离线证书申请的证书申请的数据格式,注意数据包是使用PKCS#7封装这个数据
PKCS#12:  用于一个单一文件中交换公共和私有对象,就是公钥,私钥和证书,这些信息进行打包,加密放在存储目录中,CISCO放在NVRAM中,用户可以导出,以防证书服务器挂掉可以进行相应恢复。思科是.p12,微软是.pfx

再说步骤:
生成CA私钥--》生成CA证书请求--》自签名得到根证书(CA给自已颁发的证书)
生成私钥--》生成证书请求--》通过CA签名得到证书
----------------------------------------------------------------------------------------

1.生成X509格式的CA自签名证书 
$openssl req -new -x509 -keyout ca.key -out ca.crt

$openssl rsa -in ca.key -out ca.key.unsecure //生成一个不需要口令保护的私钥,不推荐,可以于去除密码

* 对已生成csr请求的证书进行自签名的无交互全自动命令:

$openssl -x509 -req -in csr/ca.csr -out newcerts/ca-cert.pem -signkey private/ca-key.pem -passin pass:999999 -days 3650

 

2.生成服务端的私钥(key文件)及csr 文件
$openssl genrsa -des3 -out server.key 1024 

[无交互全自动:$openssl genrsa -des3 -passout pass:111111 -out server.key 1024]
$openssl req -new -key server.key -out server.csr

[无交互全自动:$openssl req -new -passin pass:111111 -key server.key -out server.csr -subj "/C=CN/ST=Guangdong/L=Shenzhen/O=atco company/OU=IT/CN=it.atco.com/emailAddress=atco@163.com"]

 

3.生成客户端的私钥(key文件)及csr文件 
$openssl genrsa -des3 -out client.key 1024 
[无交互全自动:$openssl genrsa -des3 -passout pass:111111 -out client.key 1024]
$openssl req -new -key client.key -out client.csr
[无交互全自动:$openssl req -new -passin pass:111111 -key client.key -out client.csr -subj "/C=CN/ST=Guangdong/L=Shenzhen/O=atco company/OU=IT/CN=it.atco.com/emailAddress=atco@163.com"]

 

4.用生成的CA的证书为刚才生成的server.csr,client.csr文件签名 
$openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key 
$openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key
[无交互全自动:$openssl ca -key 999999 -in client.csr -out client.crt -config conf\openssl.cnf -batch]
(说明:ca私钥及证书位置在conf\openssl.cnf中指定,设置好了可不带-config参数,-key为ca私钥密码,-in为待签名证书申请文件,-out为输出证书文件,-batch表示输出无需人工干预,注意一个证书不可被签名多次,因为index文件中有记录,在此生成的.crt也可换成其它如.pem格式证书)

*进行CA签名获取证书时,需要注意国家、省、单位需要与CA证书相同,否则会报:

The countryName field needed to be the same in the CA certificate (cn) and the request (sh)

*进行CA签名获取证书时,如果信息完全和已有证书信息相同会报错,即不能生成相同的证书,报错信息为:

failed to update database
TXT_DB error number 2

*在进行CA签名获取证书时,可对证书的有效起止时间作控制,默认有效期是一年,可用-days 3650这样的方式改为10年,如想更精确控制,可使用-startdate  和-enddate参数,如-startdate 120501000000Z -enddate 120601000000Z,日期格式为yyMMddHHmmssZ,分别表示年,月,日,时, 分,秒. 其中"Z"是遗留自初始的UTCTIME. 如果没有"Z",就允许两种附加组"[+/-]hh 'mm'",其中"hh"和"mm"分别为与GMT的时差和分差. 如果有"Z",则时间是以Zulu或GMT时间表示.注:如出现:unable to access the ./demoCA/newcerts directory
这时可找到配置文件,一般是openssl.cnf,修改配置文件项为你生成证书的路径

[ CA_default ]

dir  = C:\\OpenSSL\\bin\\demoCA  (原值是:./demoCA,注意路径用双斜杠)

 

5. 生成p12格式证书 (思科是.p12,微软是.pfx)
$openssl pkcs12 -export -inkey client.key -in client.crt -out client.pfx 
$openssl pkcs12 -export -inkey server.key -in server.crt -out server.pfx
[无交互全自动:$openssl pkcs12 -export -clcerts -in client.pem -inkey client.key -passin pass:111111 -out client.p12 -passout pass:111111]

说明:-in 为欲转换为p12文件的证书文件,-inkey为与转换为p12文件的证书私钥文件,-passin 为私钥文件密码,-out为p12文件,-passout为p12文件打开密码

 

6.生成pem格式证书 
有时需要用到pem格式的证书,可以用以下方式合并证书文件(crt)和私钥文件(key)来生成 
$cat client.crt client.key> client.pem 
$cat server.crt server.key > server.pem

 

7.PFX文件转换为X509证书文件和RSA密钥文件 
$openssl pkcs12 -in server.pfx -nodes -out server.pem 
$openssl rsa -in server.pem -out server2.key 
$openssl x509 -in server.pem -out server2.crt

8. 其他相关命令
$openssl rsa -noout -text -in ca.key //查看私钥


生成

服务端证书:ca.crt, server.key, server.crt, server.pem, server.pfx

客户端证书:ca.crt, client.key, client.crt, client.pem, client.pfx

使用OpenSSL生成内网证书 阅读详情

相关推荐

openssl 生成证书步骤

本地使用 openssl 生成证书

hinewcc的博客 8902

Openssl生成自签名证书

1.cd到指定目录文件夹 2.通过openssl生成私钥 openssl genrsa -out server.key 1024 3.使用私钥生成自签名的cert证书文件,以下是通过参数只定证书需要的信息 openssl req -new -x509 -days 3650 -key server.key -out server.crt -subj "/C=CN/ST=mykey/L=mykey/O=mykey/OU=mykey/CN=domain1/CN=domain2/CN=domain3" ...

jayson_hk的博客 1170

阿里云SM2国密SSL证书申请与Nginx双证书部署实战指南

SSL/TLS协议是保障网络通信安全的基石,它通过非对称加密、对称加密和消息认证码等技术,在客户端与服务器之间建立加密通道,确保数据传输的机密性、完整性和身份真实性。其核心原理在于握手阶段协商加密算法与交换密钥,后续通信则使用协商的密钥进行高效加密。随着数据安全与主权要求的提升,国密算法作为我国自主研发的密码标准,其技术价值日益凸显,尤其在金融、政务等关键领域,满足合规要求的同时,在同等安全强度下能提供更优的性能。SM2作为国密非对称算法,对标国际ECC,正逐步应用于HTTPS加密场景。本文聚焦于国密算法在

weixin_42539414的博客 319

Windows下用OpenSSL生成CA根证书及签发server证书

一、先下载编译好的OpenSSL程序,并展开后放在E:盘,目录结构如下所示 目前放在的目录为:E:\OpensslX64 二、打开一个CMD控制台窗口,设置好openssl.cnf路径 用以下控制台命令进入到E:\OpensslX64\bin,并设置好openssl.cnf路径。 E: cd E:\OpensslX64\bin set OPENSSL_CONF=E:\OpensslX64\conf\openssl.cnf 三、在当前目录E:\OpensslX64\bin 里创建两个...

白袍小将的博客 1万+

关于openssl应用的对话

这是一个网友在跟我交流openssl的Mail记录整理出来的,希望能够对刚刚接触Openssl的朋友有用。          Q1:我是偶然一次在清华的BBS上看到了你的文章,关于CA认证的。很感兴趣。你是用的openssl吗,可以发一点关于openssl API的资料给我吗?     A1:Openssl本身提供的API资料非常有限,当然,基本的函数说明文档还是有一些的,主要在Doc目录下。此外

内网安全与OpenSSL专栏 2973

openssl3.2 - 官方demo学习 - pkcs12 - pkwrite.c

openssl3.2 - 官方demo学习 - 索引贴上次PKCS12的官方实验还没做, 原因是没在官方demo中看到如何生成P12的证书, 因为P12是受密码保护的, 如果不知道密码, 随便拿来一个.P12证书, 用编程也操作不了.整理了官方帮助文件(openssl3.2 - 帮助文档的整理)后, 很容易就找到了官方说明, 如何用openssl命令行去生成P12证书的全流程操作.今天拿官方demo pkwrite.c + 自己做的服务器证书来做实验, 学到东西了.

博客标题不能为空 2142

openssl生成https证书

openssl生成https证书简介本文主要介绍在Linux环境下通过openssl生成自己的ssl证书,并搭配nginx服务器启用https。我对证书的了解也不是很多,从网上搜罗一些资料,并在CentOS上成功搭建HTTPS服务器,通过本文整理如下:准备工作 /etc/pki/CA/index.txt 跟踪已颁发的证书,初始为空。注意是0字节,不然会报出一个错误。 wrong number of

会呼吸的鱼 8049

使用OpenSSL生成自己服务器证书

OpenSSL」使用OpenSSL生成自己服务器证书

Black coder 2309

OpenSSL 生成CA证书及终端用户证书(1)

小编精心为大家准备了一手资料以上Java高级架构资料、源码、笔记、视频。Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术【附】架构书籍BAT面试的20道高频数据库问题解析Java面试宝典Netty实战算法BATJ面试要点及Java架构师进阶资料《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!附】架构书籍BAT面试的20道高频数据库问题解析Java面试宝典。

2401_83817843的博客 790

基于ip地址通过openssl生成自签名证书

最近在配置geo的时候,客户说自己使用的是自签证书,然后是通过ip地址和端口的方式访问gitlab,比较好奇这块,因此对证书生成和使用做了一些整理,对此网上关于这部分资料也很多,不过作为记录,也算是自己的部分实践。

最美dee时光的博客 3568

openssl req(生成证书请求和自建CA)

伪命令req大致有3个功能:生成证书请求文件、验证证书请求文件和创建根CA。由于openssl req命令选项较多,所以先各举几个例子,再集中给出openssl req的选项说明。若已熟悉openssl req和证书请求相关知识,可直接跳至后文查看openssl req选项整理,若不熟悉,建议从前向后一步一步阅读。 首先说明下生成证书请求需要什么:申请者需要将自己的信息及其公钥放入证书请求中。但...

qq_34208467的博客 2335

OpenSSL安装版证书生成,IIS10.0配置SSL证书(小白篇)

一:安装IIS 1.安装步骤:控制面板--> 程序--> 启用或关闭windows功能--> 勾选internet information Services 2.测试:在浏览器地址栏中输入地址 http://localhost 回车,如果正确出现相关页面则安装成功 二:OpenSSL安装及生成证书: 1.下载

huqingpeng321的博客 5904

Ubuntu下用OpenSSL生成支持IP的自签名SSL证书

SSL证书是HTTPS通信的基础安全凭证,其核心在于X.509标准、公钥基础设施(PKI)和Subject Alternative Name(SAN)字段的正确配置。自签名证书虽不被公共信任链认可,但能完整复现TLS握手、证书验证与密钥交换流程,是开发测试中验证HTTPS行为的关键手段。尤其在Ubuntu服务器、Docker或WSL2等无域名环境,为192.168.x.x等私有IP生成含IP SAN的证书,可彻底解决‘unable to validate certificate for IP’和‘NET::

weixin_34391445的博客 520

openssl qt 生成秘钥_OpenSSL证书生成(Windows环境)

本文根据这篇博文(http://lovesea.blog.51cto.com/382446/95572)和《OpenSSL与网络信息安全:基础、结构和指令》一书整理。关于OpenSSL在Windows下的编译安装,参见上一篇文章。准备工作:1、添加配置文件(openssl.cnf)的环境变量:OPENSSL_CONF。配置文件可从OpenSSL解压后根目录下的apps目录下拷贝,再自行修改配置。2...

weixin_35045323的博客 381

生成CA免费证书-整理

转自:https://blog.csdn.net/weixin_30544657/article/details/97775898 1.环境: OpenSSL 1.0.2k FireFox 60.0 64位 Chrome 66.0.3359.181 (正式版本)(32位) Internet Explorer 11.2248.14393.0 Websocketd 0.3.0 Nginx 1.12.2 2. 生成CA根证书 2.1.准备ca配置文件,得到ca.conf [ re...

zdpyouzhe的专栏 1420

openssl生成自签的证书并且使用nginx配置https证书_openssl生产证书给nginx ssl用

这里要输入省市区信息,给出一个图片参考。

2401_83947353的博客 742

利用工具openSSL生成证书

第一次借接触,好多不懂,查阅了各位大神的博客总结了一下,好多博客给的很模糊,哎,无奈,我来整理下吧那就 首先下载工具 openSSL,下载好后安装成功后需要配置环境变量,OPENSSL_HOME=安装路径,Path=%OPENSSL_HOME%/bin,这样就配好喽. 在安装的openssl的bin目录下面创建以下文件夹和文件: 创建文件夹 /demoCA/, /demoCA/newcerts...

oneTreeTallTall 2167
上一篇: 密码学(二)、对称加密和不对称加密
下一篇: Struts2 标签库讲解
ATCO
博客等级 码龄23年 190粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值