文章目录

  • 一、openssl genrsa 命令介绍
  • 二、openssl genrsa 命令的语法及选项
  • 三、实例
    • 1、生成512位的 RSA 秘钥,输出到屏幕。
    • 2、生成512位 RSA 私钥,输出到指定的文件 genrsa.txt
    • 3、生成 1024 位 RSA 秘钥,采用 des 算法加密,加密密码为 123456
    • 4、生成 2048 位 RAS 秘钥,采用 des3 算法加密
    • 参考

相关文章:
//-----------Java SSL begin----------------------
【ssl认证、证书】SSL双向认证和SSL单向认证的区别(示意图)
【ssl认证、证书】java中的ssl语法API说明(SSLContext)、与keytool 工具的联系
【ssl认证、证书】SSL双向认证java实战、keytool创建证书
【ssl认证、证书】Wireshark抓包分析
【ssl认证、证书】 查看keystore文件内容
//------------Java SSL end--------------------------

//-----------下面的是CA证书和openssl相关的知识--------------
【ssl认证、证书】TLS/SSL双向认证概念、openssl genrsa示例
【ssl认证、证书】openssl genrsa 命令详解
【ssl认证、证书】SSL 证书基本概念、证书格式、openssl和keytool的区别

一、openssl genrsa 命令介绍

openssl genrsa 命令是会用来生成 RSA 私有秘钥,不会生成公钥,因为公钥提取自私钥。生成时是可以指定私钥长度和密码保护。

如果需要查看公钥或生成公钥,可以使用 openssl rsa 命令。

通过 man openssl 命令,可以看到 genrsa 命令的介绍:

genrsa    Generation of RSA Private Key. Superceded by genpkey.

二、openssl genrsa 命令的语法及选项

语法:

openssl  genrsa [-out filename] [-passout arg] [-f4] [-3] [-rand file(s)] [-engine id] [numbits] [-des] [-des3] [-idea]

查看 openssl genrsa 命令的选项:

[root@tvweb01 ~]# openssl genrsa ?
usage: genrsa [args] [numbits]-des            encrypt the generated key with DES in cbc mode-des3           encrypt the generated key with DES in ede cbc mode (168 bit key)-idea           encrypt the generated key with IDEA in cbc mode-seedencrypt PEM output with cbc seed-aes128, -aes192, -aes256encrypt PEM output with cbc aes-camellia128, -camellia192, -camellia256encrypt PEM output with cbc camellia-out file       output the key to 'file-passout arg    output file pass phrase source-f4             use F4 (0x10001) for the E value-3              use 3 for the E value-engine e       use engine e, possibly a hardware device.-rand file:file:...load the file (or the files in the directory) intothe random number generator

使用 man genrsa 查看详细用法:

