证书与CA:
证书是公钥证书的简称,是一段由公钥、身份标识等附加信息构成的数据,其格式和编码需要遵循行业标准才能被不同的信息系统正确解析,比如X509标准。身份标识信息指定了证书的拥有者,类似于公民身份证指定了一个人,可以认为证书就是网络身份证。公民身份证由公安局颁发,数字证书则由Certification Authority(简称CA)颁发。和公民身份证一样,证书在需要被用到的时候是公开的,可以被其他软件所获取到,以证实其身份。读者可能会疑问:“证书被其他系统获取后,冒充真实的证书拥有者怎么办?”这就是证书和身份证的重要差别之处。因为证书中包含公钥,但不包含私钥,所以其他系统只能通过证书进行身份验证,但由于无法获得私钥,也就无法冒充证书拥有者。
证书的用途:
证书包含公钥,公钥可以做数据加密和签名验证,因此,证书通常被用来做数据加密和签名验证,分别被称之为加密证书和签名证书。
用OpenSSL工具制证:
1创建一对秘钥,公钥public-key、私钥private-key,这一动作可以被后续命令合并执行,无需单独执行;将用户身份标识信息,比如Common-Name、DNS、以及附加信息等写入配置文件中,将序列号写入序列号文件中,并建立空白的索引文件,配置文件、序列号文件、索引文件的格式及内容含义可参阅OpenSSL手册或网络博文。
2用私钥private-key对公钥public-key以及身份标识信息签名,形成一个证书请求文件,文件后缀名是什么不重要,通常用.csr或.req。
根据选择的公钥算法类型,这两步所使用的openssl命令及其数目是不一样的。
RSA算法:
openssl req –new -config [配置文件] -newkey rsa:[ RSA算法位数] -nodes –keyout [用户私钥文件] –out [证书请求文件]
DSA算法:
openssl dsaparam –genkey –out [用户私钥文件] [DSA算法位数]
openssl req –new –config [配置文件] –key [用户私钥文件] –out [证书请求文件]
ECDSA算法:
openssl ecparam –genkey –out [用户私钥文件] –name [椭圆曲线参数]
openssl req –new –config [配置文件] –key [用户私钥文件] –out [证书请求文件]
3用CA的私钥对证书请求文件签名生成用户证书,证书文件名是[证书序列号.pem],所在位置由配置文件里的相应参数指定:
openssl ca –config [配置文件] –batch –notext –passin pass:[CA私钥文件的加密密码] –in [证书请求文件]
4将CA根证书、用户证书、用户私钥一起封装到P12格式的文件中,然后根据需要,可将P12文件再转换为PEM格式。
openssl pkcs12 –export –in [用户证书文件] –certfile [CA根证书文件] -inkey [用户私钥文件] –passout pass:[P12文件的加密密码] –out [P12文件] -name [用户证书别名] –caname [CA证书别名]
openssl pkcs12 –in [P12文件] -passin pass:[P12文件的加密密码] –passout pass:[PEM文件的加密密码] –out [PEM文件]
5妥善处理以上步骤生成的各类文件,要特别注意私钥文件的安全,并注意保存证书请求文件、最终生成的P12 文件。
网友评论