建立私有CA颁发证书

建立私有CA颁发证书

1.示例文件介绍

#查看OpenSSL证书颁发机构(CA)的配置文件的示例文件
[root@centos8 CA]#vim /etc/pki/tls/openssl.cnf 下面是一些关键内容
[ CA_default ]

dir     = /etc/pki/CA       # Where everything is kept
certs       = $dir/certs        # Where the issued certs are kept
crl_dir     = $dir/crl      # Where the issued crl are kept
database    = $dir/index.txt    # database index file.
#unique_subject = no            # Set to 'no' to allow creation of
                    # several certs with same subject.
new_certs_dir   = $dir/newcerts     # default place for new certs.

certificate = $dir/cacert.pem   # The CA certificate
serial      = $dir/serial       # The current serial number
crlnumber   = $dir/crlnumber    # the current crl number
                    # must be commented out to leave a V1 CRL
crl     = $dir/crl.pem      # The current CRL
private_key = $dir/private/cakey.pem# The private key

x509_extensions = usr_cert      # The extensions to add to the cert

# Comment out the following two lines for the "traditional"
# (and highly broken) format.
name_opt    = ca_default        # Subject Name options
cert_opt    = ca_default        # Certificate field options

# Extension copying option: use with caution.
# copy_extensions = copy

# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
# so this is commented out by default to leave a V1 CRL.
# crlnumber must also be commented out to leave a V1 CRL.
# crl_extensions    = crl_ext

default_days    = 365           # how long to certify for
default_crl_days= 30            # how long before next CRL
default_md  = sha256        # use SHA-256 by default
preserve    = no            # keep passed DN ordering

[ policy_match ]
countryName     = match
stateOrProvinceName = match
organizationName    = match
organizationalUnitName  = optional
commonName      = supplied
emailAddress        = optional


#这个文件是OpenSSL证书颁发机构(CA)的配置文件的示例。它定义了生成CA和证书所需的各种参数和路径。
dir:存储所有内容的目录,所有其他的相对路径都是基于此目录。
certs:已颁发证书的存储位置。
crl_dir:已颁发证书撤销列表(CRL)的存储位置。
database:索引数据库文件的位置,它用来追踪已颁发的证书。
new_certs_dir:新证书的默认存储位置。
certificate:CA证书的位置。
serial:当前的序列号文件的位置。此文件包含了下一个将要被颁发的证书的序列号。
crlnumber:当前的CRL编号的位置。
crl:当前的CRL的位置。
private_key:私钥的位置。
x509_extensions:添加到证书中的X.509扩展。
name_opt 和 cert_opt:定义了证书中主题名称和证书字段的选项。
default_days:证书的默认有效期(天数)。
default_crl_days:下一个CRL之前的默认天数。
default_md:默认使用的消息摘要算法。
preserve:是否保留传递的DN排序。
#然后有一个名为 policy_match 的部分,这是一个策略段,它定义了在证书申请时需要匹配或供应的字段。
countryName、stateOrProvinceName、organizationName:在证书申请中必须匹配的字段。
organizationalUnitName、emailAddress:可选字段。
commonName:必须在证书申请中提供的字段

2.特有名词介绍

CSR(证书签名请求 Certificate Signing Request):CSR是一种数据文件,用于向证书颁发机构(CA)请求数字证书。当你希望在服务器上启用SSL/TLS加密连接时,你需要生成一个CSR文件并将其发送给CA。CSR包含了与证书相关的信息,如公钥、组织名称等。CA使用CSR来验证你的身份,并为你签发相应的数字证书。在公钥基础设斯(PKI)中,CSR是由证书申请者生成的文件,用于向证书颁发机构(CA)请求签发数字证书。
SR包含了一些关键的信息,包括:
1.公钥:CSR中包含了证书申请者的公钥。该公钥将包含在最终签发的数字证书中,用于加密和身份验证。
2.主题信息:CSR中包含了证书申请者的身份信息,如名称、组织单位、国家/地区等。这些信息将出现在最终签发的数字证书中,用于证书的识别和身份验证。
3.扩展信息:CSR可以包含其他扩展信息,如主体备用名称(SANs)、密钥用途、密钥用法限制等。
生成CSR的过程一般是这样的:
1.生成密钥对:证书申请者首先生成一对密钥:公钥和私钥。私钥用于加密和解密数据,公钥用于验证签名和加密数据。
2.创建CSR:使用生成的密钥对,证书申请者生成包含所需信息的CSR文件。这通常通过使用证书管理工具(如OpenSSL)来完成。
3.提交CSR:将生成的CSR文件提交给CA,请求签发数字证书。CA将验证CSR中的信息,然后根据验证结果签发相应的数字证书。
CSR是申请者与CA之间的通信媒介。它包含了申请者的公钥和身份信息,为CA提供了生成相应数字证书所需的信息。通过CSR,证书申请者可以请求CA为其生成合适的数字证书,用于加密通信、身份验证和数据完整性保护等目的。

