OpenSSL入门教程分为6步骤

OpenSSL入门教程分为6步骤

OpenSSL入门教程分为6步骤,OpenSSL是最受欢迎的加密库之一。它最常用于实现安全套接字层和传输层安全性(SSL和TLS)协议,以确保计算机之间的安全通信。近年来,由于TLS提供更高级别的安全性,所以SSL基本上已经过时了,但是有些人已经习惯了将这两种协议都称为SSL。

密码术是一项棘手的事情,OpenSSL具有太多的功能以至于不能在一篇文章中介绍,但是此OpenSSL教程将帮助您开始创建密钥和证书。

OpenSSL教程:互联网安全简介

当客户端请求与服务器的安全连接时,服务器又请求信息以找出客户端可以支持的密码安全类型。一旦确定了最安全的选项,就会发生以下情况:

  1. 服务器发送使用服务器的公共密钥签名的安全证书。
  2. 客户端验证证书后,它将生成一个私钥,并将其发送到使用公钥加密的服务器。
  3. 接下来,双方都使用秘密密钥来创建两组公共-私有密钥。最后,可以开始安全通信。

SSL和TLS是用于完成这些步骤的许多安全协议中的两个。要实现这些协议,我们需要像OpenSSL这样的软件。

OpenSSL入门教程

在本指南和其他OpenSSL教程中,您会遇到大量的缩写。为了快速参考,以下是您可能会遇到的一些术语的简短列表:

  • CSR:证书签名请求
  • DER:杰出的编码规则
  • PEM:隐私增强型邮件
  • PKCS:公钥密码标准
  • SHA:安全哈希算法
  • SSL:安全套接字层
  • TLS:传输层安全性

第1部分-入门

您可以从官方OpenSSL网站下载大多数平台的源代码。

如果您需要Windows发行版,尽管有很多选择,但Shining Light Productions还是不错的选择。成功安装所有组件后,让我们开始尝试使用OpenSSL命令行工具。

首先,您可以使用以下命令显示您正在运行的OpenSSL版本:

openssl version -a
OpenSSL入门教程
OpenSSL入门教程

要获取标准命令的完整列表,请输入以下内容:

openssl list-standard-commands

查看官方OpenSSL文档,以获取有关标准命令的说明。要查看OpenSSL中可用的许多秘密算法,请使用:

openssl list-cipher-commands

现在,让我们尝试一些加密。如果您想加密文本“ Hello World!” 使用使用CBC模式和256位密钥的AES算法,您将执行以下操作:

touch plain.txt
echo "Hello World!" > plain.txt
openssl enc -aes-256-cbc -in plain.txt -out encrypted.bin
//enter aes-256-cbc encryption password: example
//Verifying - enter aes-256-cbc encryption password: example

系统将提示您输入一个密码,将从该密码中计算出256位密钥。在上面的示例中,使用了密码example,但是您应该使用更强的密码。现在,您应该有一个名为的二进制文件encrypted.bin,您可以按以下步骤解密:

openssl enc -aes-256-cbc -d -in encrypted.bin -pass pass:example
// Hello World!

第2部分-公钥和私钥

为了举例说明,我们可以演示OpenSSL如何使用RSA算法管理公共密钥。您当然可以使用其他算法,并且将应用相同的原理。第一步是生成公用和专用密钥对。输入以下命令以创建一个1024位的RSA密钥:

openssl genrsa -out key.pem 1024

现在,您应该有一个key.pem包含公用密钥和专用密钥的文件。就像文件名所暗示的那样,私钥是使用“增强隐私电子邮件”(PEM)标准进行编码的。使用以下代码显示它:

cat key.pem

您应该看到字符的长组合。有关如何生成密钥的详细信息,请输入:

openssl rsa -in key.pem -text -noout

此命令应返回有关公共和私有指数,模数以及用于优化算法的其他方法和数字的信息。在这种情况下,该-noout选项可防止以base 64格式显示密钥,这意味着只能看到十六进制数字。当然,公共指数是一个例外,因为1024位密钥始终为65537。

要加密我们的私钥,我们使用以下代码:

openssl rsa -in key.pem -des3 -out enc-key.pem

密钥文件加密后,将提示您创建密码。接下来,我们可以key.pem使用以下命令从文件中提取公钥:

openssl rsa -in key.pem -pubout -out pub-key.pem

最后,我们准备使用我们的密钥加密文件。使用以下格式:

openssl pkeyutl -encrypt -in <input_file> -inkey <key.pem> -out <output_file>

在上述情况下,<input_file>是您要加密的文件。由于我们使用的是RSA,请记住该文件不能超过116个字节。该<key.pem>是包含公开密钥的文件。如果该文件也不包含私钥,则必须使用指示-pubin。该<output_file>是加密的文件名。

现在,要解密文件,您只需翻转方程式即可。更改-encrypt-decrypt,然后切换输入​​和输出文件。

第3部分-创建数字签名

最后,我们可以产生一个数字签名并进行验证。使用公钥算法直接签名大文件效率低下,因此我们应该首先计算要签名信息的摘要值。可以使用以下命令完成此操作:

openssl dgst -<hash_algorithm> -out <digest> <input_file>

