如何使用openssl管理公钥基础架构

时间:2020-03-05 15:28:54  来源:igfitidea点击:

OpenSSL是一个开源加密工具包,专注于安全套接字层/传输层安全性或者SSL/TLS,广泛部署在GNU/Linux系统上,它执行了我们在互联网上的日常体验的关键部分。
今天我将指出一些命令来管理X.509公钥基础架构(PKI),也可以使用此工具包使用此伟大工具来加密/解密文件和其他数据

OpenSSL密钥管理

大多数操作都基于键,这里有一些处理私有和公钥的命令。

RSA.

RSA是最具部署的公钥加密算法系统之一,这里有一些基本操作。

生成三重DES受保护的RSA私钥2048位长度保护Packense123

openssl genrsa -passout pass:nonsense123 -des3 -out rsa-2048-priv-key.pem 2048

我们可以根据需要将相应的公钥写入文件。

openssl rsa -in rsa-2048-priv-key.pem -pubout -out rsa-2048-public-key.pem

我们可以从受保护的密钥中删除密码并转储新文件上的密钥

openssl rsa -in priv-key.pem -out priv-key-no-pass.pem

以下命令才能验证密钥。

openssl rsa -check -in server-key.pem

DSA.

数字签名算法是RSA的替代方案。

生成DSA参数。

openssl dsaparam -out dsa.param 2048

使用现有参数生成DSA密钥。

openssl gendsa -des3 -out ca.key dsa.param

X.509证书

现在我们将显示一些命令来管理证书,签名请求和撤销列表。

生成证书

使用现有私钥生成证书签名请求。

openssl req -new -key server-key.pem -out server-csr.csr

创建新的证书签名请求和新的RSA私钥2048位长。

openssl req -out service-csr.pem -new -newkey rsa:2048 -nodes -keyout service-key.pem

验证证书签名请求。

openssl req -in server-csr.pem -noout -verify -key server-key.pem

签署证书申请。

openssl x509 -req -days 3650 -signkey ca.key -in ca.csr -out ca.crt

使用批处理模式生成带有键的自签名证书。

openssl req -subj "/C=BR/L=Rio de Janeiro/O=My Company/CN=www.mycomp.com" -newkey rsa:2048 -nodes -keyout domain.key -x509 -days 365 -out domain.crt

转储证书日期和信息。

openssl x509 -noout -in apache.crt -text -purpose -dates -hash -ocspid

OpenSSL证书文本信息

撤销证书。

openssl ca -revoke mycert.pem

生成CRL。

openssl ca -gencrl -config openssl.cnf -crldays 7 -crlexts crl_ext -out $crl_dir/file.crl

将对象与ASN1解析为标准输出。

openssl asn1parse -in ca.crt

ASN1解析证书

转换编码格式

有时,我们需要将编码的证书转换为另一个,例如,如果我们使用联合人,Windows和Java工作的混合环境。

Base64在顶部编码PEM,其次是两个BYNARIES,;在中心的过时网并下面。

将PEM编码证书转换为DER。

openssl x509 -inform PEM -outform DER -in ca.crt -out ca.der

所以相反,转换为PEM。

openssl x509 -inform DER -outform PEM -in ca.der -out ca.pem

使用s_client和s_server子命令进行测试

我们可以使用s_client和s_server对键/证书和服务进行测试。

测试证书和键启动S_SERVER。

openssl s_server -key ca.key -cert ca.crt

使用s_client连接到测试服务器。

openssl s_client -host localhost -port 4433 -CApath /etc/ssl/certs/

另一个s_client连接使用和显示证书,键和调试模式。

openssl s_client -connect localhost:4433 -key ca.k'ey -cert ca.crt -debug -showcerts

启动固定连接到邮件服务器的传输层。

openssl s_client -connect test.smtp.org:25 -starttls smtp -showcerts

使用openssl文件和流加密

我们还可以使用OpenSSL直接加密计算机上的数据。

加密文件

使用AES-256-CBC使用SHA1作为消息摘要加密文件。

openssl enc -aes-256-cbc -md sha1 -e -in arquivo -out arquivo.crypt

解密转到AES-256-CBC文件应如下。

openssl enc -aes-256-cbc -md sha1 -d -in arquivo.crypt -out arquivo

使用Triple des加密文件。

openssl enc -des3 -e -in arquivo -out arquivo

解密Triple DES加密文件。

openssl enc -des3 -d -in arquivo.crypt -out arquivo.decrypted

加密流

还有文件,我们还可以加密流,如网络套接字,管道和其他* nix I/O.在以下示例中,我们使用OpenSSL通过不安全的网络链路安全地发送Passwd文件。

服务器

首先,我们使用该服务器设置为等待连接。
我们可以在此处下载netcat。

nc -l -p 99 8| xz -d | openssl enc -aes-256-cbc -d > /client/bkp/etc/passwd

客户端

我们现在可以使用netcat作为客户端连接和发送文件。

cat /etc/passwd | openssl enc -e -aes-256-cbc  | xz -z | nc servidor 99