如何使用openssl管理公钥基础架构
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