openssl命令
一、date 命令时间戳
常用参数
date - 打印或设置系统日期和时间
根据指定格式显示当前时间或设置系统时间.
-d, --date=STRING
显示由 STRING 指定的时间, 而不是当前时间
-f, --file=DATEFILE
显示 DATEFILE 中每一行指定的时间, 如同将 DATEFILE 中的每行作为 --date 的参数一样
-I, --iso-8601[=TIMESPEC] 按照 ISO-8601 的日期/时间格式输出时间.
TIMESPEC=`date' (或者不指定时)仅输出日期,等于 `hours', `minutes', 或`seconds' 时按照指定精度输出日期及时间.
-r, --reference=FILE
显示 FILE 的最后修改时间
-R, --rfc-822
根据 RFC-822 指定格式输出日期
-s, --set=STRING
根据 STRING 设置时间
-u, --utc, --universal
显示或设置全球时间(格林威治时间)
实用1:时间戳:
[root@localhost ~]# date #获取当前时间
Sat Jan 18 10:18:19 CST 2020
##把当前时间转时间戳
[root@localhost ~]# date -d "Sat Jan 18 10:18:19 CST 2020" '+%s'
1579313899
[root@localhost ~]# date -d '1970-01-01 UTC 1579313899 seconds' #时间戳转时间
Sat Jan 18 10:18:19 CST 2020
#时间戳转时间
[root@localhost ~]# date -d @1579313899
Sat Jan 18 10:18:19 CST 2020
根据要求,精确指定精度输出:
# date -I #按照 ISO-8601 的日期/时间格式输出时间
[root@localhost ~]# date -I
2020-01-18
# date -Ihours
[root@localhost ~]# date -Ihours #按小时精度输出
2020-01-18T10+0800
# date -Iminutes #按分钟精度输出
[root@localhost ~]# date -Iminutes
2020-01-18T10:30+0800
# date -Iseconds #按秒精度输出
[root@localhost ~]# date -Iseconds
2020-01-18T10:31:07+0800
根据要求做时间调整:
[root@localhost ~]# date -d "1 day ago" #一天前
Fri Jan 17 10:32:50 CST 2020
[root@localhost ~]# date -d "1 hour ago" 一个小时前
Sat Jan 18 09:33:01 CST 2020
[root@localhost ~]# date -d "1 minute ago" #一分钟前
Sat Jan 18 10:32:10 CST 2020
[root@localhost ~]# date -d "-1 minute" #一分钟前
Sat Jan 18 10:32:56 CST 2020
[root@localhost ~]# date -d "+1 minute" #一分钟后
Sat Jan 18 10:35:04 CST 2020
[root@localhost ~]# date -d "+1 month" #一个月后
Tue Feb 18 10:34:16 CST 2020
[root@localhost ~]# date -d "+1 year" #一年后的
Mon Jan 18 10:34:27 CST 2021
[root@localhost ~]# date -d "+1 year" +%F_%T #格式化输出
2021-01-18_10:37:06
二、Openssl 查看证书常用命令:
[root@localhost ~]# openssl crl -in file -inform der -noout ?
unknown option ?
usage: crl args
#输入格式
-inform arg - input format - default PEM (DER or PEM)
#输出格式
-outform arg - output format - default PEM
# 输出加密内容
-text - print out a text format version
# 输入文件
-in arg - input file - default stdin
# 输出到指定文件或输出到屏幕
-out arg - output file - default stdout
# 输出hash值
-hash - print hash value
# 输出指纹
-fingerprint - print the crl fingerprint
输出DN
-issuer - print issuer DN
输出上次生效时间
-lastupdate - lastUpdate field
输出失效时间
-nextupdate - nextUpdate field
输出CRL编号
-crlnumber - print CRL number
-noout - no CRL output
-CAfile name - verify CRL using certificates in file "name"
-CApath dir - verify CRL using certificates in "dir"
-nameopt arg - various certificate name options
示例一:查看证书注销列表更新时间,主要是为了验证证书的有效性
[root@localhost ~]# openssl crl -in ctl.crl -inform der -noout -lastupdate -nextupdate -fingerprint -crlnumber
lastUpdate=Jan 15 05:32:28 2020 GMT # 生效时间
nextUpdate=Jan 16 05:32:28 2020 GMT # 失效时间
SHA1 Fingerprint=21:8D:05:2F:FC:E4:03:26:84:84:59:15:3E:A8:B8:12:A9:FE:28:92 #哈希指纹
crlNumber=00 #证书编号
# -in 查看的证书文件
# -inform 输入证书的格式,默认是PEM
# -noout 不输出证书内容到文件,默认输出到屏幕
# -lastupdate 输出生效时间
# -nextupdate 输出失效时间
# -fingerprint 证书指纹
# -crlnumber 证书编号
注意,使用openssl 查看的证书时间为标准的格林威治时间,在当地(China)需要在查看的时间基础上加上8个小时。
示例二:查看证书注销列表证书内容
[root@localhost ~]# openssl crl -in ctl.crl -inform der -lastupdate -nextupdate -fingerprint -crlnumber -text -noout
lastUpdate=Jan 15 05:32:28 2020 GMT
nextUpdate=Jan 16 05:32:28 2020 GMT
SHA1 Fingerprint=21:8D:05:2F:FC:E4:03:26:84:84:59:15:3E:A8:B8:12:A9:FE:28:92
crlNumber=00
Certificate Revocation List (CRL):
Version 2 (0x1)
Signature Algorithm: sha1WithRSAEncryption
Issuer: /C=CN/O=COM/CN=COM CA
Last Update: Jan 15 05:32:28 2020 GMT
Next Update: Jan 16 05:32:28 2020 GMT
CRL extensions:
X509v3 Authority Key Identifier:
keyid:E8:57:D3:59:4F:BA:69:F4:33:BF:4C:35:2C:60:23:6B:D6:9E:B8:36
X509v3 CRL Number:
0
Revoked Certificates:
Serial Number: 10038BC709DD787H
Revocation Date: Jun 10 08:13:06 2019 GMT
CRL entry extensions:
X509v3 CRL Reason Code:
Superseded
Serial Number: 100F0D70180FE103
..........
总结:
OpenSSL简介:
OpenSSL 是一个安全套接字层密码库,包括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
常见的证书、密钥的编码格式:
PEM - Privacy Enhanced Mail (x509)
打开看文本格式,以"-----BEGIN-----"开头, "-----END-----"结尾,内容是Base64编码,查看PEM格式的信息可以用命令
openssl rsa -in my.pem -text -noout
Unix服务器偏向于使用这种编码格式.
DER - Distinguished Encoding Rules
打开看是二进制格式,不可读,查看DER格式的信息可以用命令
openssl rsa -in my.der -inform der -text -noout
Java和Windows服务器偏向于使用这种编码格式.