[root@nginx ~]# man genrsa
GENRSA(1)                           OpenSSL                          GENRSA(1)NAMEgenrsa - generate an RSA private keySYNOPSISopenssl genrsa [-out filename] [-passout arg] [-des] [-des3] [-idea] [-f4] [-3] [-rand file(s)] [-engine id] [numbits]DESCRIPTIONThe genrsa command generates an RSA private key.OPTIONS-out filenamethe output filename. If this argument is not specified then standard output is used.-passout argthe output file password source. For more information about the format of arg see the PASS PHRASE ARGUMENTS section in openssl(1).-des|-des3|-ideaThese options encrypt the private key with the DES, triple DES, or the IDEA ciphers respectively before outputting it. If none ofthese options is specified no encryption is used. If encryption is used a pass phrase is prompted for if it is not supplied via the-passout argument.-F4|-3the public exponent to use, either 65537 or 3. The default is 65537.-rand file(s)a file or files containing random data used to seed the random number generator, or an EGD socket (see RAND_egd(3)).  Multiple filescan be specified separated by a OS-dependent character.  The separator is ; for MS-Windows, , for OpenVMS, and : for all others.-engine idspecifying an engine (by its unique id string) will cause genrsa to attempt to obtain a functional reference to the specified engine,thus initialising it if needed. The engine will then be set as the default for all available algorithms.numbitsthe size of the private key to generate in bits. This must be the last option specified. The default is 512.NOTESRSA private key generation essentially involves the generation of two prime numbers. When generating a private key various symbols willbe output to indicate the progress of the generation. A . represents each number which has passed an initial sieve test, + means a numberhas passed a single round of the Miller-Rabin primality test. A newline means that the number has passed all the prime tests (the actualnumber depends on the key size).Because key generation is a random process the time taken to generate a key may vary somewhat.BUGSA quirk of the prime generation algorithm is that it cannot generate small primes. Therefore the number of bits should not be less that64. For typical private keys this will not matter because for security reasons they will be much larger (typically 1024 bits).SEE ALSOgendsa(1)1.0.1e                            2013-02-11                         GENRSA(1)
  • -out filename :将生成的私钥保存至filename文件,若未指定输出文件,则为标准输出。

  • -numbits :指定要生成的私钥的长度(单位 bit),默认为1024。该项必须为命令行的最后一项参数。

  • -des|-des3|-idea:指定加密私钥文件用的算法,这样每次使用私钥文件都将输入密码,太麻烦所以很少使用。

  • -passout args :加密私钥文件时,传递密码的格式,如果要加密私钥文件时单未指定该项,则提示输入密码。传递密码的args的格式见openssl密码格式。

    例如:使用idea算法对私钥文件进行密码保护。

    [root@nginx ~]# openssl genrsa -idea -passout pass:123 -out rsa_pri.pem
    Generating RSA private key, 1024 bit long modulus
    ..............++++++
    .....++++++
    e is 65537 (0x10001)
    
  • -F4 / -3 : 指数,默认是 65537,例如上例输出的最后一句话,e is 65537(0x10001)

    [root@nginx ~]# openssl genrsa -3 -out rsa_pri.pem 2000
    Generating RSA private key, 2000 bit long modulus
    ..+++
    ...................+++
    e is 3 (0x3)
    

三、实例

1、生成512位的 RSA 秘钥,输出到屏幕。

[root@nginx ~]# openssl genrsa 512
Generating RSA private key, 512 bit long modulus
.++++++++++++
............++++++++++++
e is 65537 (0x10001)
-----BEGIN RSA PRIVATE KEY-----
MIIBOgIBAAJBANTZudAiqSAV7yJBo/7XMVF7cktFi6bcEAk79EObzboR7k4sCOYu
tl3Fn6/BLUzAnTaYTozpIxfILYnz/9Dx/rMCAwEAAQJAPDUiNFe5k1PhAsWih/GD
B9NtbxFLAXX6K0KEQ6OMu/bWZ7Q40xwPQWL+cerIeNE1xjI1qKnxTRpW+C6uigSo
sQIhAO1pyZCkP0XY/PH4Jmjetd8d2beUUUWhA9pFRGkMahwnAiEA5YOniZV4bKjg
4Aa+Vcs7kI+sARIsgr+2pyPL6n+pBJUCIEjrQgaT+/8XC3HCVwHEzbWOtI0nF+M7
9jP3LHDbaEfnAiA/rYpjMtRJmYViwpw2Y3+wORxo46jz0csUjmr6MdcsDQIhAM30
zGSj4rrTHVWz73v8af2ITHYufLKYClNN

2、生成512位 RSA 私钥,输出到指定的文件 genrsa.txt

[root@nginx ~]# openssl genrsa -out genrsa.txt 512
Generating RSA private key, 512 bit long modulus
..............++++++++++++
.................++++++++++++
e is 65537 (0x10001)
[root@nginx ~]# cat genrsa.txt
-----BEGIN RSA PRIVATE KEY-----
MIIBOgIBAAJBAKUwGTXGWqvOx2Vp2gMczQCyscerZTqrPYxKcxm4+18aw2JwCNwj
CPwtM6la8c97KPxCS0EefMu89PXTKyM9i7sCAwEAAQJAB3+idVV2wjvVw13FvsRs
7e4usdCu/LXPSnIKvY0vJAcBTRDvNo/RTpF3/UcexlInhhmhwFceyje3wqYA1sre
mQIhANc8XRtuFfvOm65mrko89VS60GpWEO1WG01bxIOum0VdAiEAxHktqkSScOCS
l1pUMLLiQrj0mhngHVPbI2WWOkZzK/cCIBSK51wJ2sFIy+UOWc4uGUA4AFJV2pG8
aSit/IiQ7rLlAiBTPJdpHFYCNlJEhwNGAnMzG1KderrlEeK0M1Sa6b/fbwIhAMjp
Q6lcPnCkz5/nIlTlpv14NRqa+/YLBPD8uuFLyWtF
-----END RSA PRIVATE KEY-----

