OpenSSL个人心得

OpenSSL

安装


Windows

地址:http://slproweb.com/products/Win32OpenSSL.html

配置环境变量


配置两个环境变量,一个是OPENSSL_HOME,另一个要配置到Path

OPENSSL_HOME:就是 OpenSSL 的安装目录

Path:就是OPENSSL_HOME目录下的bin目录

命令


ecparam

椭圆曲线密钥参数生成及操作。

椭圆曲线(ECC)算法是一种公钥算法,它比流行的RSA算法有很多优点:

  • 安全性能更高 , 如160位ECC与1024位RSA、DSA有相同的安全强度。
  • 计算量小,处理速度快, 在私钥的处理速度上(解密和签名),ECC比RSA、DSA快得多。
  • 存储空间占用小 ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多, 所以占用的存储空间小得多。
  • 带宽要求低。

用法:

openssl ecparam [-inform DER|PEM] [-outform DER|PEM] [-in filename] [-out filename] [-noout] [-text] [-C] [-check] [-name arg] [-list_curve] [-conv_form arg] [-param_enc arg] [-no_seed] [-rand file(s)] [-genkey] [-engine id]

解释:

-list_curves:打印所有可用的算法曲线

-genkey:生成密钥

-name:使用指定的算法曲线

-out:输出文件

例子:

比特币选取了 secp256k1 作为算法曲线

# 使用 secp256k1 作为算法曲线,生成 EC 参数和私钥,并输出到 ca-key_.key 文件中
openssl ecparam -genkey -name secp256k1 -out ca-key_.key

pkcs8

pkcs8格式的私钥转换工具

用法:

openssl pkcs8 [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-topk8] [-noiter] [-nocrypt] [-nooct] [-embed] [-nsdb] [-v2 alg] [-v1 alg] [-engine id]

解释:

-topk8:输出pkcs8文件

-v2:采用PKCS#5 v2.0,并指定加密算法

-inform:输入文件格式

-outform:输出文件格式

-in:输入文件

-out:指定输出文件

例子:

CBC模式:Cipher-block chaining,密码块连接模式。

目前,CBC是最为常用的工作模式。

  • 每一次加密都需要前一个密文块参与,明文中微小的改变都会使后续所有密文改变;
  • 无法从密文看出明文的规律。安全性得以提高。

CTR模式:Counter mode,计数器模式。

CTR 模式被广泛用于 ATM 网络安全和 IPSec应用中,相对于其它模式而言,CRT模式具有如下特点:

  • 硬件效率:允许同时处理多块明文 / 密文。
  • 软件效率:允许并行计算,可以很好地利用 CPU 流水等并行技术。
  • 预处理:算法和加密盒的输出不依靠明文和密文的输入,因此如果有足够的保证安全的存储器,加密算法将仅仅是一系列异或运算,这将极大地提高吞吐量。
  • 随机访问:第 i 块密文的解密不依赖于第 i-1 块密文,提供很高的随机访问能力。
  • 可证明的安全性:能够证明 CTR 至少和其他模式一样安全(CBC, CFB, OFB, …)
  • 简单性:与其它模式不同,CTR模式仅要求实现加密算法,但不要求实现解密算法。对于 AES 等加/解密本质上不同的算法来说,这种简化是巨大的。
  • 无填充,可以高效地作为流式加密使用。
# 使用 aes-256-cbc 加密算法,将存有 EC 参数和私钥的 ca-key_.key 文件,转换为带有密码保护的 PEM 格式的 pkcs8 文件
openssl pkcs8 -topk8 -v2 aes-256-cbc -inform PEM -outform PEM -in ca-key_.key -out ca-key.key
# 到了这一步,其实可以把没有密码保护的 ca-key_.pem 删除

req

req命令主要用于生成和处理PKCS#10证书请求。

用法:

openssl req [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-text] [-pubkey] [-noout] [-verify] [-modulus] [-new] [-rand file(s)] [-newkey rsa:bits] [-newkey dsa:file] [-nodes] [-key filename] [-keyform PEM|DER] [-keyout filename] [-[md5|sha1|md2|mdc2]] [-config filename] [-subj arg] [-multivalue-rdn] [-x509] [-days n] [-set_serial n] [-asn1-kludge] [-newhdr] [-extensions section] [-reqexts section] [-utf8] [-nameopt] [-batch] [-verbose] [-engine id]

解释:

-new:生成新的证书请求以及私钥,默认为1024比特。

-utf8:输入字符为utf8编码,默认输入为ASCII编码。

-config:指定证书请求模板文件,默认采用openssl.cnf,需另行指定时用此选项。配置的写法可以参考openssl.cnf,其中有关于生成证书请求的设置。

-key:证书私钥文件的来源。允许该文件的格式是PKCS#8

-subj:用于指定生成的证书请求的用户信息,或者处理证书请求时用指定参数替换。生成证书请求时,如果不指定此选项,程序会提示用户来输入各个用户信息,包括国名、组织等信息,如果采用此选择,则不需要用户输入了。比如:-subj /CN=china/OU=test/O=abc/CN=forxy,注意这里等属性必须大写。

-out:要输出的文件名

例子:

证书请求的用户信息:-subj "/C=国家代码简称/ST=州或省份名称/L=城市或区域名称/OU=组织单位名称/O=组织名称/CN=通用名称(可以是带有通配符的域名)"

# 使用 openssl.cnf 作为证书请求模板文件,生成 ca-req.csr 证书请求文件,指定编码为 utf8 ,并指定用户信息(下面以 baidu.com 的证书信息为例)
openssl req -new -utf8 -config openssl.cnf -key ca-key.key -subj 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值