openssl中有如下后缀名的文件
.key格式:私有的密钥
.csr格式:证书签名请求(证书请求文件),含有公钥信息,certificate signing request的缩写
.crt格式:证书文件,certificate的缩写
.crl格式:证书吊销列表,Certificate Revocation List的缩写
.pem格式:用于导出,导入证书时候的证书的格式,有证书开头,结尾的格式
 
OpenSSL实现了PKCS7,为什么还要实现CMS?
PKCS7和CMS看起来一样,CMS基于PKCS7,还基于一个Privacy-Enhanced Mail的标准, 因此CMS也可解析PKCS7签名
区别是:PKCS#7不支持递归嵌套, CMS支持,CMS还有增加了其它一些东西

1.数字签名
非对称加密算法的效率是非常低的。
将内容使用hash函数生成摘要,再用私钥对摘要进行加密,生成数字签名。然后将内容附上数字签名一同传输。
收件方收到后,用公钥对数字签名进行解密,得到摘要,然后再对原内容进行hash生成摘要,比对这两个摘要是否相同,相同则说明内容没有被篡改。

2.数字证书
由CA颁发给网站的身份证书,里面包含了该网站的公钥,有效时间,网站的地址,CA的数字签名等。
所谓的CA数字签名,实际上就是使用了CA的私钥将网站的公钥等信息进行了签名,当客户端请求服务器的时候,网站会把证书发给客户端,客户端首先可以通过CA的数字签名校验CA的身份,也能证明证书的真实完整性。客户端有没有可能到一个假冒的CA去校验数字证书呢?不太可能,因为CA的地址是内嵌在浏览器中的,很难被篡改。

---------------------------------------------------------------