CRL(证书撤销列表 Certificate Revocation List):CRL是一个包含已经被撤销的证书列表的文件。当一个数字证书的私钥泄露、证书过期或持有者的身份信息发生变化等情况下,证书需要被撤销。CA会将这些被撤销的证书信息发布到CRL中,以便用户能够验证证书的有效性。客户端在建立SSL/TLS连接时,会检查证书是否存在于CRL中,以确保证书的合法性。在公钥基础设施(PKI)中,CRL是由证书颁发机构(CA)发布的包含已撤销证书信息的列表
CRL的主要作用是通知系统和实体某些数字证书已经被撤销,不再可信。证书可能会被撤销的原因包括私钥泄露、证书过期、持有者身份变更等。通过查看CRL,可以确认证书的有效性和撤销状态。
CRL通常是以文件形式发布,其中包含已撤销证书的序列号、撤销日期和撤销原因等信息。应用程序和系统可以使用CRL来验证证书的状态,即检查证书是否存在于CRL中,如果是,则证书被认为是撤销
一些常见的操作包括:
1.证书验证:当使用证书进行身份验证或安全通信时,系统可以检查该证书是否存在于CRL中,以确认证书的状态和有效性。
2.自动更新:系统可以周期性地下载最新的CRL,并自动更新本地的撤销列表,以确保使用最新的信息来验证证书。
3.OCSP:除了使用CRL外,系统还可以通过在线证书状态协议(OCSP)向CA查询特定证书的状态。OCSP提供了实时的证书状态查询,相对于CRL更新周期可能更实时和高效。
通过使用CRL,PKI系统可以及时地通知各方特定证书的撤销状态,从而确保系统中的证书链是可信的。CRL是PKI中的一个重要组件,用于维护证书的可信性和安全性。

