Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >使用OpenSSL创建CA和申请证书

使用OpenSSL创建CA和申请证书

作者头像
星哥玩云
发布于 2022-07-31 01:51:52
发布于 2022-07-31 01:51:52
2.7K00
代码可运行
举报
文章被收录于专栏:开源部署开源部署
运行总次数:0
代码可运行

OpenSSL简介

OpenSSL是一种加密工具套件,可实现安全套接字层(SSL v2 / v3)和传输层安全性(TLS v1)网络协议以及它们所需的相关加密标准。

openssl命令行工具用于从shell程序使用OpenSSL加密库的各种加密功能。 它可以用于:

  • 创建和管理私钥,公钥和参数
  • 公钥加密操作
  • 创建X.509证书,CSR和CRL
  • 消息摘要的计算
  • 使用密码进行加密和解密
  • SSL / TLS客户端和服务器测试
  • 处理S / MIME签名或加密的邮件
  • 时间戳记请求,生成和验证

openssl配置文件及三种策略

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
配置文件
/etc/pki/tls/openssl.cnf

三种策略
match(匹配):要求申请填写的信息跟CA设置信息必须一致
optional(可选):可有可无,跟CA设置信息可不一致
supplied(提供):必须填写这项申请信息

创建私有CA和申请、颁发证书文件(以下操作都是在一台机器上执行)

1.创建所需要的文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@CentOS7 ~]# cd /etc/pki/CA/
[root@CentOS7 CA]# touch index.txt  生成证书索引数据库文件
[root@CentOS7 CA]# echo 01 > serial 指定第一个颁发证书的序列号
2.CA自签证书
2.1生成私钥
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@CentOS7 CA]# (umask 066;openssl genrsa -out private/cakey.pem 2048)
Generating RSA private key, 2048 bit long modulus
...................................................................................+++
.+++
e is 65537 (0x10001)
2.2生成自签名证书
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@CentOS7 CA]# openssl req -new -x509 -key private/cakey.pem -days 3650 -out cacert.pem
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:beijing
Locality Name (eg, city) [Default City]:beijing
Organization Name (eg, company) [Default Company Ltd]:abc
Organizational Unit Name (eg, section) []:IT  
Common Name (eg, your name or your server's hostname) []:hechunping
Email Address []:root@abc.com

选项说明:
-new:生成新证书签署请求
-x509:专用于CA生成自签证书
-key:生成请求时用到的私钥文件
-days n:证书的有效期限
-out /PATH/TO/SOMECERTFILE: 证书的保存路径
3.颁发证书
3.1在需要使用证书的主机生成证书请求(本实验是在本机)
3.1.1生成私钥
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@CentOS7 CA]# (umask 066;openssl genrsa -out /data/test.key 2048)
Generating RSA private key, 2048 bit long modulus
..................................................+++
...............................+++
e is 65537 (0x10001)
3.1.2生成证书申请文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@CentOS7 CA]# openssl req -new -key /data/test.key -out /data/test.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:beijing
Locality Name (eg, city) [Default City]:beijing
Organization Name (eg, company) [Default Company Ltd]:abc
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:hechunping
Email Address []:root@abc.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
3.2将证书申请文件传输给CA(两台不同的主机可以使用scp命令传输)
3.3CA签署证书,并将证书颁发给请求者
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@CentOS7 CA]# openssl ca -in /data/test.csr -out certs/test.crt -days 100
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 1 (0x1)
        Validity
            Not Before: Nov 10 13:45:34 2019 GMT
            Not After : Feb 18 13:45:34 2020 GMT
        Subject:
            countryName               = CN
            stateOrProvinceName       = beijing
            organizationName          = abc
            organizationalUnitName    = IT
            commonName                = hechunping
            emailAddress              = root@abc.com
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                4C:AE:F0:13:F0:CD:8F:B5:F7:3F:1B:C8:E4:77:91:02:9E:88:6B:5A
            X509v3 Authority Key Identifier: 
                keyid:E3:C1:5E:6D:94:5E:F2:AE:16:67:79:2C:69:B5:B9:10:D9:E0:51:BE

