热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

openssl生成RSA密钥证书

1.openssl的安装2.RSA密钥证书的生成3.openssl的常用命令1.openssl的安装openssl是目前最流行的SSL密码库工具,其提供了一个通用、健壮、功能完备的

1.openssl的安装

2.RSA密钥证书的生成

3.openssl的常用命令

 


1.openssl的安装

  openssl 是目前最流行的 SSL 密码库工具,其提供了一个通用、健壮、功能完备的工具套件,用以支持SSL/TLS 协议的实现。

1.1 openssl 下载

  下载其他人做的便捷版安装包,下载地址:http://slproweb.com/products/Win32OpenSSL.html

技术分享图片

 

 

   下载好后猛点就能安装。

1.2 环境变量配置

  1.2.1 配置OPENSSL_HOME

    技术分享图片

 

 

 

  1.2.2 配置path

    技术分享图片

 

 

   1.2.3 验证是否安装成功

    技术分享图片

 

 

 


2.RSA密钥证书的生成

默认情况下,openssl 输出格式为 PKCS#1-PEM

2.1 生成RSA私钥(无加密)

openssl genrsa -out rsa_private.key 2048

2.2 生成RSA公钥

openssl rsa -in rsa_private.key -pubout -out rsa_public.key

生成RSA私钥(使用aes256加密)

openssl genrsa -aes256 -passout pass:111111 -out rsa_aes_private.key 2048

其中 passout 代替shell 进行密码输入,否则会提示输入密码;
生成加密后的内容如:

-----BEGIN RSA PRIVATE KEY-----Proc-Type: 4,ENCRYPTED
DEK-Info: AES-256-CBC,5584D000DDDD53DD5B12AE935F05A007
Base64 Encoded Data-----END RSA PRIVATE KEY-----

此时若生成公钥,需要提供密码

openssl rsa -in rsa_aes_private.key -passin pass:111111 -pubout -out rsa_public.key

其中 passout 代替shell 进行密码输入,否则会提示输入密码;


转换命令

私钥转非加密

openssl rsa -in rsa_aes_private.key -passin pass:111111 -out rsa_private.key

私钥转加密

openssl rsa -in rsa_private.key -aes256 -passout pass:111111 -out rsa_aes_private.key

私钥PEM转DER

openssl rsa -in rsa_private.key -outform der-out rsa_aes_private.der

-inform和-outform 参数制定输入输出格式,由der转pem格式同理

查看私钥明细

openssl rsa -in rsa_private.key -noout -text

使用-pubin参数可查看公钥明细

私钥PKCS#1转PKCS#8

openssl pkcs8 -topk8 -in rsa_private.key -passout pass:111111 -out pkcs8_private.key

其中-passout指定了密码,输出的pkcs8格式密钥为加密形式,pkcs8默认采用des3 加密算法,内容如下:

-----BEGIN ENCRYPTED PRIVATE KEY-----Base64 Encoded Data-----END ENCRYPTED PRIVATE KEY-----

使用-nocrypt参数可以输出无加密的pkcs8密钥,如下:

-----BEGIN PRIVATE KEY-----Base64 Encoded Data-----END PRIVATE KEY-----

生成 RSA 私钥和自签名证书

openssl req -newkey rsa:2048 -nodes -keyout rsa_private.key -x509 -days 365 -out cert.crt

req是证书请求的子命令,-newkey rsa:2048 -keyout private_key.pem 表示生成私钥(PKCS8格式),-nodes 表示私钥不加密,若不带参数将提示输入密码;
-x509表示输出证书,-days365 为有效期,此后根据提示输入证书拥有者信息;
若执行自动输入,可使用-subj选项:

openssl req -newkey rsa:2048 -nodes -keyout rsa_private.key -x509 -days 365 -out cert.crt -subj "/C=CN/ST=GD/L=SZ/O=vihoo/OU=dev/CN=vivo.com/emailAddress=yy@vivo.com"

2.3 使用 已有RSA 私钥生成自签名证书

openssl req -new -x509 -days 365 -key rsa_private.key -out cert.crt

-new 指生成证书请求,加上-x509 表示直接输出证书,-key 指定私钥文件,其余选项与上述命令相同

如果只需要使用openssl生成rsa证书,直接执行如下命令即可:


2.1 生成RSA私钥(无加密)
openssl genrsa -out rsa_private.key 2048
2.2 生成RSA公钥
openssl rsa -in rsa_private.key -pubout -out rsa_public.key
2.3 使用 已有RSA 私钥生成自签名证书
openssl req -new -x509 -days 365 -key rsa_private.key -out cert.crt

 


3.openssl的常用命令


查询openssl版本
#openssl version
私钥格式转换
# openssl rsa -in ca.key.pem -inform PEM -out ca.key.der -outform DER
证书格式转换(pem --> der)
# openssl x509 -in ca.cer -inform PEM -out ca.der -outform DER
证书格式转换(pem --> p12)
# openssl pkcs12 -export -out test.p12 -inkey private.key -in certificate.pem
查看证书或ca
# openssl x509 -noout -text -in server.cer
CA与签发的证书的验证(root-ca.crt 签发 sub-ca.crt, sub-ca.crt签发server.crt,combine.crt是root-ca.crt与sub-ca.crt的合成):
# cat sub-ca.crt root-ca.crt > combine.crt
# openssl verify -verbose -CAfile combine.crt server.crt
利用openssl单向认证过程:
# openssl s_server -accept 809 -debug -msg -bugs -www -CAfile ca.cer -cert server.cer -key server.key
利用openssl双向认证过程:
# openssl s_server -port 8002 -cert server.cer -key server.key -CAfile ca.cer -debug
# openssl s_client -host 127.0.0.1 -port 8002 -cert client.cer -key client.key -CAfile ca.cer -debug

  

参照:

  https://www.cnblogs.com/dshvv/p/12271280.html

       https://blog.51cto.com/11512826/2054578


推荐阅读
author-avatar
双鱼2502858483
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有