beat365体育-beat365体育官方网站-365体育app官方版下载

openssl 安装及使用

OpenSSL 是一个强大的开源加密库,提供了一系列密码学功能,包括加密、解密、数字签名、证书生成和管理等。它同时也是一个通用的 SSL/TLS 协

openssl 安装及使用

OpenSSL 是一个强大的开源加密库,提供了一系列密码学功能,包括加密、解密、数字签名、证书生成和管理等。它同时也是一个通用的 SSL/TLS 协议实现,用于安全地传输数据。您可以使用 OpenSSL 来创建和管理证书、进行加密通信,以及执行各种与加密相关的操作。

安装

查看版本

openssl version

openssl version -a

> openssl version

OpenSSL 1.0.2k-fips 26 Jan 2017

升级版本

#更新yum

yum update -y

#查看可用版本

yum list available openssl

#或者使用

yum info openssl

源码编译安装

wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1w.tar.gz

tar -zxf openssl-1.1.1w.tar.gz

配置安装

./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib

make && make install

–prefix 指定安装目录

shared表示构建共享库,zlib表示使用zlib压缩

新建软连接

mv /usr/bin/openssl /usr/bin/openssl_bak

ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

mv /usr/include/openssl /usr/include/openssl_bak

ln -s /usr/local/openssl/include/openssl /usr/include/openssl

更新动态链接库

echo "/usr/local/openssl/lib" > /etc/ld.so.conf.d/openssl.conf

ldconfig

查看是否支持sm2

openssl ecparam -list_curves

生成sm2 key

openssl ecparam -genkey -name SM2 -param_enc explicit -outform pem -out sm2key.pem

生成私钥

证书一般都是使用非对称加密,包含公钥和私钥两部分。首先需要一个私钥,最常见的是使用RSA非对称加密算法。

下面就是使用genra来生成RSA算法的私钥:

openssl genrsa -out rsa_priv.key 2048

-out指定输出密钥存储文件位置,

-des3 可以指定使用des3加密密钥,需要输入一个密码

最后数字2048指定私钥字节长度,必须是最后一个参数。默认值是2048。

另外还可以对私钥生成密码保护,可以使用-aes128,-aes192,-aes256。当然也可以使用des。如-des,-des3。设置密码保护参数时候会提示输入密码。

如果设置了密码,查看私钥信息会有对应的加密方法

> cat priv.key

-----BEGIN RSA PRIVATE KEY-----

Proc-Type: 4,ENCRYPTED

DEK-Info: AES-128-CBC,A56910C3F5355F8A5A357952BB08E1D7

qKCeF3Q11Rcyc2yLYdHsgsLlzRz8+2fGfXeRFckldwR0aMAOzADUqCzC0fDEbY/V

+YYhf/DZXux355YyBYYiS4Rfu9bX+QD9vXIPEmPF/I3VGAPcjlj5OWOL3rWHDO2f

N1mlnFrtm8y3rLvVUhrK9y48n8uJCdD/xbtXpvwtYlVCFnY9kSk7U1blRhdr0h2L

...

私钥内的数据不仅仅是二进制数据,其有一定的结构信息。可以使用rsa命令来查看

openssl rsa -text -in priv.key

同样可以根据私钥来生成公钥

openssl rsa -in priv.key -pubout -out pub.key

生成待签名证书请求(CSR)

证书签名请求(Certificate Signing Request),生成csr文件。

有了私钥之后,下一步就就可以根据私钥来生成csr。

需要使用req命令:

> openssl req -key rsa_priv.key -new -out test.csr

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

#国家名称

Country Name (2 letter code) [XX]:CN

#省

State or Province Name (full name) []:Shandong

#城市

Locality Name (eg, city) [Default City]:Jinan

#机构或公司名称

Organization Name (eg, company) [Default Company Ltd]:CaoCao

#组织单位名称

Organizational Unit Name (eg, section) []:Cao

#一般填写域名

