如何创建证书请求
来源:互联网 发布:网络诗赛2016 编辑:程序博客网 时间:2024/04/30 03:58
X509证书实质是公钥和与之相关的拥有者和签发者的一个打包。因此,为了创建一个证书请求,必须先产生一个公私密钥对。X.509证书在openssl中是用X509_REQ对象表示的。证书请求中主要包括密钥对中的公钥部分,除此之外还包括subjectName字段和其他一些X.509的属性。这些属性对于证书请求来说是可选参数,但是subject name却是必须有的。
X509_NAME对象类型代表证书的名称。具体说来证书请求只包含subject name,但是完整的证书包含subject和issuer name。设置名称字段目的是为了完整地标识一个实体--一台服务器,某个人,或者一家公司等等。对于这些实体,名称字段包括多个条目比如country name,organization name和common name等。
理论上在名称中可以包含任意的字段,但实际上有一些标准规定。在oenssl内部通过一个整数来标识字段,也就是NID。
如前所述,证书名称是由X509_NAME对象表示的。该对象实质是X509_NAME_ENTRY对象的集合。每一个X509_NAME_ENTRY对象代表了名称中一个字段及其相应的内容值。因此,需要为每一个字段创建X509_NAME_ENTRY对象,然后将之放入证书请求的名称字段中。首选查找需要创建的字段的NID,通过NID创建X509_NAME_ENTRY对象并添加数据,然后将该字段条目加入X509_NAME中,如此重复直到组装好名称字段后,就可以添加到X509_REQ对象中。
X509 V3扩展项
SSL中非常有用的一个扩展是subjectAltName。该扩展包含一个dNSName的字段,这个字段包含了终端实体处理证书需要的FQDN。在发送证书请求给CA制作证书之前,有必要先添加扩展项。
X509_EXTENSION类型对象代表了X509对象内部的单项扩展条目。添加扩展的过程简言之是把所有要求的扩展项添加到STACK_OF(X509_EXTENSION)对象中,再将该STACK加入到证书请求中即可。
回顾一下创建证书请求:首先创建X509_REQ对象,为之添加一个subject name和公钥,添加所有需要的扩展项,最后使用私钥对请求进行签名。为了表示公钥和私钥组成部分,这里使用通用EVP_KEY类型以及相应的函数。Openssl中消息摘要算法是通过EVP_MD对象表示的。基于要签发key的类型--RSA或者DSA,我们需要制定不同的EVP_MD对象。但是在签名时候并不知道公钥算法,因此必须使用抽象EVP_PKEY接口。可以通过探究EVP_PKEY对象内部知道其算法。。。。( 这一段不甚明了。)
使用合适的PEM调用来读取私钥。公钥是私钥中信息的一个子集( a public key is a subset of the information in a private key)。
- 如何创建证书请求
- 如何解决更新证书、或者创建SSL证书的时候显示“无法生成证书请求,拒绝访问”等提示信息
- 如何创建签名证书
- 如何使用openssl创建根CA和中间CA以及签署其他client证书请求
- 01.openssl-创建证书签名请求
- C#通过CertEnroll.dll创建证书请求并生成证书
- 如何添加SSL证书实现https请求
- 通过CertEnroll在CA上(1创建证书请求2得到证书3安装证书)
- 通过CertEnroll在CA上(1创建证书请求2得到证书3安装证书)
- C#创建https请求并使用pfx证书
- C#创建一个PKCS#10(p10)的证书请求文件
- C#创建https请求并使用pfx证书
- 使用HttpWebRequest请求远端服务器时如何加载SSL证书
- 关于httpclient 请求https (如何绕过证书验证)
- 关于httpclient 请求https (如何绕过证书验证)
- java请求https地址如何绕过证书验证?
- 关于httpclient 请求https (如何绕过证书验证)
- java 关于httpclient 请求https (如何绕过证书验证)
- armplayer/android6410/s3c6410/arm11 开发板+4.3寸TFT+22DVD
- armplayer 风靡全球的Android s3c6410 arm11 手机开发板 超低价
- 你此刻遇见了誰?
- struts和webwork比较
- 几个有用的socket选项
- 如何创建证书请求
- Huffman编码
- SmartFoxServer项目完成总结
- 模拟电子技术34 51-------- 运算放大器 差模电路 续
- 面试题整理(更新中)
- VBS脚本:CopyFile
- 推荐几个视频网站
- 学习使用 GNU GDB Debugger
- j2me解压GZIP