在此示例中,<hash_algorithm>您选择的是计算摘要值的算法。该<input_file>是包含要散列数据的文件,而“消化”是将包含散列应用的结果的文件。

下一步是计算摘要值的签名,如下所示:

openssl pkeyutl -sign -in <digest> -out <signature> -inkey <key.pem>

最后,您可以像下面这样检查签名的有效性:

openssl pkeyutl -verify -sigfile <signature> -in <digest> -inkey <key.pem> -pubin

在这里,signature是签名的文件名,key.pem也是带有公钥的文件。为了自己确认验证,您可以计算输入文件的摘要值,并将其与从数字签名验证产生的摘要值进行比较。

第4部分-证书签名请求

假设您要创建由自己的证书颁发机构签名的数字证书。必须先生成证书签名请求或CSR,然后才能从证书颁发机构或CA获得SSL证书。CSR包括公钥以及一些在签名时插入证书中的其他信息。

首次创建CSR时,系统会要求您提供一些有关您自己或您的组织的信息。在“公用名”或CN字段中,您必须提供证书所针对的主机的标准域名。如果您实际上是从CA购买SSL证书,那么您提供的信息应该是真实且准确的!假设您要使用HTTPS保护Apache HTTP或Nginx Web服务器。您可以使用以下代码段从头开始创建新的2048位私钥以及CSR:

假设您要使用HTTPS保护Apache HTTP或Nginx Web服务器。您可以使用以下代码段从头开始创建新的2048位私钥以及CSR:

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

只需将“ domain”替换为您的域名即可。在这里,该-newkey rsa:2048选项告诉OpenSSL它应使用RSA算法来创建2048位密钥,而-nodes选项指示该密钥不应受到密码保护。

提供所有必要的信息后,将生成您的CSR。现在,您可以将其发送到CA并请求SSL证书。如果您的CA支持SHA-2,如果您希望CSR对SHA-2签名,请确保添加-sha256选项。

要为已经存在的私钥创建CSR,您将使用以下格式:

openssl req
-key domain.key
-new -out domain.csr

再次,domain用您的域名替换。-key此处的选项表示您正在使用现有的私钥,而-new表示您正在创建新的CSR。在前面的示例中,-new暗示是因为您要创建新密钥。

假设您已经拥有要续订的证书,但是您却以某种方式丢失了原始CSR。不要惊慌 您可以根据证书和私钥中的信息生成一个新证书。例如,如果您使用的是X509证书,则可以使用以下代码:

openssl x509
-in domain.crt
-signkey domain.key
-x509toreq -out domain.csr

-x509toreq需要该选项以使OpenSSL知道证书类型。

第5部分-生成SSL证书

如果您希望获得SSL证书的额外安全性,但又负担不起或不想被CA所困扰,那么一种比较便宜的选择就是签名自己的证书。自签名证书是用自己的私钥签名的,它们在加密数据方面与CA签名证书一样有效。但是,用户可能会从其浏览器收到警告,表明连接不安全,因此实际上仅在不需要证明服务身份的环境(例如在非公共服务器上)中才建议使用自签名证书。

同样,假设您使用HTTPS保护Apache HTTP或Nginx Web服务器的安全。以下命令将创建一个2048位私有密钥以及一个自签名证书:

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

-x509选项告诉OpenSSL您需要自签名证书,而-days 365表明该证书的有效期为一年。OpenSSL将生成一个临时CSR,以收集与证书关联的信息,因此您将必须照常回答提示。

如果您已经具有要与自签名证书关联的私钥,则只需稍微更改代码即可:

openssl req
-key domain.key
-new
-x509 -days 365 -out domain.crt

请记住,-new由于您是根据现有密钥创建新的CSR,因此必须包含该选项。

第6部分-查看证书

要查看证书和CSR文件,您必须从PEM格式对其进行解码。使用以下命令以纯文本格式查看CSR的内容:

openssl req -text -noout -verify -in domain.csr

要以纯文本格式查看证书的内容,请使用:

openssl x509 -text -noout -in domain.crt

您可以通过将证书的名称插入以下代码来验证证书是否由特定的CA签名:

openssl verify -verbose -CAFile ca.crt domain.crt

OpenSSL入门教程结论

在当今数字化日益发展的世界中,必须提高互联网安全性以保护我们自己的安全性。许多网站数据库包含有关访客的信息宝库,并且黑客一直在学习导航系统漏洞并利用此类数据的新方法。这就是为什么安全协议必须继续发展的原因。随时了解最新信息,以确保为用户提供足够的保护。

翻译自:https://www.keycdn.com/blog/openssl-tutorial

加入电报群

【江湖人士】(jhrs.com)原创文章,作者:江小编,如若转载,请注明出处:https://jhrs.com/2020/39063.html

扫码加入电报群,让你获得国外网赚一手信息。

文章标题:OpenSSL入门教程分为6步骤

(0)
江小编的头像江小编
上一篇 2020-12-10 21:25
下一篇 2020-12-13 22:45

热门推荐

Leave a Reply

Sending

国外老牌便宜域名服务商Namecheap注册com域名大优惠,抢到就赚到,优惠码:NEWCOM698
$5.98/年
直达官网