Certificate is to be certified until Feb 18 13:45:34 2020 GMT (100 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

注意:默认要求 countryName(国家),stateOrProvinceName(省),organizationName(公司)三项必须和CA一致
3.4查看证书中的信息
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@CentOS7 CA]# openssl x509 -in certs/test.crt -noout -text|issuer|subject|serial|dates
3.5查看指定编号的证书状态
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@CentOS7 CA]# openssl ca -status 01
Using configuration from /etc/pki/tls/openssl.cnf
01=Valid (V)
4.吊销证书
4.1在客户端获取要吊销的证书的serial
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@CentOS7 CA]# openssl x509 -in certs/test.crt -noout -serial -subject
serial=01
subject= /C=CN/ST=beijing/O=abc/OU=IT/CN=hechunping/emailAddress=root@abc.com
4.2在CA上,根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@CentOS7 CA]# cat index.txt
V   200218134534Z       01  unknown /C=CN/ST=beijing/O=abc/OU=IT/CN=hechunping/emailAddress=root@abc.com
4.2.1吊销证书
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@CentOS7 CA]# openssl ca -revoke newcerts/01.pem 
Using configuration from /etc/pki/tls/openssl.cnf
Revoking Certificate 01.
Data Base Updated
4.2指定第一个吊销证书的编号,注意:第一次更新证书吊销列表前才需要执行。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@CentOS7 CA]# echo 01 > crlnumber
4.3更新证书吊销列表
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@CentOS7 CA]# openssl ca -gencrl -out crl.pem
Using configuration from /etc/pki/tls/openssl.cnf
4.4查看crl文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@CentOS7 CA]# openssl crl -in crl.pem -noout -text

将申请下来的证书导出到windows中查看

1.在windows上按"win+R"键,然后运行"certmgr.msc"命令。 2.找到“受信任的根证书颁发机构”右键单击“所有任务”--->“导入”,然后按照向导选择在Linux申请下来的证书。 3.查看证书信息

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
内网创建私有CA证书
关建立私有CA证书 OpenSSL: 三个组件: openssl: 多用途的命令行工具; libcrypto: 加密解密库; libssl:ssl协议的实现; # PKI:Public Key Infrastructure # CA # RA # CRL # 证书存取库 # 建立私有CA: # OpenCA # openssl # 证书申请及签署步骤: # 1、生成申请请求; # 2、RA核验; # 3、CA签署; # 4、
小柒吃地瓜
2020/04/23
2.7K0
自建CA认证和证书
X.509:定义了证书的结构和认证协议的标准。包括版本号、序列号、签名算法、颁发者、有效期限、主体名称、主体公钥、CRL分发点、扩展信息、发行者签名等
咻一咻
2020/05/29
3.2K0
CA中心构建及证书签发实录
本实验中,我们将通过开源工具OpenSSL构建一个私有CA中心,并以其为根CA,设立一个子CA机构,并为Client提供证书签署服务。
用户1456517
2019/03/05
1.3K0
CA中心构建及证书签发实录
在Linux下如何根据域名自签发OpenSSL证书与常用证书转换 修改openssl.cnf配置文件创建根证书自签发泛域名证书将crt转pem格式生成 p12 格式的
当然上述的公钥制作方式需要交互式输入信息,如果不想频繁输入,那么可以使用如下命令:
踏歌行
2020/10/27
9.1K0
在Linux下如何根据域名自签发OpenSSL证书与常用证书转换
    




        修改openssl.cnf配置文件创建根证书自签发泛域名证书将crt转pem格式生成 p12 格式的
openssl创建CA、申请证书及其给web服务颁发证书
一、创建私有的CA 1)查看openssl的配置文件:/etc/pki/tls/openssl.cnf 2)创建所需的文件 touch /etc/pki/CA/index.txt echo 01
小小科
2018/05/04
2.2K0
openssl创建CA、申请证书及其给web服务颁发证书
利用httpd+openssl来实现网站的https
                                        CA验证中心(颁发/吊销证书)                                         /                 \ \                                  CA 证书    /             下发   \ \ 证书请求                                          /             证书   \ \                                    client <--------数字证书------ WEB 1。web服务器,生成非对称加密密钥对(web公钥,web私钥) 2。web服务器使用 web身份信息+web公钥 生成 web服务器的证书请求 ,并将证书请求发给CA服务器 3。CA服务器使用 CA的私钥 对 web 服务器的证书请求 进行数字签名得到 web服务器的数字证书,并将web服务器的数字证书颁发给web服务器。 4。client访问web服务器,请求https连接,下载web数字证书 5。client下载 CA数字证书(CA身份信息+CA公钥,由上一级CA颁发,也可自签名颁发),验证 web数字证书(CA数字证书中有CA公钥,web数字证书是使用CA私钥签名的) 6。client与web协商对称加密算法,client生成对称加密密钥并使用web公钥加密,发送给web服务器,web服务器使用web私钥解密 7。使用对称加密密钥传输数据,并校验数据的完整性 利用httpd+openssl来实现网站的https
