自签名证书和CA证书的区别和制作、使用

签名证书和CA证书的区别和制作、使⽤
⽬录
⼀、概念介绍
1)传输协议
HTTP(超⽂本传输)协议访问互联⽹上的数据是没有经过加密的。也就是说,任何⼈都可以通过适当的⼯具拦截或者监听到在⽹络上传输的数据流。但是有时候,我们需要在⽹络上传输⼀些安全性或者私秘性的数据,譬如:包含信⽤卡及商品信息的电⼦订单。这个时候,如果仍然使⽤HTTP协议,势必会⾯临⾮常⼤的风险!相信没有⼈能接受⾃⼰的信⽤卡号在互联⽹上裸奔。
HTTPS(超⽂本传输安全)协议⽆疑可以有效的解决这⼀问题。所谓HTTPS,其实就是HTTP和SSL/TLS的组合,⽤以提供加密通讯及对⽹络服务器的⾝份鉴定。HTTPS的主要思想是在不安全的⽹络上创建⼀安全信道,防⽌⿊客的窃听和攻击。
SSL(安全套接层)可以⽤来对Web服务器和客户端之间的数据流进⾏加密。
SSL利⽤⾮对称密码技术进⾏数据加密。加密过程中使⽤到两个秘钥:⼀个公钥和⼀个与之对应的私钥。
使⽤公钥加密的数据,只能⽤与之对应的私钥解密;⽽使⽤私钥加密的数据,也只能⽤与之对应的公钥解密。因此,如果在⽹络上传输的消息或数据流是被服务器的私钥加密的,则只能使⽤与其对应的公钥解密,从⽽可以保证客户端与与服务器之间的数据安全。
2)数字证书
所谓数字证书,是⼀种⽤于电脑的⾝份识别机制。由数字证书颁发机构(CA)对使⽤私钥创建的签名请求⽂件做的签名(盖章),表⽰CA 结构对证书持有者的认可。数字证书拥有以下⼏个优点:
使⽤数字证书能够提⾼⽤户的可信度
数字证书中的公钥,能够与服务端的私钥配对使⽤,实现数据传输过程中的加密和解密
在证认使⽤者⾝份期间,使⽤者的敏感个⼈数据并不会被传输⾄证书持有者的⽹络系统上
X.509证书包含三个⽂件:key,csr,crt。
key是服务器上的私钥⽂件,⽤于对发送给客户端数据的加密,以及对从客户端接收到数据的解密
csr是证书签名请求⽂件,⽤于提交给证书颁发机构(CA)对证书签名
crt是由证书颁发机构(CA)签名后的证书,或者是开发者⾃签名的证书,包含证书持有⼈的信息,持有⼈的公钥,以及签署者的签名等信息
备注:在密码学中,X.509是⼀个标准,规范了公开秘钥认证、证书吊销列表、授权凭证、凭证路径验证算法等。
3)⾃签证书的区别
⾃签名私有证书VS私⼜CA⾃签名证书
⾃签名证书分为⾃签名私有证书和⾃签名CA证书两种,区别是私有证书⽆法被吊销,⾃签的CA证书可以被吊销。能不能吊销证书的区别我理解是CA证书有⼀套证书吊销机制,可以决定什么情况吊销证书,⽽私有证书没有这种安全机制(数据完整性,过期时间之类的吧),对于被劫持的风险更⾼()(使⽤⾃签的系统有⼏个是重要的,况且即便是⾃签的证书也会被浏览器提⽰未认证的签名机构,不过有的浏览器可能对于私有证书这种认证会直接拒绝连提⽰的机会都不给)
再⼀个区别就是需要创建多个客户端证书的时候,推荐使⽤CA证书,因为只要给所有的客户端(有待推敲)都安装了 CA 根证书,那么以该 CA 根证书签名过的客户端证书都是信任的,不需要重复的安装客户端证书。
申请权威机构的CA证书VS⾃签名CA证书
横机罗纹
1、权威CA机构申请的证书要花银⼦,⾃签证书不要银⼦
2、⾃签证书会出现google浏览器不认的情况,⽐较⿇烦。漏洞也多,对安全不利。
3、使⽤机构签发的证书时候需要联⽹签发,内⽹机器不⽤想
所以公⽹服务踏实的买证书,内⽹机器踏实的⾃签证书。
4)证书类型
x509的证书编码格式有两种
1.PEM(Privacy-enhanced Electronic Mail) 是明⽂格式的以 -----BEGIN CERTIFICATE-----开头,已-----END CERTIFICATE-----结尾,中间是经过base64编码的内容,apache需要的证书就是这类编码的证书查看这类证书的信息的命令为:openssl x509 -noout -text -in server.pem 其实PEM就是把DER的内容进⾏了⼀次base64编码
碱含量2.DER 是⼆进制格式的证书查看这类证书的信息的命令为:openssl x509 -noout -text -inform der -in server.der
扩展名:
.crt 证书⽂件,可以是DER(⼆进制)编码的,也可以是PEM( ASCII (Base64) )编码的,在类unix系统中⽐较常见
.cer 也是证书常见于Windows系统编码类型同样可以是DER或者PEM的,windows 下有⼯具可以转换crt到cer
科技传播.csr 证书签名请求⼀般是⽣成请求以后发送给CA,然后CA会给你签名并发回证书
.key ⼀般公钥或者密钥都会⽤这种扩展名,可以是DER编码的或者是PEM编码的查看DER编码的(公钥或者密钥)的⽂件的命令为openssl rsa -inform DER -noout -text -in xxx.key 查看PEM编码的(公钥或者密钥)的⽂件的命令为 openssl rsa -inform PEM -noout -text -in xxx.key
.p12 证书包含⼀个X509证书和⼀个被密码保护的私钥
⼆、制作⾃签证书
1)⾃签私有证书
2)私有CA认证
私有CA就是⾃⼰创建⼀个CA根证书代替权威CA机构,然后⽤私有的根证书签发客户端证书
创建CA根证书
centos默认安装了openssl,看⼀下⽬录
/etc/pki/CA /etc/pki/tls
/etc/pki/CA/
newcerts    存放CA签署(颁发)过的数字证书(证书备份⽬录)
private    ⽤于存放CA的私钥
crl 吊销的证书
/etc/pki/tls/
cert.pem    软链接到
certs/      该服务器上的证书存放⽬录,可以放⾃⼰的证书和内置证书
<    内置信任的证书
private    证书密钥存放⽬录
opensslf    openssl的CA主配置⽂件
openssl的配置⽂件为opensslf,⼀般存储在/etc/pki/tls/⽬录下。⼀定要注意配置⽂件中 [ policy_match ]标签下设定的匹配规则。有可能因为证书使⽤的⼯具不⼀样,导致即使设置了csr中看起来有相同的countryName,stateOrProvinceName等,但在最终⽣成证书时依然报错。⼀般情况下,配置⽂件不需要改动。
⽣成根证书
1.⽣成根证书密钥
cd /etc/pki/CA/
openssl genrsa -out ./private/ca.key 2048
2.⽣成根证书请求
openssl req -new -in ./private/ca.key -out ca.csr
3.⽣成根证书
openssl x509 -req -in ca.csr -signkey ./private/ca.key -extensions v3_ca -
灵魂之语签发证书
我们可以⽤CA根证书签发证书,也可以创建中间CA,使⽤中间CA签发证书。创建中间CA的好处是即使中间CA的私钥泄露,造成的影响也是可控的,我们只需要使⽤root CA撤销对应中间CA的证书即可。此外root CA的私钥可以脱机妥善保存,只需要在撤销和更新中间CA证书时才会使⽤。基于根证书创建中间CA与创建根证书过程类似。我们新建⼀个⽬录⽤于保存中间证书信息
创建中间证书(可以不做)
#准备环境
mkdir /etc/pki/CA/intermediate
cd /etc/pki/CA/intermediate
mkdir certs crl newcerts private
chmod 700 private
echo 1000 > serial
#⽣成密钥
cd /etc/pki/CA
openssl genrsa -aes256 -out intermediate/private/ca.key 2048
#新建请求
openssl req -config intermediate_CAf -sha256 -new -key intermediate/private/ca.key -out intermediate/certs/ca.csr
#签发中间CA证书
openssl ca -config root_CAf -extensions v3_ca -notext -md sha256 -in intermediate/certs/ca.csr -out intermediate/
利⽤根证书或者中间证书签发客户端证书的步骤如下:
mkdir -p /root/ca
1.新建证书密钥
openssl genrsa -out /root/ca/server.key 2048
2.新建证书请求
注意要和刚才ca证书申请的,信息⼀致
openssl req -new -in /root/ca/server.key -out /root/ca/server.csr
3.CA签发证书
openssl x509 -req -in /root/ca/server.csr -CA /etc/pki/ -CAkey /etc/pki/CA/private/ca.key -CAcreateserial -out /root/
4.证书有效性验证
openssl verify -CAfile /etc/pki/ /root/
5.不同客户端证书格式转换
#crt,pem格式证书可⽤于linux/nginx/node.js格式客户端
#p12(pkcs12)格式证书⽤于tomcat/java/android客户端
#打包为p12证书
澳大利亚电影糖果openssl pkcs12 -export -in /root/ -inkey /root/ca/server.key -out /root/ca/server.p12
6.吊销证书
#获取要吊销的证书的serial
openssl x509 -in /root/ -noout -serial -subject
#对⽐serial与subject 信息是否与中的信息⼀致
#如果⼀致,则可以吊销证书
openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
#如果是第⼀次吊销证书,需要指定吊销的证书编号
echo 01 >/etc/pki/CA/crlnumber
#更新吊销证书列表
openssl ca -gencrl -out /etc/pki/CA/crl.pem
#完成后,可查看吊销的证书列表
openssl crl -in /etc/pki/CA/crl.pem -noout -text
三、使⽤
play
1、在项⽬⾥新建⼀个⽂件夹
2、将刚才签好客户端证书、server.key放到这⾥
3、打开配置⽂件f
4、添加以下三⾏
https.port=8000
certificate.key.file=      不要使⽤绝对路径
certificate.file=
5、重启项⽬ play restart
harbor
cat > v3.ext <<-EOF
梼杌闲评
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=testca
DNS.2=web
EOF
subj = /C=ch/ST=State or Province Name/L=beijing/O=jss/OU=jss/CN=yqpt2/emailAddress=testemail@qq 样例
1. mdkir -p /root/ca;cd /root/ca  放到⼀个⽬录⾥也可以,最后再把ca放到private⾥,⽅便管理
根CA
2. openssl genrsa -out ca.key 4096
3. openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=mydomain" -key ca.key - 签发客户端证书
5. openssl genrsa -out mydomain.key 4096
6. openssl req -sha512 -new -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=mydomain" -key mydomain.key -out mydomain.csr
7. openssl x509 -req -sha512 -days 3650 - - -CAkey ca.key -CAcreateserial -in mydomain.csr -
验证证书
8. openssl verify -

本文发布于:2024-09-21 16:26:26,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/342596.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:证书   客户端   吊销   签名   数据   加密   需要
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议