zoukankan      html  css  js  c++  java
  • 私有CA和证书

    证书类型

    	证书授权机构的证书
    	服务器
    	用户证书
    

    获取证书两种方法

    	使用证书授权机构:
    		生成签名请求(csr )
    		将csr发送给CA
    		从CA处接收签名
    	自签名的证书:
    		自已签发自己的公钥
    

    openSSL工具可以满足我们创建CA和证书

    	1)PKI: Public Key Infrastructure
    		签证机构:CA (Certificate Authority),真正的颁发证件机构,相当于公安局 
    		注册机构:RA,相当于派出所
    		证书吊销列表:CRL,相当于证件丢失时挂失的内容
    		证书存取库:当别人请求认证是的资料库。
    	
    	2)数字证书的格式(X.509) :定义了证书的结构以及认证协议标准
    		版本号
    		序列号:CA用于唯一标识的此证书
    		签名算法:
    		颁发者:CA自己的名称
    		有效期限
    		主体名称:证书拥有者自己的名字
    		主体公钥:证书拥有者自己的公钥
    		CRL 分发点
    		扩展信息
    		发行者签名:CA对此证书的数字签名
    	
    	3)证书申请及签署步骤:
    		1 、生成申请请求
    		2 、RA 核验
    		3 、CA 签署
    		4 、获取证书
    

    创建私有CA和颁发证书:

    	openssl 的配置文件:
    		/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 ctificates 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
    		
    	三种策略:匹配、支持和可选
    		匹配指要求申请填写的信息跟CA设置信息必须一致,
    		支持指必须填写这项申请信息,
    		可选指可有可无
    		
    	1)创建所需要的文件
    		生成证书索引数据库文件:
    			touch /etc/pki/CA/index.txt  
    			系统会自动生成个index.txt.attr文件,用来决定是否使证书为唯一性,也就是是否可以重复申请证书
    		指定第一个颁发证书的序列号:
    			echo 01 > /etc/pki/CA/serial  
    	
    	2)CA自签证书
    		生成私钥:
    			cd /etc/pki/CA/
    			openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048
    			chmod 600 cakey.pem
    		生成自签名证书:
    			openssl req -new -x509 –key /etc/pki/CA/private/cakey.pem -days 7300 -out  /etc/pki/CA/cacert.pem
    			
    	3)颁发证书
    		1》在需要使用证书的主机生成证书请求
    			在请求者Kernal的web服务器生成私钥:
    				(umask 066; openssl genrsa -out /etc/pki/tls/private/test.key 2048)
    			
    			在请求者Kernal上生成证书申请文件:
    				openssl req -new -key /etc/pki/tls/private/test.key  -days 365 -out /etc/pki/tls/test.csr
    		2》将证书请求者Kernal的文件传输给CA
    		3》CA签署证书,并将证书颁发给请求者Kernal:
    			openssl ca -in /tmp/test.csr –out  /etc/pki/CA/certs/test.crt -days 365
    			 注意:
    				默认国家,省,公司名称三项必须和CA一致,但可以修改/etc/pki/tls/openssl.cnf
    				common name要使用此主机在通信真实使用的名字
    		4》查看证书中的信息:
    			openssl x509 -in  /PATH/FROM/CERT_FILE -noout -  text|issuer|subject|serial|dates
    			openssl ca -status SERIAL:查看指定编号的证书状态 
    	
    	4)吊销证书
    		1》在客户端获取要吊销的证书的serial(序列号)
    			openssl x509 -in /PATH/FROM/cert_FILE -noout  -serial -subject
    		2》在CA 上,根据客户提交的serial 与subject信息,对比检验是否与index.txt 文件中的信息一致,吊销证书:
    			openssl ca -revoke /etc/pki/CA/newcerts/0SERIAL .pem
    		3》指定第一个吊销证书的编号
    			注意:第一次更新证书吊销列表前,才需要执行
    			echo 01 > /etc/pki/CA/crlnumber
    		4》更新证书吊销列表
    			openssl ca -gencrl -out /etc/pki/CA/crl/crl.pem
    			查看crl 文件:
    				openssl crl -in /etc/pki/CA/crl/crl.pem -noout -text
    	
    	5)请求者Kernal作为下级CA
    		1》Kernal生成自己的私钥:
    			openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048
    			chmod 600 cakey.pem
    		2》Kernal向根CA申请证书:
    			openssl req -new  -key  /etc/pki/CA/private/cakey.pem  -out  /etc/pki/tls/testsubca.csr
    			将亲求文件发给根CA
    		3》根CA颁发子CA证书给请求者Kernal,并发给Kernal:
    			openssl   ca  -in  testsubca.csr  -out  /etc/pki/CA/certs/testsubca.crt
    			将testsubca.crt发送给Kernal
    			在kernal上讲testsubca.crt 改名为cacert.pem并放置在 /etc/pki/CA
    		4》Kernal给请求者Berl颁发证书
    			在请求者Berl的web服务器生成私钥
    			在请求者Berl上生成证书申请文件
    			将证书请求者Kernal的文件传输给Kernal(CA)
    			Kernal(CA)签署证书,并将证书颁发给请求者Berl
    
  • 相关阅读:
    李洪强IOS经典面试题 33-计算有多少个岛屿
    李洪强iOS经典面试题32-简单介绍 ARC 以及 ARC 实现的原理
    李洪强iOS经典面试题31-解释垃圾回收的原理
    iOS音频合并
    Macbook小问题
    weex-iOS集成
    WEEX快速入门
    Mac上Nginx-增加对HLS的支持
    iOS直播-基于RTMP的视频推送
    iOS直播-播放基于RTMP协议的视频
  • 原文地址:https://www.cnblogs.com/shenxm/p/8448691.html
Copyright © 2011-2022 走看看