http://my.opera.com/yuyii/blog/openssl-2

通过OPENSSL建立证书以及CSR证书签名过程

Thursday, 15. March 2007, 09:35

SSL

CSR证书签名过程:
1。用户先拥有一个自己的密钥
openssl genrsa -des3 -out my.key 1024
建立密钥,以为1024位加密。

2。通过密钥建立自己的CSR文件,其中cnf文件为配置文件,openssl也自带cnf文件
openssl req -new -config my.cnf -key my.key -out my.csr
建立csr文件
cnf举例:

[req] default_bits=1024 distinguished_name=req_distinguished_name prompt=no string_mask=nombstr req_extensions=v3_req [req_distinguished_name] CN=fin1983@hotmail.com [v3_req] nsCertType=server,client basicConstraints=critical,CA:false

============之后为服务器要做的事=========
3。提交给服务器签名生成证书
openssl ca -batch -config ca.cnf -key 123456 -in my.csr -out my.crt
123456假设为根证书的密码
ca.cnf举例:

[ca] default_ca=default_CA [default_CA] dir=/tmp/sslPath certs=/tmp/sslPath new_certs_dir=/tmp/sslPath database=/tmp/sslPath/dbfile serial=/tmp/sslPath/serialfile certificate=/tmp/sslPath/rootcrtfile private_key=/tmp/sslPath/rootkeyfile default_crl_days=30 default_startdate=070307000000Z default_enddate=371231000000Z default_md=md5 preserve=yes x509_extensions=user_cert policy=policy_anything crl_extensions=crl_ext [policy_anything] commonName=supplied [user_cert] subjectAltName=email:copy basicConstraints=critical,CA:false

预先在sslPath目录下建立dbfile,serialfile,rootcrtfile以及rootkeyfile
dbfile 空
serialfile 自定义,随意设个数字,例如21
rootcrtfile 服务端证书
rootkeyfile 服务端密钥

===============如果csr与私钥在客户端,则此过程无法在服务器端完成========
4。生成PKCS12文件。
openssl pkcs12 -export -in my.crt -inkey my.key -password pass:$userpass -out my.pfx
$userpass为证书的密码保护,可有可无。

另,签名csr文件时似乎不能重复签名。在配置里需要做一点改动,否则会失败。例如serial必须保证unique等等

补充一些文件格式:
在Security编程中,有几种典型的密码交换信息文件格式:
DER-encoded certificate: .cer, .crt
PEM-encoded message: .pem
PKCS#12 Personal Information Exchange: .pfx, .p12
PKCS#10 Certification Request: .p10
PKCS#7 cert request response: .p7r
PKCS#7 binary message: .p7b

.cer/.crt是用于存放证书,它是2进制形式存放的,不含私钥。
.pem跟crt/cer的区别是它以Ascii来表示。
pfx/p12用于存放个人证书/私钥,他通常包含保护密码,2进制方式
p10是证书请求
p7r是CA对证书请求的回复,只用于导入
p7b以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥

算法
base64不是加密算法,但也是SSL经常使用的一种算法,它是编码方式,用来把asc码和二进制码转来转去的。

openssl x509部分命令
打印出证书的内容:
openssl x509 -in cert.pem -noout -text
打印出证书的系列号
openssl x509 -in cert.pem -noout -serial
打印出证书的拥有者名字
openssl x509 -in cert.pem -noout -subject
以RFC2253规定的格式打印出证书的拥有者名字
openssl x509 -in cert.pem -noout -subject -nameopt RFC2253
在支持UTF8的终端一行过打印出证书的拥有者名字
openssl x509 -in cert.pem -noout -subject -nameopt oneline -nameopt -escmsb
打印出证书的MD5特征参数
openssl x509 -in cert.pem -noout -fingerprint
打印出证书的SHA特征参数
openssl x509 -sha1 -in cert.pem -noout -fingerprint
把PEM格式的证书转化成DER格式
openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER
把一个证书转化成CSR
openssl x509 -x509toreq -in cert.pem -out req.pem -signkey key.pem
给一个CSR进行处理,颁发字签名证书,增加CA扩展项
openssl x509 -req -in careq.pem -extfile openssl.cnf -extensions v3_ca -signkey key.pem -out cacert.pem
给一个CSR签名,增加用户证书扩展项
openssl x509 -req -in req.pem -extfile openssl.cnf -extensions v3_usr -CA cacert.pem -CAkey key.pem -CAcreateserial

查看csr文件细节:
openssl req -in my.csr -noout -text