3、生成 1024 位 RSA 秘钥,采用 des 算法加密,加密密码为 123456

如果指定des算法,没有在命令中携带密码,则会提示用户输入密码

[root@nginx ~]# openssl genrsa -des -passout pass:"123456" -out prikey.pem 1024
Generating RSA private key, 1024 bit long modulus
....++++++
..........++++++
e is 65537 (0x10001)
# 从输出可以看出,秘钥长度是 1024 bit。(从 OpenSSL 1.0.1e 开始,默认秘钥长度为 1024 bit。)
# 我们也可以设定自己所需的秘钥长度,秘钥长度越长越安全,
# 但使用秘钥进行加密解密时所耗费的时间也会越长。
# 非对称秘钥提高安全性的同时也带来了算法所耗费的大量时间,非对称秘钥不对大块数据进行加密,
# 应用领域是数字签名,秘钥分发等小数据加密。[root@nginx ~]# ll prikey.pem
-rw-r--r--. 1 root root 958 May 26 14:26 prikey.pem[root@nginx ~]# cat prikey.pem
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-CBC,C632EA92B103B8F8i9OuC7U5YCK+8PTlnNOs4G5ShvpEkGLv7sEkZXb5UYWQhmG5eJHv8MjGP6sNvDbH
1c36LmWhTlosaney9zgw3SLUOYwhcj/ocCULtVYHBC+oqmQzlLn0pj3JHunTxdF8
OAjJlwL16OKzArfCXDXWfqs4kmpZnPb0B7RgVPRwTAOnJ54BS0B1t4ytua8xfxtS
fCE/PBSPywzC9EZdd9TEQ3GwRjim37RSwPHqW28Tb6Inq9IXGcwVqkvTk2F5N3NT
By7Z/hIh2bBOjYj44X5G1qw0fZXP/6muD/w8KHjNlrancPiNs6oTUHAzDS0xK90y
gJ9XTdxEQLwwd3MLQZ3AVuIr/Iazk6juj7vMJ6bfzblSJDuqubopM/QiLS2LI5Uz
yLvFSwdezTjq0RylqYNlWCnCYj+HtZ8oeuusqN7gAnFr/rDCvSPvqveS7QuW4JAG
P6su1rAL0Uamv8fjq01W9865wctx/a60zMGM8go1H8l1g7nvaRgalQPDZLNQhUog
A4mqh8jiXEBLnA81cL7f0yDBlPkYM7SvuPYtUAtA9RXxw66+IHSYu6Vr+nhOplZw
h7V08d78KZG8Bghx0YXqPL57qvTFRu9sJJmvN5NWPh+sMxTsTLsFll8psB4mZ4EU
iMU3TiGn3pHaunmHzY+ibKSqNfOtAKpbIVhSqLKkkV6DlHBKjw1iQ2GqKRm0ilBo
7yRxVG1Ldy+cVEkKTE3hHVLP2BCdoXV8dmUimjH8F+B/voi9rYfDwqXNqnXum6kN
+WmN86LJr75jTiHSs8OswunvBfedsVhsuRppBqCgsBlG5lEcLuSylg==
-----END RSA PRIVATE KEY-----

一般情况下,能用的选项是: -out 或 numbits。

根据私钥生成公钥:
还有一种形式会先生成证书,证书中含有公钥,参见 TLS/SSL双向认证

[root@nginx ~]# openssl rsa -in prikey.pem -out pubkey.pem -pubout
Enter pass phrase for prikey.pem: 123456
writing RSA key[root@nginx ~]# ll pubkey.pem
-rw-r--r--. 1 root root 272 May 26 14:36 pubkey.pem[root@nginx ~]# cat pubkey.pem
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCHNF9c7EE35RmZRdze2G55i3R
6Kvxvh/NC2IlEXfOrCttwlxfrJkaPvKr98Jn0KAFTp+em6X3nDzX1oOH/tkSS4ql
h4+oTHNzT0aS3sLRnqBnALgge0M7ePIxfyhyC4npdPIpj6jsII5OCCVn1CVD3GZy
QfDwhh2I+lKh5BDopQIDAQAB
-----END PUBLIC KEY-----

4、生成 2048 位 RAS 秘钥,采用 des3 算法加密

也是需要密码的,步骤中存在提示输入密码环节