CA代表证书颁发机构(Certificate Authority)。CA是一种可信任的实体,负责验证和签发数字证书,用于加密通信和身份验证。作为一个CA,在公钥基础设施(PKI)中扮演着关键的角色。它负责生成和签署数字证书,证实公钥与实体(例如网站、组织或个人)的身份之间的关联。Linux中的CA可以是一个第三方机构(如全球性的CA,如VeriSign、Let's Encrypt等),也可以是自己内部组织创建的私有CA。
一个CA通常有以下功能:
1.证书签发:CA根据验证的身份信息生成和签发数字证书。这些数字证书包含了实体的公钥、身份信息和其他相关信息。
2.证书验证:CA负责验证接收到的证书的合法性。它会检查证书的签名是否有效、证书是否在有效期内,并与CA的证书进行对比以确认其合法性。
3.证书撤销:当数字证书的私钥泄露、证书过期或持有者的身份信息发生变化等情况下,CA会撤销相应的证书。它会生成证书撤销列表(CRL)或使用在线证书状态4协议(OCSP)来公开已撤销的证书信息。
4.密钥管理:CA负责生成、存储和保护用于签署证书的私钥。私钥的安全性对于确保证书的可信性至关重要。

PKI代表公钥基础设施(Public Key Infrastructure)。PKI是一种系统和框架,用于管理和提供加密、身份验证和数据完整性等安全服务。它使用公钥密码学来实现这些安全服务。
在PKI中,有以下主要组件:
1.公钥和私钥:PKI使用非对称加密算法,其中包括一对密钥:公钥和私钥。公钥用于加密数据或验证签名,而私钥用于解密数据或生成签名。公钥是公开的,而私钥是保密的。
2.证书颁发机构(CA):CA是负责验证实体身份并签发数字证书的可信任机构。它生成包含公钥和实体身份信息的数字证书,并使用自己的私钥对证书进行签名。CA通过签名证书来确保证书的真实性和完整性。
3.数字证书:数字证书是包含公钥、实体身份信息和CA签名的数据文件。它用于验证实体身份和进行安全通信。证书中的CA签名可以用来验证证书的合法性,确保证书未被篡改。
4.证书撤销列表(CRL):CRL是由CA发布的包含已撤销证书列表的文件。当证书需要被撤销(如私钥泄露、证书过期等)时,CA会将相应的证书信息添加到CRL中,以便其他人可以验证证书的状态。
5.注册机构(RA):RA是CA的辅助机构,负责处理证书请求、验证用户身份等操作。它与用户直接交互,并将验证的证书请求传递给CA进行签发。
PKI提供了一种可靠的机制来建立信任、加密通信和进行身份验证。它被广泛用于安全通信协议(如SSL/TLS)、数字签名、身份验证、VPN等场景中,确保数据的机密性、完整性和身份的真实性。

RA代表注册机构(Registration Authority)。在公钥基础设施(PKI)中,RA是一个辅助机构,负责处理证书请求和验证用户身份等操作。
RA在PKI中的角色包括:
1.用户身份验证:RA负责验证用户的身份。它可以要求用户提供相关身份证明材料,并执行适当的身份验证流程,以确保用户具有合法的身份。
2.证书请求处理:RA接收并处理来自用户的证书请求。它会验证证书请求的完整性和准确性,并与相关的身份验证信息进行匹配。
3.证书请求传递给CA:RA将经过验证的证书请求传递给证书颁发机构(CA)。CA使用RA提供的验证结果来决定是否签发相应的数字证书。
4.密钥生成和分发:在一些情况下,RA可能负责生成用户密钥对,并将公钥和相关证书分发给用户。这确保了密钥生成的安全性和可信度。
5.证书生命周期管理:RA可能参与证书的生命周期管理。它可以帮助用户进行证书更新、证书吊销和证书更新等操作,并与CA进行协调。
总体而言,RA在PKI中起着连接用户和CA之间的桥梁作用。它帮助确保证书请求的合法性和用户身份的真实性,并将验证通过的请求传递给CA进行证书签发。RA的存在简化了证书签发过程,并增加了对用户身份验证的可靠性。

.pem" 是一种常见的文件扩展名,它代表了隐私增强电子邮件(Privacy Enhanced Mail)的缩写。在密码学和网络安全中,".pem" 文件通常用于存储和传输密钥、证书和其他加密相关的数据。
PEM 格式是一种基于 Base64 编码的文本格式,用于表示密钥、证书和其他安全相关的数据。这种格式的文件通常以 ".pem" 作为文件扩展名,但实际上文件内容是文本数据,可以用任何文本编辑器打开查看。
.pem 文件可以包含多种类型的数据,例如:
私钥(Private Key):RSA、DSA、ECDSA 等私钥可以以 PEM 格式存储在 .pem 文件中。
公钥(Public Key):RSA、DSA、ECDSA 等公钥也可以以 PEM 格式存储在 .pem 文件中。
证书(Certificate):X.509 格式的数字证书通常以 PEM 格式编码,并保存为 .pem 文件。
CSR(Certificate Signing Request):生成证书签名请求时,也可以将 CSR 以 PEM 格式保存在 .pem 文件中。
其他加密相关的数据:PEM 格式还可以用于存储加密算法中使用的其他数据,如参数、散列值等。
总之,".pem" 是一种文件扩展名,用于标识包含加密相关数据的文本文件,通常以 PEM 格式进行编码。

后缀名为 ".csr" 的文件表示证书签名请求(Certificate Signing Request)。CSR 是在申请数字证书时生成的文件,其中包含有关证书请求者(例如网站或组织)的信息,以及请求者的公钥。
CSR 文件通常是以 PEM 格式编码的文本文件。它包含了一段加密算法生成的公钥以及与之关联的身份信息,如组织名称、域名等。CSR 文件将被发送给证书颁发机构(CA)用于生成数字证书。
使用 OpenSSL 工具生成 CSR 文件的命令类似于以下示例:
openssl req -new -key private_key.pem -out certificate.csr
其中,"private_key.pem" 是私钥文件,用于生成公钥和与之关联的 CSR。执行此命令后,将生成一个名为 "certificate.csr" 的文件,其中包含了 CSR 的信息。
请注意,CSR 文件不包含私钥,而只包含公钥和与之关联的身份信息。私钥通常用于在生成 CSR 后对数据进行签名和加密。

3.颁发过程

.搭建私有CA:创建私钥,自签名证书
2.给用户进行证书申请:用户先生成私钥,然后通过生成私钥申请

生成私钥:openssl genrsa -out cakey.pem 2048
生成CA自签名证书:openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out /etc/pki/CA/cacert.pem
查看CA自签名证书:openssl x509 -in /etc/pki/CA/cacret.pem -noout -text
    查看使用者:openssl x509 -in /etc/pki/CA/cacret.pem -noout -subject
    查看证书的有效期:openssl x509 -in /etc/pki/CA/cacret.pem -noout -dates

用户生成私钥文件:openssl genrsa -out /data/app1/app1.key 2048
CSR(证书签名请求 Certificate Signing Request):openssl req -new -key /data/app1/app1.key -out /data/app1/app1.csr
touch /etc/pki/CA/index.txt
echo 01 > /etc/pki/CA/serial
颁发证书:openssl ca -in /data/app1/app1.csr -out /etc/pki/CA/certs/app1.crt -days 1000
验证证书有效性:openssl ca -status 01
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XingYuyu_Coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值