通过OPENSSL建立证书以及CSR证书签名过程相关推荐

  1. 转 openssl 建立服务器证书

    openssl 建立服务器证书 ##  1,建立目录和文件     set path=D:/openssl/bin     D:     cd D:/openssl/conf/     ren ope ...

  2. iOS -- OpenSSL生成RSA双密匙+签名证书(流程)

    1.生成一对RSA密匙(非对称密匙,包含1个公共+一个私用),  $ openssl genrsa -out  <fichier>  <taille> 例子: openssl ...

  3. 基于 OpenSSL 生成自签名证书,数字签名,泛域名证书,ca证书,PKI等

    基于 OpenSSL 生成自签名证书_qhh0205-CSDN博客_openssl自签名证书 windows 下 nginx 双向认证自签名证书配置 windows 下 nginx 双向认证自签名证书 ...

  4. 建立私有CA实现证书申请颁发

    CA和证书 PKI:Public Key Infrastructure 公共密钥加密体系 签证机构:CA(Certificate Authority) 注册机构:RA 证书吊销列表:CRL 证书存取库 ...

  5. 使用OpenSSL生成自己服务器的证书

    之前做实验的时候,曾经写过一篇博客,如何使用OpenSSL创建证书.这里再做一个整理,增加一些内容,精简一部分内容. 参考链接 OpenSSL Certificate Authoirty 信安实践-- ...

  6. Autosar之自签名证书与CA证书

    文章目录 一.安全传输 1.框架 2.如何实现传输安全? 3. 对称加密和非对称加密的区别? 4.伪随机数和真随机数 5.数字签名 -- 验证完整性 & 认证数据来源 6.为什么使用摘要算法的 ...

  7. 深入浅出 SSL/CA 证书及其相关证书文件(pem、crt、cer、key、csr)

    互联网是虚拟的,通过互联网我们无法正确获取对方真实身份.数字证书是网络世界中的身份证,数字证书为实现双方安全通信提供了电子认证.数字证书中含有密钥对所有者的识别信息,通过验证识别信息的真伪实现对证书持 ...

  8. ca证书 csr_什么是csr证书

    SSL证书生成流程 SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secure socketlayer(SSL),SSL安全协议主要用来提供对用户和服务器的认证:对传送的数据进 ...

  9. openssl 自建CA签发证书 网站https的ssl通信

    <<COMMENT X509 文件扩展名 首先我们要理解文件的扩展名代表什么.DER.PEM.CRT和CER这些扩展名经常令人困惑. 很多人错误地认为这些扩展名可以互相代替.尽管的确有时候 ...

  10. keytool生成证书_创建自签名ssl证书,Java生产jks证书

    一.创建自签名ssl证书 下载openssl软件: https://pan.baidu.com/s/1Zy4W7pqSO8caoR_R5pF3DQ  #提取码:bjd4 设置环境变量 进入openss ...

最新文章

  1. ConcurrentHashMap 的实现原理
  2. 远程ssh shell 脚本 tcgetattr: Inappropriate ioctl for device错误
  3. 西电开源社区Ubuntu 10.04软件源
  4. java平移变换_java移位运算符:(左移)、(带符号右移)和(无符号右移)。...
  5. 无意间发现的java的相关资料
  6. 例题-Quota 实作:
  7. mysql基础2-数据库的相关操作
  8. CSS面试题汇总(三)
  9. 计算机专科大学三年规划书,专科大学规划书范文
  10. JS-underfined is not a function
  11. 日志20130104~0308
  12. java中的i/o体系结构及流分类
  13. AD从原理图到PCB超详细教程
  14. C语言 输出三角形数列 for循环
  15. 中国集成电路发展探秘
  16. 全票通过!微众开源项目EventMesh进入Apache孵化器
  17. 使用手机但不沉迷的小tis 写给自己的求别玩了姐听听英语吧
  18. 小白学Django第九天| Cookie和session的那些骚操作
  19. 速度追踪--VelocityTracker
  20. 网页批量下载图片-怎么一键快速下载网页图片的工具

热门文章

  1. 【Python基础 | 文件】小实验:将古诗写入一个文件,并复制到另一个文件中
  2. virtualBox报错 0x80004005
  3. 对比分析偏差率的五个常见疑问
  4. Visual C++ 2010 第4章 数组、字符串和指针
  5. android 进入recovery,安卓手机如何进入Recovery模式的通用方式详解
  6. aspose合并单元格
  7. 数字电路设计之低功耗设计方法六:旁路(by-passing)
  8. 滤波器频率响应 matlab,滤波器频率响应与实际滤波情况不符合
  9. 基金定投如何选择买卖点?——关于定投的择时研究
  10. USB接口WiFi驱动浅析