CA是证书的签发机构,它是PKI的核心。CA是负责签发证书、认证证书、管理已颁发证书的机关。它要制定政策和具体步骤来验证、识别用户身份,并对用户证书进行签名,以确保证书持有者的身份和公钥的拥有权,那么有一个疑问,谁给CA来颁发证书呢,嘿嘿,固然是它本身给本身颁发了。linux
openssl是一款开源的加密工具,在Linux环境下,咱们可以利用它来搭建一个CA来实现证书的发放,能够用于企业内部使用的加密工具。 算法
加密机制:明文加密: telnet ftp pop3 密码不可靠 ;sendmail NFS NIS 信息数据的不可靠; rsh rcp 验证的不可靠vim
常见的算法:安全
md2 md5 mdc2 rmd160 sha sha1 ---> md5 sha1服务器
三、对称加密: DES 3DES AES Twofish RC6并发
四、非对称加密:公钥加密 基于单向函数功能实现,密钥成对出现dom
CA:证书颁发机构 公信力的第三方ide
其具体步骤流程为:
发送方:函数
接收方:
工具
下面用redhat 开源的openssl来搭建一个CA,并实现证书的颁发
##linux下的ssl是由openssl提供的。
- [root@server1 tls]#vim openssl.cnf #ca的配置文档
- [ CA_default ]
- dir = /etc/pki/CA #CA存放的路径
- certs = $dir/certs #存放签名的公钥
- crl_dir = $dir/crl # 证书过时列表,存放过时证书
- database = $dir/index.txt # 证书颁发、吊销的信息
- new_certs_dir = $dir/newcerts # 证书副本(吊销凭证)
- certificate = $dir/cacert.pem #CA公钥(任何人均可以拥有的)
- serial = $dir/serial # 序列号(每做一次签名,序列号就增长1)
- crlnumber = $dir/crlnumber #吊销序列号
- crl = $dir/my-ca.crl #吊销证书名单列表
- private_key = $dir/private/cakey.pem # 私钥 与产生本身私钥的名字对应
- RANDFILE = $dir/private/.rand # private random number file
- x509_extensions = usr_cert # The extentions to add to the cert
- default_days = 365 # 证书有效期
- default_crl_days= 30 #crl更新时间
- [ policy_match ]
- countryName = match #国家代码必须彻底匹配能够修改成optional
- stateOrProvinceName = match #
- organizationName = match
- organizationalUnitName = optional #optional能够不同
- commonName = supplied #表明惟一身份,必须不匹配
- emailAddress = optional
- [ req_distinguished_name ]
- countryName = Country Name (2 letter code)
- countryName_default = CN #国家代码
- countryName_min = 2
- countryName_max = 2
- stateOrProvinceName = State or Province Name (full name)
- stateOrProvinceName_default =henan
- localityName = Locality Name (eg, city)
- localityName_default = zhengzhou #城市
- 0.organizationName = Organization Name (eg, company)
- 0.organizationName_default = Example, Inc. #组织
##openssl.cnf配置完成
- [root@server1 tls]# cd ../CA/
- [root@server1 CA]# ls
- private
- [root@server1 CA]# mkdir {certs,newcerts,crl} #建立刚才定义的那几个目录
- [root@server1 CA]# ls
- certs crl newcerts private
- [root@server1 CA]# echo 01 > serial ;touch index.txt #分配一个开始序列号并建立index.txt
开始生成CA中心本身的私钥
- [root@server1 CA]#(umask 077; openssl genrsa –out private/cakey.pem 2048 )
- Generating RSA private key, 2048 bit long modulus
- ..................+++
- .........................................................................................................................................+++
- e is 65537 (0x10001)
- Enter pass phrase for private/cakey.pem:redhat #输入私钥密码
- Verifying - Enter pass phrase for private/cakey.pem:redhat #确认输入
经过私钥来生成公钥:
- [root@server1 CA]# openssl req -new -x509 -key private/cakey.pem -days 365 -out cacert.pem
- Enter pass phrase for private/cakey.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) [CN]:
- State or Province Name (full name) [henan]:
- Locality Name (eg, city) [zhengzhou]:
- Organization Name (eg, company) [Example, Inc.]:
- Organizational Unit Name (eg, section) []:
- Common Name (eg, your name or your server's hostname) []:server1.example.com
- Email Address []:
CA中心已经搭完了,此时就能够做为一个被信任的机构来为其余颁发证书了
给httpd服务颁发证书
一、新建并进入工做目录
- [root@server1 ~]# cd /etc/httpd
- [root@server1 httpd]# mkdir certs #存放证书信息
- [root@server1 certs]# cd certs
二、模拟客户机生成密钥
- [root@server1 certs]# openssl genrsa 1024 > httpd.key
- [root@server1 certs]# chmod 400 httpd.key
三、生成并向CA提交申请
填写的信息要与CA保持一致
- [root@server1 certs]# openssl req -new -key httpd.key -out httpd.csr #后缀名
四、将CA申请提交给CA服务器
五、在服务器端192.168.0.21签署证书
- # scp httpd.csr 192.168.0.1:/tmp
证书生成之后就能够直接发给客户端了 此时证书颁发完毕,
- # cd /tmp
- # openssl ca -in httpd.csr -out /etc/pki/CA/certs/httpd.crt
证书申请和颁发没有留有图片。有什么疑问能够直接留言,相互促进,相互学习!!!