openssl工具列表
2016-03-21 13:28
330 查看
OpenSSL介绍
OpenSSL是一个安全工具集,同时也提供了开源程序库。它支持ssl(Secure Sockets Layer, v2/v3),TLS(Transport Layer Secure, v1)。这套工具集的应用范围非常之广,包括:
创建和管理私钥、公钥。
公钥加密操作。
创建X.509证书(Certificate),证书请求(CSR),证书撤销(CRL)。
计算消息摘要(MD5, SHA-1等)。
使用密码加解密(Encryption/Decryption with Ciphers)。
SSL/TLS 客户端/服务器测试。
处理S/MIME签名以及加密邮件。
等等。
openssl的命令行格式为
其中command是openssl下辖的工具,而每个工具,又有其自己的命令行参数和选项。openssl中常用的工具如下:
标准命令
genrsa
生成RSA密钥。RSA是主流浏览器都支持的一种加密算法。
rsa
RSA密钥管理。
req
X.509 CSR(Certificate Signing Request)
x509
X.509证书数据管理(X.509 Certification Data Management)。
dgst
计算消息摘要(Message Digest Calculation)。
s_client
作为SSL/TLS客户端运行。
s_server
作为SSL/TLS服务器运行。
s_time
SSL连接的性能测试。
smime
S/MIME处理。
speed
算法的速度测试。
verify
X.509证书验证。
消息摘要命令
包括著名的md5, sha1,其他的还有:md2, mdc2, rmd160, sha, sha224, sha256, sha384, sha512等。
编码和加密命令(Encoding and Cipher)
base64,bf(Blowfish Cipher), cast(CAST Cipher), des, des3, idea, rc2, rc4, rc5等。
个人认为openssl和UNIX传统的简单哲学相悖。UNIX的简单哲学是一个程序只做一件事,并做好,但openssl做了太多事,甚至于它下辖的一些工具,也有太多的选项和参数,容易让人混淆。
openssl的工具名,和某些工具的选项名是一样的。例如
个人推荐的openssl学习方法是,学习各种示例;根据示例中用到的工具,以及工具的选项和参数,查看手册。
获取完整的openssl工具列表
$ openssl -h
运行此命令,openssl会输出"openssl:Error: '-h' is an invalid command.",但不要理会,这就是完整的命令列表。同样的,获取某个工具的帮助:
$ openssl genrsa -h
获取openssl的版本信息
openssl genrsa -out file [numbits]
numbits表示密钥长度,默认是512。测试:
$ openssl genrsa -out s.key 1024
查看密钥:
缩短或增加numbits的值,可见输出私钥文件变短或增长。
在PKI(Public Key Infrastructure)系统中,证书签署请求(CSR)是应用给CA发送的消息,CA将为之生成数字证书(通常需要付费;也可以通过openssl生成自签名的证书)。CSR的格式通常为PKCS#10。
PKCS(Public-Key Cryptography Standards)有很多种类,openssl工具集中也有一系列名为pkcs#x的工具。常见的如:
PKCS#7,加密信息语法标准(Cryptography Message Syntax Standard)。用于签名或加密消息,是S/MIME的基石。
PKCS#10,证书签署请求(CSR)。
PKCS#12,个人信息交换语法标准(Personal Information Exchange Syntax Standard)。
openssl req工具的参数非常之多:
-new
生成新的证书请求。如果没有 -key 参数,则会生成新的RSA私钥。
-key file
私钥文件。
-nodes
如果要生成私钥,则不对私钥加密(将命令理解为 no des)。
-x509
生成一个自签名证书,而非一个证书签署请求。
以下列出一些openssl req的常见用法。
方法1 :用openssl genrsa生成私钥,用openssl req生成证书签署请求:
方法2 :用req生成私钥,并生成证书签署请求:
注意,这里加了
生成证书签署请求时,需要用户输入的信息:
可以用
方法3 跳过CSR,直接生成证书:
这个命令与之前命令的区别:
使用了
使用了
使用了
输出了s.crt(含有公钥的证书),而非s.csr(请求)。
运行此命令输出2个文件:s.key(私钥), s.crt(证书/公钥)。
可以查看.crt, .csr文件的内容。.crt文件的开始与结束为:
.crt文件的开始与结束为:
在把s.csr文件发送给CA(或自签署)之前,验证它是否正确:
用s_server建立服务器:
$ openssl s_server -cert s.crt -key s.key -www
用s_client作为客户端:
$ openssl s_client -connect localhost:4433
openssl s_client的输出中有一些信息:
获取远程服务器下发的证书(用sed过滤):
使用
站内
Apache https配置中,用到openssl。
密码学入门 介绍到这篇笔记中常见的一些术语,如X.509, RSA等。
ssl 介绍了SSL本身。
站外
openssl官方手册
OpenSSL Command-Line HOWTO openssl的许多示例用法。
OpenSSL介绍
OpenSSL是一个安全工具集,同时也提供了开源程序库。它支持ssl(Secure Sockets Layer, v2/v3),TLS(Transport Layer Secure, v1)。这套工具集的应用范围非常之广,包括:
创建和管理私钥、公钥。
公钥加密操作。
创建X.509证书(Certificate),证书请求(CSR),证书撤销(CRL)。
计算消息摘要(MD5, SHA-1等)。
使用密码加解密(Encryption/Decryption with Ciphers)。
SSL/TLS 客户端/服务器测试。
处理S/MIME签名以及加密邮件。
等等。
openssl工具列表
openssl的命令行格式为openssl command [ command_opts ] [ command_args ]
其中command是openssl下辖的工具,而每个工具,又有其自己的命令行参数和选项。openssl中常用的工具如下:
标准命令
genrsa
生成RSA密钥。RSA是主流浏览器都支持的一种加密算法。
rsa
RSA密钥管理。
req
X.509 CSR(Certificate Signing Request)
x509
X.509证书数据管理(X.509 Certification Data Management)。
dgst
计算消息摘要(Message Digest Calculation)。
s_client
作为SSL/TLS客户端运行。
s_server
作为SSL/TLS服务器运行。
s_time
SSL连接的性能测试。
smime
S/MIME处理。
speed
算法的速度测试。
verify
X.509证书验证。
消息摘要命令
包括著名的md5, sha1,其他的还有:md2, mdc2, rmd160, sha, sha224, sha256, sha384, sha512等。
编码和加密命令(Encoding and Cipher)
base64,bf(Blowfish Cipher), cast(CAST Cipher), des, des3, idea, rc2, rc4, rc5等。
openssl技巧和使用说明
个人认为openssl和UNIX传统的简单哲学相悖。UNIX的简单哲学是一个程序只做一件事,并做好,但openssl做了太多事,甚至于它下辖的一些工具,也有太多的选项和参数,容易让人混淆。openssl的工具名,和某些工具的选项名是一样的。例如
openssl x509命令中的"x509"是X.509证书数据管理工具,但在如
openssl req -x509这样的命令中,"-x509"是作为openssl req命令的一个选项。openssl完成一件事不止一种方法,应该说有很多方法。这样在不同的文档,例子中,就能看到做一件的许多方法,加上如工具名和选项名的相同,容易让人混淆。
个人推荐的openssl学习方法是,学习各种示例;根据示例中用到的工具,以及工具的选项和参数,查看手册。
获取完整的openssl工具列表
$ openssl -h
运行此命令,openssl会输出"openssl:Error: '-h' is an invalid command.",但不要理会,这就是完整的命令列表。同样的,获取某个工具的帮助:
$ openssl genrsa -h
获取openssl的版本信息
$ openssl version $ openssl version -a
openssl工具详解
openssl genrsa
openssl genrsa用于生成RSA私钥,基本格式:
openssl genrsa -out file [numbits]
numbits表示密钥长度,默认是512。测试:
$ openssl genrsa -out s.key 1024
查看密钥:
$ less s.key -----BEGIN RSA PRIVATE KEY----- MIICXwIBAAKBgQC7nLRFKJDh9gZKqixYYiUPt5EhWxU/k/or96Awu3QnTJiwXIX3 IEe8BCwKX8CVpJpT1kvumuZf1kPjdb26iu+DeW88mm9q+2531hXLHdhM0UprPjN/ 3p6pDPGmCbqQM1jsw7ih11VodE5Skg6ICInMxwbw4i4ICK0v+nCIBaxvOQIDAQAB AoGBAJPjsiL2GEdW1ZzTykMdkpNyI4BEuVo1vrYb6/WePrCf65jSRnQIySNHsqO2 2Svc5h6CRbbf+gu/7iIGdTnwPV5vOf0QGUnwjsoNn7bkjII0oBgsh7miYyvDT+nk d+6VH2gywbIBfamc6NoZ27XcQlYV4FuLQRVlU9Zd5LyEEcJlAkEA54JZ9X+M3cy3 NVrHPTXaYZSjgUcZ2LoCRiTsowL00ijzO6qYPwuN5qwcYjBgWfl3JSUaU0HOqQtw tibCcO+Z1wJBAM91jGKxEqYFKg+8uOGkuksv+x9IhzavUOHtVGJF6lVebgqmReBN P2W8TTxkFykp+C7Fezj9BQcfYeiffOvTvW8CQQCU/I5oL224T8aXz5PpEH85zS5s RBWeJBbSjXC8d2qW1UOzYlYYPJdVm+2oQvm+7Yx/myEV84PLxlEC6G65v3iBAkEA s4BQ7J+rtAxp3V38VfiS3DVywhmeLLm6cRFJXxKBdEYVTo+ZjD8qaJtp9KPhylMv E0D5olCChiwoKf+9NctqbwJBALWHgc4eBN/5sBQ5JawVfkMAzWW3j1PDUU2aNftp 7QVonE/cTfJLf//rNLy6lYwZH1l8/d3e+5ncaYFq61bw+ls= -----END RSA PRIVATE KEY-----
缩短或增加numbits的值,可见输出私钥文件变短或增长。
openssl req
openssl req是一个 PKCS#10 证书签署请求和证书生成工具。
在PKI(Public Key Infrastructure)系统中,证书签署请求(CSR)是应用给CA发送的消息,CA将为之生成数字证书(通常需要付费;也可以通过openssl生成自签名的证书)。CSR的格式通常为PKCS#10。
PKCS(Public-Key Cryptography Standards)有很多种类,openssl工具集中也有一系列名为pkcs#x的工具。常见的如:
PKCS#7,加密信息语法标准(Cryptography Message Syntax Standard)。用于签名或加密消息,是S/MIME的基石。
PKCS#10,证书签署请求(CSR)。
PKCS#12,个人信息交换语法标准(Personal Information Exchange Syntax Standard)。
openssl req工具的参数非常之多:
-new
生成新的证书请求。如果没有 -key 参数,则会生成新的RSA私钥。
-key file
私钥文件。
-nodes
如果要生成私钥,则不对私钥加密(将命令理解为 no des)。
-x509
生成一个自签名证书,而非一个证书签署请求。
以下列出一些openssl req的常见用法。
生成证书签署请求(CSR)与生成证书
方法1 :用openssl genrsa生成私钥,用openssl req生成证书签署请求:$ openssl genrsa -out s.key 1024 $ openssl req -new -key s.key -out s.csr
方法2 :用req生成私钥,并生成证书签署请求:
$ openssl req -newkey rsa:1024 -keyout s.key -out s.csr -nodes
注意,这里加了
-nodes选项,否则要求输入密码保护私钥。接下来,可以把s.csr发送给CA请求签署证书,或者用openssl自签署。
生成证书签署请求时,需要用户输入的信息:
Country Name (2 letter code) [GB]: State or Province Name (full name) [Berkshire]: Locality Name (eg, city) [Newbury]: Organization Name (eg, company) [My Company Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []: Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
可以用
-subj选项在命令行中写入这些信息。
方法3 跳过CSR,直接生成证书:
$ openssl req -x509 -nodes -days 365 \ -subj '/C=CN/ST=BeiJing/L=HaiDian/CN=www.berlinix.com' \ -newkey rsa:1024 -keyout s.key -out s.crt
这个命令与之前命令的区别:
使用了
-x509,用于直接生成证书,而非证书签署请求(CSR)。是否带有
-x509选项,是区分生成证书(有-x509),还是生成CSR(没有-x509)的判断依据。
使用了
-subj,在命令行填入了信息。
使用了
-days,限制了证书的有效期(-dyas 365表示:从生成证书之日起的365天内有效)。
输出了s.crt(含有公钥的证书),而非s.csr(请求)。
运行此命令输出2个文件:s.key(私钥), s.crt(证书/公钥)。
可以查看.crt, .csr文件的内容。.crt文件的开始与结束为:
-----BEGIN CERTIFICATE REQUEST----- -----END CERTIFICATE REQUEST-----
.crt文件的开始与结束为:
-----BEGIN CERTIFICATE----- -----END CERTIFICATE-----
验证CSR文件是否有效
在把s.csr文件发送给CA(或自签署)之前,验证它是否正确:$ openssl req -nodes -days 365 \ -subj '/C=CN/ST=BeiJing/L=HaiDian/CN=www.berlinix.com' \ -newkey rsa:1024 -keyout s.key -out s.csr $ openssl req -in s.csr -noout -verify -key s.key verify OK
查看CSR文件的内容
$ openssl req -in s.csr -noout -text Certificate Request: Data: Version: 0 (0x0) Subject: C=CN, ST=BeiJing, L=HaiDian, CN=www.berlinix.com Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): .... Exponent: 65537 (0x10001) Attributes: a0:00 Signature Algorithm: sha1WithRSAEncryption ...
用s_server/s_client测试证书
用s_server建立服务器:$ openssl s_server -cert s.crt -key s.key -www
用s_client作为客户端:
$ openssl s_client -connect localhost:4433
openssl s_client的输出中有一些信息:
verify error:num=18:self signed certificate --> 发现是自签署证书 subject=/C=CN/ST=BeiJing/L=HaiDian/CN=www.berlinix.com --> subject和issuer信息相同 issuer=/C=CN/ST=BeiJing/L=HaiDian/CN=www.berlinix.com SSL-Session: --> 开启SSL会话
openssl实例
获取证书
获取远程服务器下发的证书(用sed过滤):$ openssl s_client -connect www.gmail.com:443 2>&1 |\ sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
性能测试
使用s_time测试连接性能:
$ openssl s_time -connect www.google.com:443 No CIPHER specified Collecting connection statistics for 30 seconds 192 connections in 0.15s; 1280.00 connections/user sec, bytes read 0 192 connections in 31 real seconds, 0 bytes read per connection Now timing with session id reuse. starting 282 connections in 0.05s; 5640.00 connections/user sec, bytes read 0 282 connections in 31 real seconds, 0 bytes read per connection
其他
参考
站内Apache https配置中,用到openssl。
密码学入门 介绍到这篇笔记中常见的一些术语,如X.509, RSA等。
ssl 介绍了SSL本身。
站外
openssl官方手册
OpenSSL Command-Line HOWTO openssl的许多示例用法。
相关文章推荐
- 编写,其实就是copy出来驱动程序,pass
- OpenCV入门:简单图像处理实例——平滑滤波
- LINUX学习笔记逻辑导图
- Apache Stratos探究:配置CLI
- Mac终端启动tomcat的相关问题
- Linux主流架构运维工作简单剖析
- LINUX服务器启动防火墙后ping外网ip可以通,但ping域名不通(原因:防火墙未开放DNS解析端口)
- OpenSSL命令---genrsa
- LINUX chmod 文件安全与权限
- docker 基于现有镜像修改后保存,上传私有仓库
- docker 基于现有镜像修改后保存,上传私有仓库
- Linux下软件的安装和管理解析之一
- webRTC进阶-概览-之二:WebRTC 典型应用架构
- 使用jsvc启动tomcat
- 【AudioProfile】设置震动默认开启
- 独具一格的Linux
- Linux环境下使用Apache部署Web服务
- NFS的安装、配置与使用
- 安卓属性动画(Property Animation)(上)
- CENTOS 内存释放