[root@nginx ~]# openssl genrsa -des3 -out private_server.key 2048
Generating RSA private key, 2048 bit long modulus
.......................................................................................................................+++
.......................................+++
e is 65537 (0x10001)
Enter pass phrase for private_server.key:123456
Verifying - Enter pass phrase for private_server.key:123456[root@nginx ~]# ll private_server.key
-rw-r--r--. 1 root root 1743 May 26 14:29 private_server.key[root@nginx ~]# cat private_server.key
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,75141B9977BB10C1zsI6SDzNbsfnn8C8VYNxRXNuW3It4aZmhc1b/gslTIq1JifMlG8456k6EN2nBFIH
AqZeIdf8qgK3F65yPqTxxXX7T1SKYyN6EP15VAFnXQqDlFJrSXYNSUhYiILr+8lH
qLJZwnnciTDOK5ERz17RPM+RZHVDkW4ER2Mrmf+OENDgbsL8l4GbCB5L4IXYvGIs
v0d3kcnWpPOIqhYWWQqfMtkXsbbSZAKx3IAmmgIHUFWt/V8TVb5hBs2HrJz2zJkl
TdL8K9LHsztI5pBWsh8MyVMBgwl5Uh/th9lfSJON4D1IobHup9K8c8mueF+Zzj7c
fiW4ZEbsKt2891ihIpTRsDIDPvSs35BMXD6X11fipMhQj7KFbLZo//Kno7yuCvZw
aIEP6t6flYdsw8MiH0wd+3IkGxFuN9SNesRJkQJLahjOkvaG9so08AC49skWAjnF
HrhRMT537nVwp4UHaRAKgyJv4fC2lUVqTQ04bPx8ddxPB/I+7KvOkTAVW9Fod+dd
+1EyEI56ZAmLtiZcZ0ZKPUL/BSEndGF4jdUgMcX1mW1qN8iQtKVBlcddUWLjPyb6
B3kKo2R1XHn4FsywPTXu8jk5MyQePrsjHW/bPASHPXU4TRVPwqgDnz4jUiKuYcnG
9EZ0zwTYsKFA1cU2pQNbF8y26/ud4WQSdY8dXi8yl2x/LsVyDwhY3gihk6R2NiA1
GBMs1yDqjj6ir0mnmdGVMn4oqjPDzvOHouGeYPj+6vHcltqJXhEsNpzhr2nJru88
UiUNLuemkxaJ5OA2ek0nKv1qnY/KB0d/X1DX/xFTZo9vS8Wtz8WDhF61rKCTfm/s
ehpa9vCDr33n8OApJteQRnXcs25mO5tfuLGyq/59y2AT17Nu9EAE+K3FUpcZKro3
oImv57MKU5eQMvb2JYyVUOv/sMtAtNwU7mjKM7lG8Zr240zFaiNnILRYsbLq4ae8
d8c4AExXhOPj1HMyLBnh9Gh605BOd6nZt7H45s2HqXc7k8POpo3xS80/4Tc4uMOA
UoXabgvR46+XUsVeFgz37aTdzZdmpm9VUxMbUkP9N9Ut6M5erqvv83UURgpoF6X8
+pK/JoAVgerQz92fsy0K6giHqYqchO24PijwcMdc5WZi0ghBbbe3iuOpyjj/I/af
qIi/Edbru0LW3AlPsU9kzUvpg/PHnO4Gcwt+LP5Kfropxh6OW08/ArMBP9+jtKlQ
kZbMKxS/FoyvQrDhqa8/AgI/kWnj6v+7cq/uBFRsbP5L1Ps5dEqhlCDgM6CS5C/O
N+gsS56sfCwLDtXD9CjQSiJ0758VdTFkpg1P64vU1SZEgUdgw1KRnWh8G9PlgLux
tZnnv09kFTlcmx/Y5b7FIXeicOStWIqQrWy8ux4rwm3MgSlq1MxSblMmu9o6Um5c
HJEoWNCtnSNU7OmSbGq9czZZ+eolFDieMQBf9M+UtyXq+PIn07Jb3rUmcrj5/Uh2
uT4IFox4xzzNeS1T/vxMvPwRxgo3CLRhatEYTu1GtwyuHCFNJmYlKnqU/19w+GIQ
HXV/X2jcCi78EKC/aEicQQ7PDpzydzn9vS3bhyVhnLl3IIrb1F89ng==
-----END RSA PRIVATE KEY-----