Common Name (eg, your name or your server's hostname) []:www.caocao.com

#邮箱

Email Address []:6667@qq.com

#往下两个参数可不填

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

一些常用参数说明:

-key 指定生成csr文件的密钥文件

-newkey rsa:nbits 如果没有私钥,使用该参数指定生成一个新私钥来进行csr。 例如,rsa:2048 表示使用 RSA 算法和 2048 位的密钥。

-keyout 如果创建一个新私钥,指定新密钥的存储位置。

-nodes:如果生成csr时创建一个新密钥,设置新密钥不加密。

-new 生成一个新的csr请求

-out 指定csr文件保存位置

证书签名请求命令需要填写一些主题相关信息,见上面交互命令填写备注信息。

根据上面的参数,如果预先没有密钥,可以使用-newkey命令来同时生成私钥

openssl req -newkey rsa:2048 -nodes -keyout priv.key -out test.csr

生成test.csr文件同时生成私钥priv.key

待签名主题信息除了使用上面的交互式方式进行输入外,还可以将其统一配置在一个配置文件里,然后使用-config来指定配置文件

openssl req -new -config test.conf -key priv.key -out test1.csr

test.conf配置文件内容如下:

[req]

default_bits = 2048

prompt = no

default_md = sha256

distinguished_name = mydn

[mydn]

C=CN

ST=ShanDong

L=Jinan

O=TestCompany

#organ unit

OU=testorg

#common name

CN=www.test.com

emailAddress=3333@qq.com

[req]下的部分来指定生成req命令参数信息,default_bits表示默认密钥长度2048,prompt表示关闭交互命令方式,default_md表示消息摘要算法,distinguished_name表示主题名称,如这里mydn,在下面的[mydn]部分就是来指定主题信息部分。这部分和交互式命令输入内容相同,就是包括国家,省,市,组织单位,通用名称,邮箱等信息。

csr生成之后,可以使用以下命令来查看确认待签名信息是否正确

openssl req -in test.csr -text -noout

这会回显待签名上面输入的主题信息

生成签名证书

CSR生成确认之后,就可以去公开的CA(Certificate Authority(证书颁发机构))机构去进行签名来生成签名证书。我们这里呢不会去CA机构来生成签名证书,这里只是为了学习生成签名证书的方法。openssl生成签名证书需要指定CAZ证书相关信息

使用CA根证书对待签名证书生成签名证书

openssl x509 -req -in test.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out test.crt -days 365

这里主要通过x509命令来生成签名证书

X509

-in filename :指定待签名证书文件,csr文件

-out filename:指定输出签名证书文件名

-pubkey filename:导出证书的公钥

-days 指定证书有效时间

CA证书相关参数:

-CA filename:指定CA证书文件

-CAkey filename:指定CA私钥文件

-CAcreateserial:如果CA序列号文件不存在,将创建该文件

这里除了CA证书和CA私钥文件其它的参数数据都有了,CA证书也是一个签名证书,可以通过openssl命令来生成自签名CA根证书

生成自签名CA根证书

openssl req -x509 -sha256 -days 1825 -newkey rsa:2048 -keyout rootCA.key -out rootCA.crt

-x509:指定生成自签名证书

-days:指定证书有效期

这样生成了自签名根证书后,下一步就可以使用根证书来对CSR进行签名生成签名证书了。

自签名证书

如果你只是需要自签名证书的话,也可以只用指定签名私钥即可,使用-signkey来指定签名私钥:

> openssl x509 -req -days 365 -in test1.csr -signkey priv.key -out test1.crt

Signature ok

subject=C = CN, ST = ShanDong, L = Jinan, O = TestCompany, OU = testorg, CN = www.test.com, emailAddress = 3333@qq.com

Getting Private key

Enter pass phrase for priv.key:

自签名证书的Issuer(颁发者)和Subject(主题)相同。这个也很好理解,因为签名时候没有使用CA证书,只是使用的私钥,私钥里没有公司相关信息,所以颁发者信息只能取csr中的信息。可以通过下面要介绍的证书提取命令来查看证书信息。

这里介绍了两种生成签名证书的方法:

1、直接使用一个私钥,这样是自签名

2、自己模拟生成一个CA的签名证书,然后使用该证书对CSR签名生成签名证书。

提取证书信息

签名证书生成后,可以下发给客户端使用。客户端可以根据证书信息提取公钥、证书序列化、颁发者和主题、有效期等信息,这样客户端就可以对证书进行简单验证,验证颁发者和主题是否合法及相符,然后才使用公钥进行签名验签,加密解密操作。

#显示证书的详细信息

openssl x509 -in rootCA.crt -text -noout

#提取证书颁发者信息

openssl x509 -in test.crt -issuer -noout

#提取证书序列号

openssl x509 -in test.crt -serial -noout

#提取证书有效期

openssl x509 -in test.crt -dates -noout

#提取证书主题信息

openssl x509 -in test.crt -subject -noout

#提取证书的公钥

openssl x509 -in test.crt -pubkey -noout > publickey.pem

证书转换

证书常见个格式:

PEM(Privacy Enhanced Mail):PEM 格式是最常见的证书格式之一,使用 Base64 编码的 ASCII 文本表示,可以包含证书、私钥和 CA 证书等。通常以 .pem 或 .crt 扩展名结尾

DER(Distinguished Encoding Rules):DER 格式是二进制格式的证书表示形式,通常在网络通信中使用。通常以 .der 或 .cer 结尾。

PKCS#12:PKCS#12 是一种密码保护的证书格式,可以包含私钥、证书链和密码等信息。通常以 .p12 或 .pfx 结尾。

PKCS#7:PKCS#7 是用于数字签名、加密、证书请求等的标准格式,通常以 .p7b 或 .p7c 结尾。

上面通过openssl格式生成的证书都是PEM格式的,所以这里以PEM和其它转换格式转换来介绍

PEM和DER转换

#pem转der

openssl x509 -inform PEM -in test1.crt -outform DER -out test1.der

#der转pem

openssl x509 -inform DER -in test1.der -outform PEM -out test1.pem

PEM和PKCS#12转换

pem转pkcs#12

#pem转pkcs#12

openssl pkcs12 -export -out test.pfx -inkey rootCA.key -in test.crt -certfile rootCA.crt

-in:指定pem证书文件

-inkey:指定签名根证书私钥

-certfile:指定签名根证书,如果没有可以不设置,如我们上面的自签名就没有根证书信息

导出时候需要设置一个导出密码。

pkcs#12转pem

openssl pkcs12 -in test.pfx -out frompfk.pem -nodes

这样生成的pem证书和私钥存储在一个文件里,需要手工去区分截取。

也可以添加参数控制只输出证书或私钥

#只生成私钥

openssl pkcs12 -in test2.pfx -nocerts -out frompfk_priv.pem -nodes

#只生成证书内容

openssl pkcs12 -in test2.pfx -nokeys -clcerts -out frompfk_test.crt -nodes

-nodes设置不设置密码保护

pkcs#7与pem

#pkcs#7 转pem

openssl crl2pkcs7 -nocrl -out test1.p7b -certfile test1.crt

#pem 转 pkcs#7

openssl pkcs7 -in test1.p7b -print_certs -out frompk7_test1.crt

pem&der转换

openssl x509 -outform der -in test1.crt -out test1.der

openssl x509 -inform der -in test1.der -out test1_fromder.pem

← 上一篇: 【人物志】四大名捕之:铁手军哥
下一篇: 赵薇夫妇56亿元身价被曝光,但为何30.6亿收购款自己只掏6000万? →

相关推荐

《老梁故事汇》 20140618 爱掉链子的橙衣军团

《老梁故事汇》 20140618 爱掉链子的橙衣军团

本期节目主要内容: 千年老二荷兰队只得过1988年欧洲杯的冠军,虽然3进世界杯决赛,但一直没有问鼎冠军,带有浓重的悲情色彩。被媒体称为

2、梦幻西游109满修空号多少钱

2、梦幻西游109满修空号多少钱

梦幻西游109全满号消耗对于109级角色来说,强身上限为129级,除了学满强身之外,冥想学到100级也很有必要。强身+冥想总共花费1225W,帮贡13435

京东拍拍贷还款入口在哪里?还款失败怎么办?

京东拍拍贷还款入口在哪里?还款失败怎么办?

京东拍拍贷作为京东旗下的一款消费信贷产品,为用户提供了便捷的购物分期服务。然而,随之而来的还款问题也成为用户关注的焦点之一。那

硬件知识笔记本电脑内部结构(笔记本电脑内部结构介绍)

硬件知识笔记本电脑内部结构(笔记本电脑内部结构介绍)

笔记本 电脑 的主要部件都有哪些 SSD硬盘:应用功能和机械 硬盘 是一样的。主要用来存储数据,用于数据的写入和读出。网卡:主要负责上网

基佬漫画

基佬漫画

大佬 评分: 完结第4回 大佬 作者: 毕亦乐欧永杰 完结第4回 大佬漫画 ,又一部江湖漫画,和古惑仔一个类型. 开始阅读 变成基佬!目前正在灵魂

健康码变色了怎么办?别着急,一文教你如何恢复绿码

健康码变色了怎么办?别着急,一文教你如何恢复绿码

近期,很多朋友的一码通 变成了黄码或者红码 不知道要怎么办? 如果一码通突然变成黄码、红码,不需要过于紧张。一码通赋码是为了提醒你