CA和证书

来源:互联网 发布:网络信息工作领导小组 编辑:程序博客网 时间:2024/05/15 03:28

什么是CA和证书

    电子商务认证授权机构(CA, Certificate Authority),也称为电子商务认证中心,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。
    CA中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。CA机构的数字签名使得攻击者不能伪造和篡改证书。在SET交易中,CA不仅对持卡人、商户发放证书,还要对获款的银行、网关发放证书。
    CA是证书的签发机构,它是PKI的核心。CA是负责签发证书、认证证书、管理已颁发证书的机关。它要制定政策和具体步骤来验证、识别用户身份,并对用户证书进行签名,以确保证书持有者的身份和公钥的拥有权。
    为保证用户之间在网上传递信息的安全性、真实性、可靠性、完整性和不可抵赖性,不仅需要对用户的身份真实性进行验证,也需要有一个具有权威性、公正性、唯一性的机构,负责向电子商务的各个主体颁发并管理符合国内、国际安全电子交易协议标准的电子商务安全证,并负责管理所有参与网上交易的个体所需的数字证书,因此CA是安全电子交易的核心环节。
    证书实际是由证书签证机关(CA)签发的对用户的公钥的认证。
    证书的内容包括:电子签证机关的信息、公钥用户信息、公钥、权威机构的签字和有效期等等。证书的格式和验证方法普遍遵循X.509 国际标准。

PKI: Public Key Infrastructure

    签证机构:CA(Certificate Authority)

    注册机构:RA

    证书吊销列表:CRL

    证书存取库:

X.509:定义了证书的结构以及认证协议标准,内容包括:

    版本号、序列号、签名算法、颁发者、有效期限、主体名称、主体公钥、CRL分发点、扩展信息、发行者签名

证书类型:

    证书授权机构的证书

    服务器

    用户证书

获取证书两种方法:

    •使用证书授权机构

        生成签名请求(csr)

        将csr发送给CA

        从CA处接收签名

    •自签名的证书

        自已签发自己的公钥

CA认证原理

为了确认公钥的安全性,需要可靠的第三方机构--CA(Certificate Authority)对公钥来源进行确认。下图是CA认证的主要过程。

image

 

CA 也拥有一个证书(内含公钥和私钥)。网上的公众用户通过验证 CA 的签字从而信任 CA ,任何人都可以得到 CA 的证书(含公钥),用以验证它所签发的证书。

如果用户想得到一份属于自己的证书,他应先向 CA 提出申请。在 CA 判明申请者的身份后,便为他分配一个公钥,并且 CA 将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给申请者。

如果一个用户想鉴别另一个证书的真伪,他就用 CA 的公钥对那个证书上的签字进行验证,一旦验证通过,该证书就被认为是有效的。证书实际是由证书签证机关(CA)签发的对用户的公钥的认证。

证书的内容包括:电子签证机关的信息、公钥用户信息、公钥、权威机构的签字和有效期等等。目前,证书的格式和验证方法普遍遵循X.509 国际标准。

利用openssl搭建私有CA

证书申请及签署步骤:

1、生成申请请求

2、RA核验

3、CA签署

4、获取证书

创建私有CA:

openssl的配置文件:/etc/pki/tls/openssl.cnf

vim /etc/pki/tls/openssl.cnf

clip_image003

[ 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. index.txt文件需要自己创建

#unique_subject = no # Set to 'no' to allow creation of

# several ctificates with same subject.

new_certs_dir = $dir/newcerts # default place for new certs.

certificate = $dir/cacert.pem # The CA certificate

serial = $dir/serial # 并不是当前的序列号,而是下一个证书的证书编号 16进制数

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

三种策略:匹配、支持和可选

匹配指要求申请填写的信息跟CA设置信息必须一致,支持指必须填写这项申请信息,可选指可有可无

1、创建所需要的文件

touch /etc/pki/CA/index.txt 生成证书索引数据库文件

echo 01 > /etc/pki/CA/serial 指定第一个颁发证书的序列号

2、CA自签证书

生成私钥

cd /etc/pki/CA/

(umask066; openssl genrsa-out /etc/pki/CA/private/cakey.pem2048)

生成自签名证书

opensslreq-new -x509 –key

/etc/pki/CA/private/cakey.pem-days 7300 -out /etc/pki/CA/cacert.pem

-new: 生成新证书签署请求

-x509: 专用于CA生成自签证书

-key: 生成请求时用到的私钥文件

-days n:证书的有效期限

-out /PATH/TO/SOMECERTFILE: 证书的保存路径

3、颁发证书

1)在需要使用证书的主机生成证书请求

给web服务器生成私钥

(umask066; openssl genrsa-out /etc/pki/tls/private/test.key 2048)

生成证书申请文件

opensslreq-new -key /etc/pki/tls/private/test.key -days 365 -out etc/pki/tls/test.csr

2) 将证书请求文件传输给CA

3) CA签署证书,并将证书颁发给请求者

opensslca -in /tmp/test.csr–out /etc/pki/CA/certs/test.crt -days 365

注意:默认国家,省,公司名称三项必须和CA一致

默认不允许一个申请签署两个证书,如果要改的话也可以,将下面文件的yes改成no

image

 

image

 

结果是这样,除了编号不同,其它相同

image

4)查看证书中的信息:

opensslx509 -in /PATH/FROM/CERT_FILE -noout -text|issuer|subject|serial|dates

image

opensslca -status SERIAL查看指定编号的证书状态

clip_image013

4、吊销证书

1)在客户端获取要吊销的证书的serial

openssl x509 -in /PATH/FROM/CERT_FILE-noout -serial -subject

2)在CA上,根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致,吊销证书:

opensslca -revoke /etc/pki/CA/newcerts/SERIAL.pem

image

3) 指定第一个吊销证书的编号

注意:第一次更新证书吊销列表前,才需要执行

echo 01 > /etc/pki/CA/crlnumber

4)更新证书吊销列表

openssl ca -gencrl -out /etc/pki/CA/crl/crl.pem

查看crl文件:

opensslcrl -in /etc/pki/CA/crl/crl.pem -noout -text

实验:创建CA、子CA、颁发证书

1、创建CA

touch /etc/pki/CA/index.txt

echo 00 > /etc/pki/CA/serial

(umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048 )

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3000

创建子CA

touch /etc/pki/CA/index.txt

echo 00 > /etc/pki/CA/serial

(umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048 )

openssl req -new -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/subca.csr -days 3000

scp subca.csr 上级CA

2 、client 申请证书

(umask 066;openssl genrsa -out /app/app.key 2048 )

openssl req -new -key /app/app.key -out /app/app.csr

scp CA

3、 颁发证书

openssl ca -in /etc/pki/CA/app.csr -out /etc/pki/CA/certs/app.crt -days 300

原创粉丝点击