参考

openssl genrsa 命令详解

【ssl认证、证书】openssl genrsa 命令详解相关推荐

  1. ssl证书绑定windows服务器端口及SSL配置命令详解

    ssl证书绑定windows服务器端口及SSL配置命令详解 第一部分 多层应用服务器中SSL的服务器配置 一.首先,你的 服务器的防火墙 或云服务器的安全配置要哦放通下面你想配置的端口 我配置的端口为 ...

  2. Linux curl命令使用代理、以及代理种类介绍(附:curl命令详解)

    目录 一.代理服务器分类: 二.Linux curl命令代理设置参数: 三.Linux curl命令设置代理举例: 1.linux curl命令设置http代理: 2.Linux curl命令设置so ...

  3. body curl 设置post_curl 命令详解

    常用参数 常用参数分类 # 调试类-v, --verbose 输出信息-q, --disable 在第一个参数位置设置后 .curlrc 的设置直接失效,这个参数会影响到 -K, --config - ...

  4. Linux常用命令详解(两万字超长文)

    Linux常用命令详解 作为一枚程序员,熟练掌握一些常见的linux命令是很有必要的,掌握这些命令能帮助我们更好地管理Linux系统,提高工作效率,并有效地解决各种问题,为了方便自己后续查阅以及帮助不 ...

  5. linux wget命令详解

    wget命令详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能和特点:  (1)支持断点下传功能:这一 ...

  6. 激活信息管理slmgr.vbs命令详解

    slmgr.vbs对大部分电脑新手来说可能比较陌生,它主要是用来查看当前系统Windows 8/7/Vista中的激活状态以及密钥.许可证书等信息,这里我说"主要"是因为它还有其它 ...

  7. linux curl命令详解(附使用示例)

    Linux curl命令详解 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具,但按传统,习惯称u ...

  8. Linux中curl命令详解(做定时任务超级有用)!

    Linux curl命令详解 命令:curl 在kingle中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具, ...

  9. Pacemaker详解、pcs命令详解和参数说明、centos8或bclinux8.2离线安装pcs以及搭建pcs、pcs的使用说明

    文章目录 Pacemaker详解 一.前言 二. Pacemaker概述 1.Pacemaker介绍 2.pacemaker的服务模式. 3.Pacemaker的架构 4.Pacemake内部组件 三 ...

最新文章

  1. android游戏开发框架libgdx的使用(六)--演员和演出
  2. 逻辑回归 logistic regression
  3. 网站建设中关于eclipse启动参数的优化
  4. VTK:柏拉图式固体用法实战
  5. 【案例】爆老师拆解同步网络seo分析思路
  6. 编程的智慧 意外在内网找到的资源
  7. db设计专用excel_工程师必备:硬件EMC设计规范
  8. 302 found是什么意思_犯罪大师心中的恶魔答案是什么 心中的恶魔答案真相分析...
  9. centos下mysql 命令_CentOS下mysql数据库常用命令总结
  10. deployment:声明式的升级应用
  11. 如何在Angular 2项目中使用Bootstrap css库
  12. 《深入理解Java虚拟机》第5章 调优案例分析与实战
  13. 百度下拉词推广是什么?
  14. 在IDEA中创建Maven项目和添加tomcat
  15. H5 App如此强悍,要降薪的恐怕已不只是iOS程序员
  16. 更新计算机策略命令,组策略更新命令
  17. Excel怎么快速为非数字单元格填充颜色
  18. 有关计算机专业的对联,有趣的电脑对联(微软亚洲研究院自然语言计算组研发)...
  19. 点球大战中的概率问题
  20. iOS屏幕自动旋转 以及横屏模式打开APP出现的问题

热门文章

  1. css display: grid属性repeat
  2. js判断用户是否点击后退按钮进入的页面
  3. whmcs不依赖index.php的方法,WHMCS版本自动升级方法
  4. 关于计算机类期刊投稿心得
  5. HuaWei ❀ Firewalld 流量统计与监控原理
  6. 如何从Vista升级到Windows 7 Home Premium Edition
  7. C/C++基础题065.平方矩阵 I
  8. 多媒体开发之分场图像和交错图像interlacing---一个破解版的迅雷云点播网站
  9. [原创]9宫格填数字
  10. Linux 新开terminal自动source 文件