要生成证书的目录下建立几个文件和文件夹,有
概念:首先要有一个根证书,然后用根证书来签发用户证书。
用户进行证书申请:一般先生成一个私钥,然后用私钥生成证书请求(证书请求里应含有公钥信息),再利用证书服务器的根证书来签发证书。
特别说明: (2)根证书:根证书是CA认证中心给自己颁发的证书,是信任链的起始点。安装根证书意味着对这个CA认证中心的信任 数字证书则是由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机构的公章)后形成的一个数字文件。数字证书包含证书中所标识的实体的公钥(就是说你的证书里有你的公钥),由于证书将公钥与特定的个人匹配,并且该证书的真实性由颁发机构保证(就是说可以让大家相信你的证书是真的),因此,数字证书为如何找到用户的公钥并知道它是否有效这一问题提供了解决方案。 openssl中有如下后缀名的文件
.key格式:私有的密钥
.csr格式:证书签名请求(证书请求文件),含有公钥信息,certificate signing request的缩写
.crt格式:证书文件,certificate的缩写
.crl格式:证书吊销列表,Certificate Revocation List的缩写
.pem格式:用于导出,导入证书时候的证书的格式,有证书开头,结尾的格式
常用证书协议
x509v3: IETF的证书标准 x.500:目录的标准 SCEP: 简单证书申请协议,用http来进行申请,数据有PKCS#7封装,数据其实格式也是PKCS#10的 PKCS#7: 是封装数据的标准,可以放置证书和一些请求信息 PKCS#10: 用于离线证书申请的证书申请的数据格式,注意数据包是使用PKCS#7封装这个数据 PKCS#12: 用于一个单一文件中交换公共和私有对象,就是公钥,私钥和证书,这些信息进行打包,加密放在存储目录中,CISCO放在NVRAM中,用户可以导出,以防证书服务器挂掉可以进行相应恢复。思科是.p12,微软是.pfx 再说步骤: 生成CA私钥--》生成CA证书请求--》自签名得到根证书(CA给自已颁发的证书) 生成私钥--》生成证书请求--》通过CA签名得到证书 ----------------------------------------------------------------------------------------
1.生成X509格式的CA自签名证书 $openssl rsa -in ca.key -out ca.key.unsecure //生成一个不需要口令保护的私钥,不推荐,可以于去除密码 * 对已生成csr请求的证书进行自签名的无交互全自动命令: $openssl -x509 -req -in csr/ca.csr -out newcerts/ca-cert.pem -signkey private/ca-key.pem -passin pass:999999 -days 3650
2.生成服务端的私钥(key文件)及csr 文件
[无交互全自动:$openssl genrsa -des3 -passout pass:111111 -out server.key 1024] [无交互全自动:$openssl req -new -passin pass:111111 -key server.key -out server.csr -subj "/C=CN/ST=Guangdong/L=Shenzhen/O=atco company/OU=IT/CN=it.atco.com/emailAddress=atco@163.com"]
3.生成客户端的私钥(key文件)及csr文件
4.用生成的CA的证书为刚才生成的server.csr,client.csr文件签名 *进行CA签名获取证书时,需要注意国家、省、单位需要与CA证书相同,否则会报: The countryName field needed to be the same in the CA certificate (cn) and the request (sh) *进行CA签名获取证书时,如果信息完全和已有证书信息相同会报错,即不能生成相同的证书,报错信息为:
failed to update database
*在进行CA签名获取证书时,可对证书的有效起止时间作控制,默认有效期是一年,可用-days 3650这样的方式改为10年,如想更精确控制,可使用-startdate 和-enddate参数,如-startdate 120501000000Z -enddate 120601000000Z,日期格式为yyMMddHHmmssZ,分别表示年,月,日,时, 分,秒. 其中"Z"是遗留自初始的UTCTIME. 如果没有"Z",就允许两种附加组"[+/-]hh 'mm'",其中"hh"和"mm"分别为与GMT的时差和分差.
如果有"Z",则时间是以Zulu或GMT时间表示.注:如出现:unable to access the ./demoCA/newcerts directory [ CA_default ] dir = C:\\OpenSSL\\bin\\demoCA (原值是:./demoCA,注意路径用双斜杠)
5. 生成p12格式证书 (思科是.p12,微软是.pfx) 说明:-in 为欲转换为p12文件的证书文件,-inkey为与转换为p12文件的证书私钥文件,-passin 为私钥文件密码,-out为p12文件,-passout为p12文件打开密码
6.生成pem格式证书
7.PFX文件转换为X509证书文件和RSA密钥文件
8. 其他相关命令 生成 服务端证书:ca.crt, server.key, server.crt, server.pem, server.pfx 客户端证书:ca.crt, client.key, client.crt, client.pem, client.pfx |
|