21个OpenSSL示例,帮助您在现实世界中使用

使用OpenSSL创建、管理和转换SSL证书

OpenSSL是SSL中最受欢迎的命令之一,用于创建、转换和管理证书。

在许多情况下,您都需要以各种方式处理OpenSSL,因此我在这里为您列出了一个便捷的备忘单。

本文将介绍在实际应用中经常使用的OpenSSL命令,以帮助您。

一些与证书相关的缩写词。

  • SSL – 安全套接字层
  • CSR – 证书签名请求
  • TLS – 传输层安全性
  • PEM – 隐私增强邮件
  • DER – Distinguished Encoding Rules
  • SHA – 安全散列算法
  • PKCS – 公钥密码学标准

注意: 如果您对这些术语不熟悉,SSL/TLS operation course可能会对您有所帮助。

创建新的私钥和证书签名请求

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

上述命令将生成CSR和一个2048位RSA密钥文件。如果您打算在Apache或Nginx中使用此证书,则需要将此CSR文件发送给证书颁发机构,他们将为您提供一个签名的证书,通常以derpem格式,您需要在ApacheNginxweb服务器中进行配置。

创建自签名证书

openssl req -x509 -sha256 -nodes -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem

上述命令将生成一个带有2048位RSA的自签名证书和密钥文件。我还包含了sha256,因为它目前被认为是最安全的。

提示:默认情况下,它会生成一个有效期为一个月的自签名证书,因此您可以考虑定义–days参数来延长有效期。

例如:让自签名证书有效期为两年。

openssl req -x509 -sha256 -nodes -days 730 -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem

验证CSR文件

openssl req -noout -text -in yaoweibin.csr

验证非常重要,以确保您正在向颁发机构发送具有所需详细信息的CSR。

创建RSA私钥

openssl genrsa -out private.key 2048

如果您只需要生成RSA私钥,可以使用上述命令。我已经包含了2048用于更强的加密。

从密钥中删除密码

openssl rsa -in certkey.key -out nopassphrase.key

如果您在密钥文件中使用密码并且使用Apache,则每次启动时都必须输入密码。如果您厌烦输入密码,那么您可以使用上述的openssl rsa -in yaoweibin.key -check来从现有密钥中删除密码。

验证私钥

openssl rsa -in certkey.key –check

如果您怀疑您的密钥文件,可以使用上述命令进行检查。

验证证书文件

openssl x509 -in certfile.pem -text –noout

如果您想要验证证书数据,如CN、OU等,则可以使用上述命令获取证书详细信息。

验证证书签发机构

openssl x509 -in certfile.pem -noout -issuer -issuer_hash

证书颁发机构会对每个证书进行签名,如果您需要检查它们,则可以使用此命令。

检查证书的哈希值

openssl x509 -noout -hash -in bestflare.pem

将DER格式转换为PEM格式

openssl x509 –inform der –in sslcert.der –out sslcert.pem

通常,证书颁发机构将以.der格式提供SSL证书,如果您需要在apache或.pem格式中使用它们,则上述命令将对您有所帮助。

将PEM格式转换为DER格式

openssl x509 –outform der –in sslcert.pem –out sslcert.der

如果您需要将.pem格式更改为.der格式

将证书和私钥转换为PKCS#12格式

openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem

如果您需要在Java应用程序或其他仅接受PKCS#12格式的应用程序中使用证书,您可以使用上述命令生成包含证书和密钥文件的单个pfx文件。

提示:您还可以通过以下方式传递-chain参数来包含链证书。

openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem -chain cacert.pem

使用现有私钥创建CSR

openssl req –out certificate.csr –key existing.key –new

如果您不想创建新的私钥而是使用现有的私钥,可以使用上述命令。

检查PKCS12格式证书的内容

openssl pkcs12 –info –nodes –in cert.p12

PKCS12是一种二进制格式,您无法在记事本或其他编辑器中查看其内容。上述命令将帮助您查看PKCS12文件的内容。

将PKCS12格式转换为PEM证书

openssl pkcs12 –in cert.p12 –out cert.pem

如果您希望在Apache中使用现有的pkcs12格式或仅使用pem格式,这将非常有用。

测试特定URL的SSL证书

openssl s_client -connect yoururl.com:443 –showcerts

我经常使用这个命令来验证服务器上特定URL的SSL证书。这非常方便,可以验证协议、密码和证书详细信息。

查找OpenSSL版本

openssl version

如果您负责确保OpenSSL安全性,那么您可能首要要做的是验证版本。

检查PEM文件证书的过期日期

openssl x509 -noout -in certificate.pem -dates

如果您计划进行一些监控以检查证书的有效性,这将非常有用。它将以notBefore和notAfter语法显示日期。您将需要验证notAfter以确认证书是否过期或仍然有效。

例如:

[root@Chandan opt]# openssl x509 -noout -in bestflare.pem -dates
notBefore=Jul 4 14:02:45 2015 GMT
notAfter=Aug 4 09:46:42 2015 GMT
[root@Chandan opt]#

检查SSL URL的证书过期日期

openssl s_client -connect secureurl.com:443 2>/dev/null | openssl x509 -noout –enddate

如果您计划远程监视SSL证书的过期日期或特定URL,这将非常有用。

例如:

[root@Chandan opt]# openssl s_client -connect google.com:443 2>/dev/null | openssl x509 -noout -enddate

notAfter=Dec 8 00:00:00 2015 GMT

检查URL是否接受SSL V2或V3

检查SSL V2

openssl s_client -connect secureurl.com:443 -ssl2

检查SSL V3

openssl s_client -connect secureurl.com:443 –ssl3

检查TLS 1.0

openssl s_client -connect secureurl.com:443 –tls1

检查TLS 1.1

openssl s_client -connect secureurl.com:443 –tls1_1

检查TLS 1.2

openssl s_client -connect secureurl.com:443 –tls1_2

如果您需要验证SSL V2/V3是否已启用,您可以使用上述命令。如果已激活,您将获得“CONNECTED”,否则为“handshake failure”。

验证特定密码是否在URL上被接受

openssl s_client -cipher 'ECDHE-ECDSA-AES256-SHA' -connect secureurl:443

如果您正在处理安全问题和渗透测试结果显示接受了一些弱密码,则可以使用上述命令进行验证。

当然,您需要更改密码和URL,以便进行测试。如果接受了提到的密码,那么您将会收到“已连接”,否则为“握手失败”。

我希望上述命令可以帮助您更多了解如何使用OpenSSL来管理您网站的SSL certificates

类似文章