1. 创建根证书,rootca.pem为根证书
vi rootca.cnf
[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
prompt = no
string_mask = utf8only
x509_extensions = extensions
 
[ req_distinguished_name ]
C = CN
O = Test
CN = RootCA
 
[ extensions ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always, issuer
basicConstraints = CA:TRUE
keyUsage = cRLSign, keyCertSign

echo unique_subject=no > index.attr
openssl req -new -nodes -utf8 -sha256 -days 36500 -batch -x509 -config rootca.cnf -outform PEM -out rootca.pem -keyout rootca_pri.pem
openssl x509 -in rootca.pem -inform pem -outform der -out rootca.der

2. 颁发二级证书(公钥证书),signcert.pem为公钥证书
vi signcert.cnf
[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
prompt = no
string_mask = utf8only
x509_extensions = extensions
 
[ req_distinguished_name ]
C = CN
O = Test
CN = Signing Certificate
 
[ extensions ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid, issuer
basicConstraints = CA:FALSE
keyUsage = critical, nonRepudiation, digitalSignature
extendedKeyUsage = codeSigning

openssl genrsa -out signcert_pri.pem 2048
openssl req -new -config signcert.cnf -out signcert.csr -key signcert_pri.pem
openssl x509 -req -in signcert.csr -CA rootca.pem -CAkey rootca_pri.pem -CAcreateserial -out signcert.pem -days 3650 -extensions extensions -extfile signcert.cnf
openssl x509 -in signcert.pem -inform pem -outform der -out signcert.der

3. 创建CMS签名。
使用私钥证书signcert.pem和私钥signcert_pri.pem创建CMS格式签名。source.txt为签名前原始文件,signed_source.txt为签名后文件(signed_source.txt即为创建的CMS签名)
openssl cms -sign -in source.txt -inkey signcert_pri.pem -signer signcert.pem -out signed_source.txt -outform PEM -nodetach

使用openssl制作证书和进行CMS格式数字签名相关推荐

  1. Java使用openssl详解(openssl安装教程、openssl制作证书、java代码实现openssl、浏览器通过https访问后端)入门

    安装openssl 通过官网的下载源码编译或者直接通过exe文件直接下一步下一步安装完成,网上教程很多! openssl制作证书 先创建3个目录 certificate.service .client ...

  2. OpenSSL 制作证书时出现的错误的解决办法

    在制作证书的过程中遇到的问题及解决办法: 出现:I am unable to access the ./demoCA/newcerts directory        ./demoCA/newcer ...

  3. openssl制作证书全过程

    转自:http://blog.csdn.net/aking21alinjuju/article/details/7654097 一:生成CA证书  目前不使用第三方权威机构的CA来认证,自己充当CA的 ...

  4. 如何使用Openssl 制作CA证书

    一.SSL协议百科名片 SSL是Secure Socket Layer(安全套接层协议),可以在Internet上提供秘密性传输.Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标 ...

  5. 使用openssl制作https的证书

    1.前言 现在的web应用对安全越来越重视了,很多应用必须采用https来传输数据.但是https必须要有证书,在开发和测试环境一般我们在没条件采用ca签发的可信证书的情况下,我们可以使用openss ...

  6. Openssl的证书格式转换

    PKCS 全称是 Public-Key Cryptography Standards ,是由 RSA 实验室与其它安全系统开发商为促进公钥密码发展而制订的一系列标准. PKCS 目前共发布过 15 个 ...

  7. openssl数字证书常见格式与协议介绍

    原文地址:http://blog.csdn.net/anxuegang/article/details/6157927 证书主要的文件类型和协议有: PEM.DER.PFX.JKS.KDB.CER.K ...

  8. Windows环境下OpenSSL下载安装及制作证书

    下载与安装 点击下载地址,根据自己的系统版本,下载对应的OpenSSL. 下载完成后,对安装包进行安装,比较简单. 打开OpenSSL 直接到安装目录C:\Program Files\OpenSSL- ...

  9. 网络服务与安全之openSSL制作CA证书

    在网络中,数据在服务器端与客户端之间传递,为了保证数据安全,需要将数据进行加密后再传输,这样即使数据被窃取,窃听者也无法知道数据的真实内容. 当前的网络服务中,使用TLS来加密.应用层在TLS之上,使 ...

最新文章

  1. R语言可视化分面图、假设检验分组t检验、可视化单变量分组分面箱图(faceting bar plot)、添加误差条(error bar)、添加p值、添加抖动数据点(jitter points)
  2. C#只能lock 引用类型的值 (转载)
  3. C语言入门基础之输入和输出
  4. bp 神经网络 优点 不足_基于粒子群算法和BP神经网络的多因素林火等级预测模型...
  5. FusionInsight怎么帮「宇宙行」建一个好的「云数据平台」?
  6. angularJS前端分页插件
  7. .NET精品文章系列(一)
  8. 【spring】spring_IOC和DI
  9. python自带数据库是什么意思_原来Python自带了数据库,用起来真方便!
  10. kindeditor在线HTML编辑器
  11. AEJoy —— 介绍神奇的 10 个 AE 表达式附带 2 种简单的调试方法
  12. Windows10系统迁移-同一PC硬盘之间
  13. 我大ps可以N倍长腿
  14. ECCV 2022 | 谷歌提出:k-means Mask Transformer
  15. ShowWindow的nCmdShow参数列表
  16. c# 标准正太分布函数_Excel里面标准正态分布函数NORMSDIST()在C#里的算法以及科学计数法转换为正常数值...
  17. SQL- With as 用法
  18. 11.2.1 绝对值函数
  19. 程序员的“九阳神功”——设计模式
  20. 《当程序员的那些狗日日子》五

热门文章

  1. vue中使用echarts中国地图
  2. x64dgb安装插件教程
  3. Non-resolvable parent POM for com.example:demo:0.0.1-SNAPSHOT: Could not transfer artifact org.sprin
  4. 计算机ip无法连接打印机,网络打印机无法连接的原因与解决办法-电脑故障
  5. ERC721:全生命周期精析,妈妈再也不用担心我不会玩NFT合约啦
  6. 【高级Java开发】类QQ聊天工具的设计与实现(代码已上传)
  7. 数字化转型,要把功夫炼到任督二脉
  8. linux光盘挂载详解,Linux系统下挂载光盘的教程
  9. Delaunay三角剖分及matlab实例
  10. 关于Linux性能调优之内存负载调优