DevinGeng
2019/04/09
4370
利用httpd+OpenSSL来实现网站的https
                                        CA验证中心(颁发/吊销证书)                                         /                \ \                                  CA 证书    /            下发  \ \ 证书请求                                         /            证书  \ \                                   client <--------数字证书------ WEB
星哥玩云
2022/06/30
2320
网络系统管理Linux环境——AppSrv之CA
冷影玺
2023/10/11
3640
基于 OpenSSL 的 CA 建立及证书签发
前段时间研究了一下 SSL/TLS ,看的是 Eric Rescorla 的 SSL and TLS - Designing and Building Secure Systems 的中文版(关于该中文版的恶劣程度,我在之前的一篇 Blog 中已做了严厉的批判)。本书的作者沿袭了 Stevens 在其神作 TCP/IP Illustrated 中的思想:使用网络嗅探进行协议演示。不同的是,作者并没有使用 tcpdump ,而是使用了自己编写的专用于嗅探 SSL/TLS 通讯的ssldump 。为了对书中的一些内容进行试验确认,我决定使用 ssldump 进行一些实验。然而,进行 SSL/TLS 通讯,至少需要一份 CA 签发的证书才可以得以完成,仅仅是做个实验,我自然不会花天价去买个证书,所以决定自己建 CA 签发证书。
呆呆
2021/05/26
2.2K0
OpenSSL - 利用OpenSSL自签证书和CA颁发证书
秘钥操作 这个命令会生成一个1024/2048位的密钥,包含私钥和公钥。 openssl genrsa -out private.key 1024/2038                     (with out password protected)    openssl genrsa -des3 -out private.key 1024/2048    (password protected) 这个命令可以利用private.key文件生成公钥。 openssl rsa -in private.k
Aichen
2018/05/18
6.7K0
OpenSSL 是什么?
对称加密算法在加密和解密时,使用同一密钥。非对称加密算法需要两个密钥,即公开密钥和私有密钥,公开密钥和私有密钥是一对。用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;用私有密钥对数据进行加密,只有用对应的公开密钥才能解密。因为加密和解密使用两个不同的密钥,所以这类算法叫非对称加密算法。
小阑本阑
2023/06/08
9630
OpenSSL 是什么?
linux下生成openssl证书
下载安装openssl,进入/bin/下面,执行命令(把ssl目录下的openssl.cnf 拷贝到bin目录下) 1.首先要生成服务器端的私钥(key文件): openssl genrsa -des3 -out server.key 1024 [root@airwaySSL openssl]# cd ssl/ [root@airwaySSL ssl]# pwd /home/openssl/ssl [root@airwaySSL ssl]# ls certs  man  misc  openssl.cnf  private  server.csr  server.key 运行时会提示输入密码,此密码用于加密key文件(参数des3便是指加密算法,当然也可以选用其他你认为安全的算法.),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令.如果觉得不方便,也可以去除这个口令,但一定要采取其他的保护措施! 去除key文件口令的命令: openssl rsa -in server.key -out server.key 2.openssl req -new -key server.key -out server.csr -config openssl.cnf [root@airwaySSL bin]# openssl req -new -key server.key -out server.csr -config openssl.cnf Enter pass phrase for server.key:12345 You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:CN State or Province Name (full name) [Some-State]:china Locality Name (eg, city) []:wuhan Organization Name (eg, company) [Internet Widgits Pty Ltd]:airway Organizational Unit Name (eg, section) []:airway Common Name (eg, YOUR name) []:airway Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: 生成Certificate Signing Request(CSR),生成的csr文件交给CA签名后形成服务端自己的证书.屏幕上将有提示,依照其指示一步一步输入要求的个人信息即可. 3.对客户端也作同样的命令生成key及csr文件: openssl genrsa -des3 -out client.key 1024 Generating RSA private key, 1024 bit long modulus ...........++++++ ..++++++ e is 65537 (0x10001) Enter pass phrase for client.key:12345 Verifying - Enter pass phrase for client.key:12345 openssl req -new -key client.key -out client.csr -config openssl.cnf [root@airwaySSL bin]# openssl req -new -key client.key -out client.csr -config openssl.cnf Enter pass phrase for client.key:1234
DevinGeng
2019/04/09
3.2K0
自签CA和SSL证书
字段 值 countryName 国家名缩写 stateOrProvinceName 州或省 localityName 地点,如城市 organizationName 组织名 commonName 商标(证书上显示的 CA 名称)
jwj
2022/05/18
1.6K0
“证书”那些事
本文介绍了如何创建自己的证书颁发机构以及如何创建由该证书颁发机构签名的SSL证书。 尽管有许多文章讨论如何创建自己的SSL证书,但在大多数情况下,它们描述了如何创建自签名证书。这比较简单,但是无法验证或跟踪那些证书。 我个人更喜欢先创建个人证书颁发机构(CA),然后再从该证书颁发机构颁发证书。这种方法的主要优点是,你可以将CA的证书导入浏览器或手机中,并且当你访问自己的网站或连接到SMTP/IMAP服务器时,不会再收到任何警告。现在被认为是值得信赖的。如果你为自己的项目创建证书层次结构,并且希望成为唯一可以为用户颁发证书的人员,则这也是必要的。
tunsuy
2022/10/27
4620
系统安全加密验证签名之Openssl命令
描述:OpenSSL是一个开源项目,它是安全套接字层密码库(Secrue socket layer)和传输层安全(transport layer security,TLS)协议的实现,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议(SSL/TLS工具集),并提供丰富的应用程序供测试或其它目的使用。
全栈工程师修炼指南
2022/09/29
4.4K0
系统安全加密验证签名之Openssl命令
Linux基于OpenSSL实现私有CA构建
前言 随着互联网的迅猛发展,网络通信已经成为传递信息的主要途径。而通信时的数据传输大部分却是明 文传输的,在网络这个不安全的环境下,如果没有一套数据加密机制,就会导致敏感信息和重要数据泄露,引起不可估量的损失。而OpenSSL正好弥补了这一 缺憾,那什么是OpenSSL呢?OpenSSL是一套强大的具有加密功能的组件,它包含libcrypto(公共加密库)、libssl(SSL协议的 实现)和openssl(多功能命令工具),因其开源思想,现已广泛应用于数据通信加密领域。OpenSSL还可在局域网内构建私有
小小科
2018/05/03
2.5K0
Linux基于OpenSSL实现私有CA构建
用openssl添加https访问并设置客户端信任
x.509 是密码学里面的公钥证书的格式标准. 就是说x.509是一种证书的格式,其实我们经常用这种格式的证书,只是可能没怎么注意过证书格式的标准而已.
qsjs
2020/07/07
3.1K0
Docker私有Registry在CentOS6.X下安装指南
先从docker registry服务器端把文件/etc/pki/CA/cacert.pem拷贝到本机,然后执行命令:
白石
2019/08/23
6230
数字证书系列-CA以及用CA 签发用户证书
我们如何由证书请求文件获得证书呢? 我们的证书请求文件一般发送给相应(取决于CSR文件创建向导中填写的X.509信息)的可信任“证书签发”机构,他们会给我们生成对应的证书文件(签发证书是收费的哦);对于我们的个人小站,还需要去付费买“签名数字证书”,这个可怎么办?还好,我们可以自己创建CA证书,然后用CA证书来为自己CSR签发数字证书,只是这个证书不是“可信任”机构签发的,而是我们自己签发的; 废话不多说,我们还是用openssl来创建CA证书:
qsjs
2020/06/09
2.7K0
数字证书 CA_数字证书申请
上面就是利用认证机构Trent进行公钥密码通信的流程。其中1、2、3这几个步骤仅在注册新公钥时才会进行,并不是每次通信都需要。此外,步骤 4 仅在Alice第一次用公钥密码向Bob发送消息时才需要进行,只要Alice将Bob的公钥保存在电脑中,在以后的通信中就可以直接使用了。
全栈程序员站长
2022/11/03
3.7K0
数字证书 CA_数字证书申请
相关推荐
内网创建私有CA证书
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验