OpenSSL 命令常用证书操作
openssl操作手册
OpenSSL 是一个开源的加密库,提供了各种加密算法、数字证书、SSL/TLS 协议等功能,被广泛用于网络安全和加密通信领域。
以下是OpenSSL 的一些常见用法和操作:1. 生成证书:使用OpenSSL 可以生成各种类型的数字证书,包括自签名证书、CA 证书、服务器证书、客户端证书等。
您可以使用OpenSSL 提供的命令行工具或API 接口来生成证书。
2. 加密和解密:OpenSSL 提供了各种加密算法,包括对称加密和非对称加密。
您可以使用OpenSSL 提供的命令行工具或API 接口来进行加密和解密操作。
3. 签名和验证:OpenSSL 提供了数字签名和验证的功能,可以用于保证数据的完整性和真实性。
您可以使用OpenSSL 提供的命令行工具或API 接口来进行签名和验证操作。
4. SSL/TLS 安全通信:OpenSSL 提供了SSL/TLS 协议的实现,可以用于安全通信。
您可以使用OpenSSL 提供的命令行工具或API 接口来实现SSL/TLS 安全通信。
5. 网络安全工具:OpenSSL 提供了各种网络安全工具,包括OpenSSL s_server、OpenSSL s_client、OpenSSL speed、OpenSSL rand 等。
这些工具可以用于测试和评估网络安全性能。
要使用OpenSSL,您需要安装OpenSSL 库,并包含相应的头文件。
在编写代码时,您可以调用OpenSSL 提供的函数和数据结构来实现您需要的加密、签名、SSL/TLS 安全通信等功能。
OpenSSL 提供了详细的文档和使用手册,您可以在OpenSSL 官方网站上找到完整的文档和参考手册。
在文档中,您可以找到各种函数的使用说明、示例代码和详细的接口说明,以帮助您更好地使用OpenSSL 库。
openssl 操作手册
OpenSSL 是一个强大的安全套接字层密码库,包含了各种加密算法的实现,提供了通用的密码安全服务。
下面是一个简要的OpenSSL 操作手册,包括一些常用的命令和选项:1. 生成密钥对:```openssl genpkey -algorithm RSA -out private_key.pemopenssl rsa -pubout -in private_key.pem -out public_key.pem```2. 生成自签名证书:```cssopenssl req -new -x509 -key private_key.pem -out cert.pem -days 365```3. 生成证书签名请求(CSR):```openssl req -new -key private_key.pem -out request.csr```4. 验证证书签名:```bashopenssl x509 -in cert.pem -text -noout```5. 导出证书为PEM 格式:```bashopenssl x509 -in cert.der -inform DER -outform PEM -out cert.pem```6. 加密数据:```cssopenssl enc -aes-256-cbc -salt -in plaintext.txt -out ciphertext.enc```7. 解密数据:```cssopenssl enc -aes-256-cbc -d -in ciphertext.enc -out plaintext.txt```8. 生成随机数:```openssl rand -out random.bin 1024```9. 验证数字签名:```cssopenssl dgst -sha256 -sign private_key.pem -in file.txt -out signature.bin openssl dgst -sha256 -verify public_key.pem -signature signature.bin file.txt```10. 生成Diffie-Hellman 密钥交换参数:```openssl dhparam -out dhparam.pem 2048```11. 生成CA 证书:```cssopenssl req -new -x509 -days 365 -extensions v3_ca -key private_ca_key.pem -out ca.pem```12. 生成服务器证书:```cssopenssl req -new -key private_server_key.pem -out server.reqopenssl x509 -req -days 365 -in server.req -CA ca.pem -CAkey private_ca_key.pem -CAcreateserial -out server.pem```13. 生成客户端证书:```cssopenssl req -new -key private_client_key.pem -out client.reqopenssl x509 -req -days 365 -in client.req -CA ca.pem -CAkey private_ca_key.pem -CAcreateserial -out client.pem```这只是一些常见的OpenSSL 命令示例,OpenSSL 还提供了许多其他功能和选项,具体可以参考官方文档或使用`man openssl` 命令来获取完整的操作手册。
Linux命令高级技巧使用openssl生成和管理SSL证书
Linux命令高级技巧使用openssl生成和管理SSL证书使用OpenSSL生成和管理SSL证书一、介绍SSL证书是用于保护网站和网络通信安全的重要工具。
OpenSSL是一个开源加密库,能够提供各种加密算法和SSL/TLS协议的实现。
本文将介绍如何使用OpenSSL生成和管理SSL证书的高级技巧。
二、安装OpenSSL首先,确保已经在Linux系统上安装了OpenSSL。
可以通过以下命令来检查OpenSSL是否已安装:$ openssl version如果没有安装,可以使用包管理工具,如apt、yum等进行安装。
三、生成自签名证书自签名证书用于测试环境或本地开发,不需要经过权威机构的认证。
使用OpenSSL可以轻松生成自签名证书。
以下是生成自签名证书的步骤:1. 生成私钥:$ openssl genrsa -out private.key 20482. 生成证书签发请求(CSR):$ openssl req -new -key private.key -out csr.csr在生成CSR的过程中,需要填写一些证书相关的信息,如国家、地区、组织、通用名等。
3. 生成自签名证书:$ openssl x509 -req -in csr.csr -signkey private.key -out certificate.crt生成的certificate.crt即为自签名证书,可以用于配置Web服务器等需要SSL证书的场景。
四、生成CA证书除了自签名证书,我们也可以生成CA(Certificate Authority)证书,以进行证书签发。
以下是生成CA证书的步骤:1. 生成私钥:$ openssl genrsa -out ca.key 20482. 生成证书签发请求(CSR):$ openssl req -new -key ca.key -out ca.csr在生成CSR的过程中,需要填写一些证书相关的信息,如国家、地区、组织、通用名等。
openssl 用法
openssl 用法1. 简介OpenSSL是一个开源的加密库,它提供了一套丰富的加密算法和工具,可以用于安全通信、数字证书、密码学等领域。
本文将详细介绍OpenSSL的用法,包括生成证书、对称加密、非对称加密以及数字签名等方面。
2. 生成证书2.1 创建自签名证书使用OpenSSL可以创建自签名证书,自签名证书是一种不依赖于第三方机构签发的信任证书。
生成自签名证书的步骤如下:1.生成私钥:openssl genrsa -out private.key 20482.生成证书签名请求:openssl req -new -key private.key -out csr.csr3.使用私钥签名证书请求:openssl x509 -req -in csr.csr -signkeyprivate.key -out certificate.crt2.2 使用CA签发证书除了自签名证书,还可以向证书颁发机构(CA)申请证书。
步骤如下:1.生成私钥:openssl genrsa -out private.key 20482.生成证书签名请求:openssl req -new -key private.key -out csr.csr3.将证书签名请求发送给CA机构进行签发4.收到由CA签发的证书后,使用私钥对其进行验证:openssl x509 -req -incsr.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out certificate.crt3. 对称加密对称加密是一种加密算法,使用相同的密钥进行加密和解密。
OpenSSL支持多种对称加密算法,包括DES、AES等。
3.1 对称加密示例以下是使用AES对称加密算法进行加密和解密的示例:# 生成密钥openssl rand -out key.key 16# 加密文件openssl enc -aes-256-cbc -e -in plaintext.txt -out ciphertext.enc -pass file:. /key.key# 解密文件openssl enc -aes-256-cbc -d -in ciphertext.enc -out plaintext.txt -pass file:. /key.key4. 非对称加密与对称加密不同,非对称加密使用一对公钥和私钥进行加密和解密。
openssl用法
openssl用法OpenSSL是一款广泛使用的加密库,它提供了许多加密和安全功能的实现。
本篇文章将介绍OpenSSL的基本用法,包括生成和管理证书、加解密数据、生成密码散列等常见功能。
1. 生成公私钥对OpenSSL可以用来生成公私钥对,用于加密数据。
生成公私钥对的命令如下:openssl genpkey -algorithm RSA -out private.keyopenssl rsa -in private.key -pubout -out public.key 其中,-algorithm指定算法,-out指定输出的文件名,-in指定输入的文件名。
2. 生成证书OpenSSL可以生成自签名证书,命令如下:openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem其中,-newkey指定生成新的私钥,-nodes表示不加密私钥,-keyout指定私钥输出文件名,-x509指定生成自签名证书,-days指定证书有效期,-out指定证书输出文件名。
3. 加解密数据OpenSSL可以使用公私钥对加解密数据,命令如下:openssl rsautl -encrypt -in plaintext.txt -out ciphertext.txt -inkey public.keyopenssl rsautl -decrypt -in ciphertext.txt -out plaintext.txt -inkey private.key其中,-encrypt表示加密,-decrypt表示解密,-in指定输入文件名,-out指定输出文件名,-inkey指定输入的私钥或公钥。
4. 生成密码散列OpenSSL可以生成各种密码散列,包括MD5、SHA-1、SHA-256等,命令如下:openssl dgst -md5 -out message.md5 message.txtopenssl dgst -sha1 -out message.sha1 message.txtopenssl dgst -sha256 -out message.sha256 message.txt 其中,-md5表示使用MD5算法,-sha1表示使用SHA-1算法,-sha256表示使用SHA-256算法,-out指定输出文件名,message.txt 为输入文件名。
OPENSSL操作(CA证书)
OpenSSL操作步骤第 1 部分 OpenSSL实践切换到/etc/pki/CA/目录(1)创建CA私钥:openssl genrsa -out private/ca.key 1024(2)加密CA私钥(保护私钥信息):openssl rsa -in ca.key -out cakey.pem(3)创建CA自签名证书(使用上一步创建的CA私钥来签名):openssl req -new -days 365 -x509 -key private/ca.key -out cacert.pem(4)创建服务器私钥:openssl genrsa -des3 -out private/server.key 1024(5)加密服务器私钥(保护私钥信息):openssl rsa -in private/server.key -out private/serverkey.pem(6)创建申请服务器所需证书的请求:openssl req -new -days 365 -key server.key -out server.csr(7)CA私钥和序列号文件demoCA/serial, demoCA/index.txtmkdir certs crl newcertstouch index.txt serialecho 01 > serial(8)CA签署服务器证书:openssl ca -days 365 -keyfile private/ca.key -cert cacert.pem -outdir ./ -in server.csr -out server.pem(9)转换证书格式:openssl x509 -in server.pem -out certs/server.crtopenssl x509 -in cacert.pem -out certs/cacert.crt(10)产生Java客户端私钥文件:keytool -genkey -keyalg RSA -alias ztyHotelService -keystore ztyHotelService.jks -storepass f1l89rmy -storetype jks(11)产生Java客户端证书请求:keytool -certreq -alias ztyHotelService -keyalg RSA -file ztyHotelService.csr -keystore ztyHotelService.jks(12)CA签署Java客户端证书:openssl ca -days 365 -keyfile private/ca.key -cert cacert.pem -outdir ./ -in ztyHotelService.csr -out ztyHotelService.pem(13)转换格式:openssl x509 -in ztyHotelService.pem -out certs/ztyHotelService.cer(14)导入CA证书到jks文件并信任之(由此CA所签署的所有证书也因此在信任之列):keytool -import -alias root -trustcacerts -file certs/cacert.crt -keystore ztyHotelService.jks(15)导入自己的证书到jks文件(至此,此jks文件包括了建立SSL连接所需所有信息):keytool -import -alias ztyHotelService -trustcacerts -file certs/ztyHotelService.cer -keystore ztyHotelService.jks(16)转换成pkcs12格式,为客户端安装所用openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.pfx第 2 部分错误信息➢服务器私钥密码输入错误:。
openssl 常用命令
openssl 常用命令OpenSSL是一个开源的加密库,提供了许多加密算法和安全协议,目前广泛应用于网络安全领域。
本文将介绍常用的OpenSSL命令及其用法。
1.生成RSA密钥对RSA是一种非对称加密算法,可以用于数字签名、数据加密等。
使用OpenSSL可以生成RSA密钥对,命令如下:openssl genrsa -out private.key 2048其中,genrsa表示生成RSA密钥对,-out表示输出文件名,2048表示密钥长度。
执行该命令后,会在当前目录下生成一个名为private.key的文件,即私钥文件。
2.生成证书请求在申请SSL证书时,需要先生成证书请求文件(CSR),以便证书颁发机构验证申请者信息。
使用OpenSSL可以生成证书请求,命令如下:openssl req -new -key private.key -out cert.csr其中,req表示生成证书请求,-new表示新建证书请求,-key表示私钥文件,-out表示输出文件名。
执行该命令后,会在当前目录下生成一个名为cert.csr的文件,即证书请求文件。
3.自签名证书在开发和测试环境中,我们可以使用自签名证书,避免购买正式证书的成本。
使用OpenSSL可以生成自签名证书,命令如下:openssl req -x509 -days 365 -key private.key -out cert.crt其中,req表示生成证书请求,-x509表示生成自签名证书,-days 表示证书有效期,-key表示私钥文件,-out表示输出文件名。
执行该命令后,会在当前目录下生成一个名为cert.crt的文件,即自签名证书。
4.查看证书信息使用OpenSSL可以查看证书的详细信息,命令如下:openssl x509 -in cert.crt -text -noout其中,x509表示查看证书信息,-in表示输入文件名,-text表示以文本形式输出信息,-noout表示不输出证书本身。
openssl生成的各种证书用法-概述说明以及解释
openssl生成的各种证书用法-概述说明以及解释1.引言1.1 概述在当今数字化信息时代,网络安全问题备受关注。
而证书作为一种数字证明方式,扮演着保障网络通信安全的重要角色。
OpenSSL是一个强大的加密工具包,可以用来生成各种类型的证书,包括服务器证书、客户端证书、中间CA证书等。
本文将介绍OpenSSL生成证书的基本概念,不同类型证书的用途和生成方法,以及证书的应用场景和注意事项。
通过全面了解OpenSSL证书生成的流程和用法,读者可以更好地保障自己的网络通信安全,防范各种网络攻击。
1.2 文章结构本篇文章将围绕openssl生成的各种证书的用法展开讨论。
主要分为引言、正文和结论三个部分。
引言部分将介绍文章的背景和概要,提出文章的目的和重要性。
通过引言部分,读者将对文章内容有一个初步了解。
正文部分将介绍openssl生成证书的基本概念,包括证书的定义、结构和工作原理。
然后详细探讨不同类型证书的用途和生成方法,例如SSL 证书、数字证书、代码签名证书等,以及如何使用openssl生成这些证书。
在证书的应用场景和注意事项部分,我们将讨论证书在网络安全中的重要性,以及需要注意的安全问题和最佳实践。
读者将了解到如何正确地使用和管理证书,以保障网络安全。
在结论部分,我们将总结openssl生成证书的重要性,强调证书在网络安全中的作用,并展望未来openssl证书生成的发展趋势。
读者将对openssl证书生成技术有一个全面的认识,为提升网络安全水平提供参考和指导。
1.3 目的在本文中,我们的目的是深入探讨openssl生成各种证书的方法和用途。
通过了解openssl生成证书的基本概念、不同类型证书的用途和生成方法,以及证书在网络安全中的重要性和应用场景,我们可以更好地理解如何使用openssl生成和管理证书来保障网络通信的安全性。
同时,我们还将探讨未来openssl证书生成的发展趋势,帮助读者更好地把握证书技术的发展方向,从而更好地保护网络安全。
openssl使用方法
openssl使用方法
OpenSSL是一个开源的加密库,提供了一系列加密算法和安全协议,被广泛应用于网络通信、HTTPS、VPN等领域。
本文将介绍openssl 的基本使用方法,包括生成证书、加密解密文件、创建私钥等常见操作。
1.生成证书
生成自签名证书:
openssl req -newkey rsa:2048 -nodes -keyout example.key -x509 -days 365 -out example.crt
生成CA根证书:
openssl req -new -x509 -days 365 -keyout ca.key -out ca.crt 创建CSR文件:
openssl req -new -key example.key -out example.csr
2.加密解密文件
使用对称加密AES算法加密文件:
openssl enc -aes-256-cbc -salt -in example.txt -out example.enc
使用私钥解密文件:
openssl rsautl -decrypt -inkey example.key -in example.enc -out example.txt
3.创建私钥
创建RSA私钥:
openssl genrsa -out example.key 2048
创建DSA私钥:
openssl dsaparam -genkey 2048 -out example.key 以上是openssl的基本使用方法,需要注意的是,证书和私钥的安全性非常重要,应妥善保管。
同时,openssl还有很多高级功能,可以根据需要进一步了解和使用。
openssl 用法
openssl 用法OpenSSL是一个开源软件库,提供了各种加密和安全方面的功能。
它可用于创建SSL/TLS连接、生成和签名证书、进行加密和解密等操作。
以下是一些常见的用法:1. 创建自签名证书可以使用OpenSSL创建自签名证书,用于测试或内部使用。
使用以下命令:openssl req -x509 -newkey rsa:4096 -nodes -keyout key.pem -out cert.pem -days 3652. 生成随机数可以使用OpenSSL生成随机数,用于密码学等方面的应用。
使用以下命令:openssl rand -hex 163. 查看证书信息可以使用OpenSSL查看证书的详细信息,包括颁发机构、过期时间等。
使用以下命令:openssl x509 -noout -text -in cert.pem4. 创建CSR可以使用OpenSSL创建证书签名请求(CSR),用于向证书颁发机构申请SSL证书。
使用以下命令:openssl req -new -newkey rsa:4096 -nodes -keyout key.pem -out csr.pem5. 加密和解密文件可以使用OpenSSL对文件进行加密和解密,以保护敏感数据。
使用以下命令:加密:openssl enc -aes-256-cbc -salt -in plaintext.txt -out encrypted.txt解密:openssl enc -aes-256-cbc -d -in encrypted.txt -out plaintext.txt6. 创建DH参数可以使用OpenSSL创建Diffie-Hellman(DH)参数,用于安全地交换密钥。
使用以下命令:openssl dhparam -out dhparam.pem 2048以上是一些常见的OpenSSL用法,它们可以帮助您保护您的数据和通信。
使用OpenSSL证书操作详解
使⽤OpenSSL证书操作详解⼀、OpenSSL简介openssl verson⼆、秘钥操作A)⽣成RSA私钥。
-out private.key 输出秘钥⽂件为private.key;128 为秘钥⼤⼩,⽬前认为2048⼤⼩是⽐较安全的,本⽂测试使⽤128⼤⼩。
openssl genrsa -out private.key 128⽣成的私钥样例为:-----BEGIN RSA PRIVATE KEY-----MGMCAQACEQDS52MK0Nw1QIfRfSaTOhdnAgMBAAECEQCV/r6v6I9Uxv/J3tc5onvBAgkA6o1Gly9yqVECCQDmMIZkMe6HNwIIaKE68yhMWvECCBXOAuz6zd2BAgkAlR9YVQCWm2A=-----END RSA PRIVATE KEY-----B)⽣成带密码的RSA私钥。
-aes256:指定私钥密码加密⽅式;-passout pass:1234:设置私钥密码为1234openssl genrsa -aes256 -passout pass:1234 -out private.key 128⽣成的私钥样例如下:-----BEGIN RSA PRIVATE KEY-----Proc-Type: 4,ENCRYPTEDDEK-Info: AES-256-CBC,B156********B98267AD45CF619539BBXf7uNMPFE3pdc0T5hmrZWaU5GmK/Jaf7B8oF4pmeTWAJ7SvGvQKxeFBecE1ROn6zxIuSkHI9SwsdTlwNJmvYzGLwLwHNwXGc/cJF0EISlsBYTE/v2C12tj9E5VGKiTeHDRuIEhyaypqMp5+Ceyi61A==-----END RSA PRIVATE KEY-----C)私钥加密:openssl rsa -in private.key -aes256 -passout pass:1234 -out private_pwd.pem私钥去除加密:openssl rsa -in private_pwd.key -passin pass:1234 -out private.keyD)⽣成公钥,如果私钥private.pem有密码,⽣成公钥时会提⽰需要输⼊密码。
openssl 的用法
`openssl`是一个强大的命令行工具,用于处理各种加密任务,包括生成和查看证书,对数据进行加密和解密,以及生成随机数等。
以下是一些基本的`openssl`用法:1. **查看证书**使用`openssl`可以查看证书。
例如,要查看一个证书的内容,可以使用以下命令:```bashopenssl x509 -in cert.pem -text -noout```这条命令会读取名为`cert.pem`的证书文件,并显示其内容。
2. **生成自签名证书**使用`openssl`可以生成自签名证书。
例如,以下命令将生成一对自签名证书和私钥:```bashopenssl req -x509 -newkey rsa:2048 -nodes -keyout cert.key -out cert.pem -days 365```这条命令将生成一个有效期为1年的自签名证书,私钥存储在`cert.key`文件中。
3. **生成随机数**`openssl`还可以用于生成随机数。
例如,以下命令将生成一个包含16字节(128位)随机数的文件:```bashopenssl rand -out random.bin 16```这条命令将生成一个名为`random.bin`的文件,其中包含16字节的随机数。
4. **加密和解密数据**`openssl`还可以用于加密和解密数据。
例如,以下命令将使用RSA 算法加密一个文件:```bashopenssl rsautl -encrypt -pubin -inkey public.pem -in plaintext.txt -out ciphertext.bin```这条命令将读取名为`plaintext.txt`的文本文件,使用名为`public.pem`的公钥文件进行加密,并将结果写入名为`ciphertext.bin`的文件。
解密可以使用对应的私钥进行。
5. **查看SSL/TLS协议版本**使用`openssl`可以查看SSL/TLS协议版本。
windowsopenssl命令用法
windowsopenssl命令用法
Windows上的OpenSSL命令用法如下:
1.生成RSA私钥:
genrsa -out rsa_private_key.pem 1024
该命令将生成一个名为rsa_private_key.pem的RSA私钥文件,其中1024是私钥的长度。
2.生成自签名证书:
css
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -sha256
该命令将生成一个私钥文件(key.pem)和一个自签名的X.509证书文件(cert.pem)。
其中,-x509表示生成自签名证书,-newkey rsa:4096表示生成一个4096位的RSA密钥对,-keyout key.pem指定私钥文件的输出路径和名称为key.pem,-out
cert.pem指定证书文件的输出路径和名称为cert.pem,-days 365指定证书的有效期为365天,-sha256表示使用SHA-256算法进行
证书签名。
请注意,这只是OpenSSL命令的一部分用法示例,具体的命令参数和选项可能因版本或特定的需求而有所不同。
建议查阅OpenSSL的官方文档或使用openssl help命令获取更详细的帮助信息。
openssl用法
openssl用法OpenSSL是一个开放源代码的加密工具包,用于实现安全通信、数据加密和数字签名等。
它支持多种加密算法和协议,包括SSL、TLS、AES、RSA等。
在使用OpenSSL时,首先需要生成证书。
可以使用以下命令来生成自签名证书:```openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out cert.pem```这个命令会生成一个新的RSA 2048位的密钥,并将其保存在key.pem文件中。
它还会生成一个自签名的X.509证书,并将其保存在cert.pem文件中。
生成证书之后,就可以使用OpenSSL进行加密和解密操作了。
例如,可以使用以下命令来加密一个文件:```openssl enc -aes-256-cbc -salt -in plaintext.txt -out encrypted.txt```这个命令会将plaintext.txt文件使用AES 256位加密,并将加密后的数据保存在encrypted.txt文件中。
可以使用以下命令来解密这个文件:```openssl enc -aes-256-cbc -d -in encrypted.txt -out plaintext.txt```这个命令会将encrypted.txt文件解密,并将解密后的数据保存在plaintext.txt文件中。
除了加密和解密操作之外,OpenSSL还可以用于生成和验证数字签名。
例如,可以使用以下命令来生成一个RSA私钥和公钥:```openssl genpkey -algorithm RSA -out private.key -aes256 openssl rsa -in private.key -pubout -out public.key```这个命令会生成一个带有AES 256位加密的RSA私钥,并将其保存在private.key文件中。
openssl用法
openssl用法OpenSSL是一个开放源代码的软件库,提供了开发应用程序所需要的各种加密算法、协议及工具。
下面是OpenSSL的用法简介:1. 生成私钥使用OpenSSL生成私钥的命令如下:```openssl genpkey -algorithm RSA -out private.key```该命令将生成一个RSA算法的私钥,保存在private.key文件中。
2. 生成自签名证书使用OpenSSL生成自签名证书的命令如下:```openssl req -x509 -newkey rsa:2048 -keyout private.key -out cert.crt -days 365```该命令将生成一个私钥和自签名证书,其中私钥保存在private.key文件中,证书保存在cert.crt文件中。
3. 加密和解密文件使用OpenSSL对文件进行加密和解密的命令如下:加密:`openssl enc -aes-256-cbc -in plaintext.txt -out encrypted.txt`该命令将使用AES-256-CBC算法对plaintext.txt文件进行加密,加密后的文件保存在encrypted.txt中。
解密:`openssl enc -aes-256-cbc -d -in encrypted.txt -out plaintext.txt`该命令将使用AES-256-CBC算法对encrypted.txt文件进行解密,解密后的文件保存在plaintext.txt中。
4. 生成摘要使用OpenSSL生成消息摘要的命令如下:```openssl dgst -sha256 filename```该命令将读取filename文件并使用SHA-256算法生成消息摘要。
以上是OpenSSL的简单用法,更多详细用法可参考OpenSSL的官方文档。
openssl简明使用手册
openssl简明使用手册邮件群发本文简要介绍了使用openssl来生成CA证书、申请证书、颁发证书以及撤销证书的过程,包括了RSA算法和DSA算法。
1. 首先建立CA密钥:openssl genrsa -des3 -out ca.key 1024 (创建密钥)chmod 400 ca.key (修改权限为仅root能访问)openssl rsa -noout -text -in ca.key (查看创建的证书)2. 利用CA密钥自签署CA证书:openssl req -new -x509 -days 3650 -key ca.key -out ca.crt chmod 400 ca.crt (修改权限为仅root能访问)openssl x509 -noout -text -in ca.crt (查看创建的证书)3. 创建服务器证书签署申请:openssl genrsa -des3 -out client.key 1024 chmod 400 server.key (修改权限为仅root能访问)openssl rsa -noout -text -in client.key (查看创建的证书)4. 利用证书签署申请生成请求:openssl req -new -key client.key -out client.csr openssl req -noout -text -in client.csr (查看创建的请求)5.进行证书签署:这时候需要先设置一下openssl的配置文件。
modify /usr/share/ssl/f并根据这个配置文件创建相应的目录和文件。
在创建了serial文件之后,还需要添加当前的八进制的serial number,如:01 然后执行:openssl ca -keyfile ca.key -cert ca.crt -in client.csr -outclient.pem6.证书撤销:openssl ca -keyfile ca.key -cert ca.crt -revoke client.pem这时数据库被更新证书被标记上撤销的标志,需要生成新的证书撤销列表: openssl ca -gencrl -keyfile ca.key -cert ca.crt -out crl/test.crl 查看证书撤销列表:openssl crl -noout -text -in crl/test.crl 证书撤销列表文件要在WEB站点上可以使用,必须将crldays或crlhours和crlexts加到证书中: openssl ca -gencrl -config /etc/f -crldays 7 -crlexts crl_ext -outcrl/sopac-ca.crl如果想使用DSA算法而不是RSA算法,那么:1.先生成dsa参数openssl dsaparam -rand -genkey -out dsa.pem 1024 查看生成的DSA参数openssl dsaparam -noout -text -in dsa.pem2.根据生成的DSA参数来生成DSA密钥openssl gendsa -des3 -out ca.key dsa.pem查看DSA密钥openssl dsa -noout -text -in ca.key下面的步骤同RSA部分前面生成私钥时都使用了des3来加密,其实也可以指定-des用des加密,当然强度就没有des3高了。
OpenSSL常用命令
OpenSSL常⽤命令查看证书openssl x509 -in cacert.pem -text -noout # PEMopenssl x509 -in cacert.der -inform der -text -noout # DER (distinguished encoding rule)查看私钥openssl rsa -in cakey.pem -text -noout # PEMopenssl rsa -in cakey.der -inform der -text -noout # DER查看CSRopenssl req -in ca.csr -text -noout # PEMopenssl req -in ca.csr -inform der -text -noout # DER转换证书openssl x509 -in cacert.pem -out cacert.der -outform deropenssl x509 -in cacert.der -inform der -out cacert.pem -outform pem转换私钥openssl rsa -in cakey.pem -out cakey.der -outform deropenssl rsa -in cakey.der -inform der -out cakey.pem -outform pem转换CSRopenssl req -in ca.csr -out ca.csr -outform deropenssl req -in ca.csr -inform der -out ca.csr -outform pem利⽤-addext添加扩展man openssl查看req⼦命令man req man openssl-reqopenssl req -new -x509 -nodes -out allusion.crt -days 3650 -sha512 \-newkey rsa:2048 -keyout allusion.key \-subj '/C=US/ST=America/L=New York/O=IBM/OU=DevOps/CN=IBM/emailAddress=b@b.co' \ -addext 'subjectAltName=DNS:localhost, IP:127.0.0.1' \-addext 'certificatePolicies= 1.2.3.4'RHEL系⽣成证书fHOME = .oid_section = new_oidsopenssl_conf = default_modules[ default_modules ]ssl_conf = ssl_module[ ssl_module ]system_default = crypto_policy[ crypto_policy ].include = /etc/crypto-policies/back-ends/opensslcnf.config[ new_oids ]tsa_policy1 = 1.2.3.4.1tsa_policy2 = 1.2.3.4.5.6tsa_policy3 = 1.2.3.4.5.7[ ca ]default_ca = CA_default # The default ca section[ CA_default ]dir = /etc/pki/CA # Where everything is keptcerts = $dir/certs # Where the issued certs are keptcrl_dir = $dir/crl # Where the issued crl are keptdatabase = $dir/index.txt # database index file.#unique_subject = no # Set to 'no' to allow creation of several certs with same subject. new_certs_dir = $dir/newcerts # default place for new certs.certificate = $dir/cacert.pem # The CA certificateserial = $dir/serial # The current serial numbercrlnumber = $dir/crlnumber # the current crl number must be commented out to leave a V1 CRL crl = $dir/crl.pem # The current CRLprivate_key = $dir/private/cakey.pem # The private keyx509_extensions = usr_cert # The extensions to add to the certname_opt = ca_default # Subject Name optionscert_opt = ca_default # Certificate field optionsdefault_days = 365 # how long to certify fordefault_crl_days = 30 # how long before next CRLdefault_md = sha256 # use SHA-256 by defaultpreserve = no # keep passed DN orderingpolicy = policy_match[ policy_match ]countryName = matchstateOrProvinceName = matchorganizationName = matchorganizationalUnitName = optionalcommonName = suppliedemailAddress = optional[ policy_anything ]countryName = optionalstateOrProvinceName = optionallocalityName = optionalorganizationName = optionalorganizationalUnitName = optionalcommonName = suppliedemailAddress = optional[ req ]default_bits = 2048default_md = sha256default_keyfile = privkey.pemdistinguished_name = req_distinguished_nameattributes = req_attributesx509_extensions = v3_ca # The extensions to add to the self signed cert string_mask = utf8only[ req_distinguished_name ]countryName = Country Name (2 letter code)countryName_default = CNcountryName_min = 2countryName_max = 2stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = ApparitionlocalityName = Locality Name (eg, city)localityName_default = AbdicationanizationName = Organization Name (eg, company)anizationName_default = IBMorganizationalUnitName = Organizational Unit Name (eg, section) organizationalUnitName_default = DevOpscommonName = Common Name (eg, your name or your server\'s hostname) commonName_max = 64emailAddress = Email AddressemailAddress_max = 64emailAddress_default = admin@[ req_attributes ]challengePassword = A challenge passwordchallengePassword_min = 1challengePassword_max = 20unstructuredName = An optional company name[ usr_cert ]basicConstraints = CA:FALSEnsComment = "OpenSSL Generated Certificate"subjectKeyIdentifier = hashauthorityKeyIdentifier = keyid, issuer[ v3_req ]basicConstraints = CA:FALSEkeyUsage = nonRepudiation, digitalSignature, keyEncipherment[ v3_ca ]subjectKeyIdentifier = hashauthorityKeyIdentifier = keyid:always, issuerbasicConstraints = critical, CA:true[ crl_ext ]authorityKeyIdentifier = keyid:always[ proxy_cert_ext ]basicConstraints = CA:FALSEnsComment = "OpenSSL Generated Certificate"subjectKeyIdentifier = hashauthorityKeyIdentifier = keyid, issuerproxyCertInfo = critical, language:id-ppl-anyLanguage, pathlen:3, policy:foo[ tsa ]default_tsa = tsa_config1 # the default TSA section[ tsa_config1 ]dir = /etc/pki/CA # TSA root directoryserial = $dir/tsaserial # The current serial number (mandatory)crypto_device = builtin # OpenSSL engine to use for signingsigner_cert = $dir/tsacert.pem # The TSA signing certificate (optional)certs = $dir/cacert.pem # Certificate chain to include in reply (optional)signer_key = $dir/private/tsakey.pem # The TSA private key (optional)signer_digest = sha256 # Signing digest to use. (Optional)default_policy = tsa_policy1 # Policy if request did not specify it (optional)other_policies = tsa_policy2, tsa_policy3 # acceptable policies (optional)digests = sha1, sha256, sha384, sha512 # Acceptable message digests (mandatory) accuracy = secs:1, millisecs:500, microsecs:100 # (optional)clock_precision_digits = 0 # number of digits after dot. (optional)ordering = yes # Is ordering defined for timestamps? (optional, default: no)tsa_name = yes # Must the TSA name be included in the reply? (optional, default: no) ess_cert_id_chain = no # Must the ESS cert id chain be included? (optional, default: no) ess_cert_id_alg = sha256 # algorithm to compute certificate identifier (optional, default: sha1) View CodePrepare directory & filesmkdir -pv /etc/pki/CA/{certs,newcerts,private,csr}touch index.txtecho 'unique_subject = no' > index.txt.attrehco 01 > serialPrepare rootCAopenssl genrsa -des3 -out private/cakey.pem 2048openssl req -new -x509 -nodes -days 3650 -key private/cakey.pem -out cacert.pem \-subj '/C=CN/ST=Apparition/L=Abdication/O=IBM/OU=DevOps/CN=rootCA/emailAddress=admin@/' openssl req -new -x509 -nodes -days 3650 -key private/cakey.pem -out cacert.pem -config fGenerate secondaryCAopenssl genrsa -des3 -out private/secondaryCA.key 2048openssl rsa -in private/secondaryCA.key -out private/secondaryCA.keyopenssl req -new -key private/secondaryCA.key -out csr/secondaryCA.csr \-subj '/C=CN/ST=Apparition/L=Abdication/O=IBM/OU=DevOps/CN=secondaryCA/emailAddress=admin@/' openssl ca -in csr/secondaryCA.csr -out certs/secondaryCA.crt -days 3650 \-cert cacert.pem -keyfile private/cakey.pem \-config f -extensions v3_caGenerate server certificateopenssl req -new -nodes -newkey rsa:2048 -keyout private/server.key -out csr/server.csr \-subj '/C=CN/ST=Apparition/L=Abdication/O=IBM/OU=DevOps/CN=server/emailAddress=admin@/' openssl ca -in csr/server.csr -out certs/server.crt -days 3650 \-cert certs/secondaryCA.crt -keyfile private/secondaryCA.key \-config fRevoke server certificateecho 01 > crlnumberopenssl ca -revoke certs/server.crt -cert cacert.pem -keyfile private/cakey.pem -config f # generate crlopenssl ca -gencrl -out crl.crl -cert cacert.pem -keyfile private/cakey.pem -config f openssl crl -in crl.crl -text -nooutpkcs12证书cat certs/secondaryCA cacert.pem > ca-chain.crt# 不包含CA证书链openssl pkcs12 -export \-in certs/server.crt -inkey private/server.key -nodes \-out server.pfx -passout pass:123321# 包含CA证书链openssl pkcs12 -export -chain -CAca ca-chain.crt \-in certs/server.crt -inkey private/server.key -nodes \-out server.pfx -passout pass:123321openssl pkcs12 -in ca-bundle.p12 -nocerts -nodes -out ca.key # 提取ca私钥openssl pkcs12 -in ca-bundle.p12 -clcerts -nokeys -out ca.crt # 仅输出ca证书openssl pkcs12 -in ca-bundle.p12 -info -noout。
Openssl命令详解-证书篇
Openssl命令详解-证书篇⽣成⾃签证书# 设置CA证书subjectCA_SUBJ="/C=CN/ST=ShanDong/L=JiNan/O=sec/OU=sec/CN=/emailAddress=hxy@"# 1. ⽣成rsa⾃签CAopenssl req -x509 -newkey rsa:2048 -keyout pri.key -out ca.crt -days 3650 -nodes \-subj $CA_SUBJ# 2. ⽣成sm2⾃签CA (以下也可以使⽤openssl 1.1.x以上版本)gmssl ecparam -genkey -name SM2 -text -out pri.keygmssl req -new -key pri.key -out ca.csr -subj $CA_SUBJgmssl x509 -req -days 3650 -sm3 -in ca.csr -signkey pri.key -out ca.crt# 3. ⽣成ecc⾃签CAopenssl ecparam -out pri.key -name prime256v1 -genkeyopenssl req -key pri.key -new -out ca.csr -subj $CA_SUBJopenssl x509 -req -in ca.csr -signkey pri.key -out ca.crt -days 3650# 4. ⽣成pkcs8格式的私钥openssl pkcs8 -topk8 -in pri.key -out pkcs8_pri.key -nocrypt查看私钥和证书# 1. 查看私钥openssl ec -in pri.key -text #解析ec类私钥(包括sm2)openssl rsa -in pri.key -text #解析rsa私钥# 2. 查看证书x509openssl x509 -in ca.crt -text -noout命令详情(以ec为例)1. ⽣成⾃签名证书2. 私钥保护3. 查看私钥4. 查看证书。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在OpenSSL开发包中,包含一个实用工具:openssl,比如我用MinGW GCC 编译OpenSSL 0.9.8k 后,openssl 就保存在out目录下。
openssl 工具是完成密钥、证书操作和其它SSL 事务的入口环境,直接运行不带参数的openssl 命令后,可以得到一个shell 环境,在其中可以以交互的方式完成SSL 相关的安全事务。
不过有时,如果用一个带参数选项的openssl 命令完成操作,会更方便。
下面是我使用openssl 做证书操作时,记录的常用命令用法。
1.生成密钥
生成RSA密钥,保存在file.key中,命令如下:
上面命令的含义是:产生RSA密钥,包括:私钥和公钥两部分,然后使用DES3算法,用用户输入的密码(passphrase)加密该密钥数据,保存在file.key中。
file.key默认以BASE64方式编码密钥数据,file.key的格式称为:PEM (Privacy Enhanced Mail)格式,在RFC 1421到RFC 1424中定义,PEM是早期用来进行安全电子邮件传输的标准,但现在广泛用在证书、证书请求、PKCS#7对象的存储上,所以证书文件也经常以.pem为扩展名。
2.不加密的密钥
如果在生成密钥时,使用了-des3等加密选项,则会生成被用户密码保护的加密密钥,以增强密钥数据的保密性(因为密钥文件中包含私钥部分)。
但有时为了方便,需要不加密的明文密钥(这样安全性会降低),比如:使用
Apache的HTTPS服务,每次启动Apache服务时,都需要用户输入保护密钥的密码,感觉麻烦的话,可以使用明文密钥。
明文密钥可以使用不带-des3等加密选项的openssl命令生成,还可以使用以下命令将加密保护的密钥转换成明文密钥,当然转换过程需要用户输入原来的加密保护密码:
3.查看密钥
查看保存在file.key中的RSA密钥的细节,如果此文件是加密保护的,会提示用户输入加密此文件的密码,命令如下:
输出的内容均是RSA密钥数据的数学信息(模数、指数、质数等),从输出的结果中也可知file.key保存的RSA密钥数据包括:私钥和公钥两部分。
该命令也能查看其它工具生成的密钥,比如SSH,只要密钥文件符合openssl支持的格式。
4.生成证书请求
由file.key产生一个证书请求(Certificate Request),保证在file.csr 中,命令如下:
指定时,默认会访问Unix格式的默认路径:/usr/local/ssl/f。
创建证书请求时,会要求用户输入一些身份信息,示例如下:
注意:
∙产生的证书请求文件file.csr,也采用BASE64编码的字符格式。
∙DN(Distinguished Name)为这个证书请求的标识,上面这些输入的内容,即是组成DN的字段(field),其中有些可以留空,比如:额外属性(extra attributes)。
DN的概念也在LDAP中存在,参考:Appendix A - LDAP: DN & RDN,所以通常用LDAP来管理证书。
∙输入点号(.),表示这一字段留空。
CN(Common Name)这项很重要,当创建的证书用于网站时,此项应该为该网站的FQDN,假如以后使用此证书的网站的域名与证书里的不匹配时,浏览器将报错。
5.查看证书请求
显示证书请求file.csr的细节,命令如下:
1 openssl req -noout -text -in file.csr -config /path/to/f
比如,会显示创建证书请求时,用户输入的信息:
Subject: C=CN, ST=Shaanxi, L=Xi'an, O=zy-home, CN=zy-root/emailAddress=zy-root@
6.签发证书:自签
可以使用一个密钥文件.key,对证书请求file.csr进行签名,生成证书file.cer(Certificate)。
如果使用证书请求file.csr自己的密钥文件file.key来签名,称为自签,命令如下:
1 openssl x509 -req -in file.csr -out file.cer -signkey file.key -days 3650
对证书请求的签名,实际使用的是密钥文件.key中的私钥部分数据。
如果.key是加密保护的,则会提示用户输入密码。
7.签发证书:使用CA证书签名
如果使用另一个证书file1.cer及其密钥文件file1.key,对一个证书请求file2.csr进行签名,则使用下面命令:
1 openssl x509 -req -in file2.csr -out file2.cer -signkey file2.key -CA file1.cer -CAkey file1.key -CAcreateserial -days 3650
个包含证书file2.cer序号的文件:file1.srl,注意:这个序号文件的名称,是以签名证书的CA名字命名的。
实际工作中,用来签名的file1.cer和file1.key,通常由一个认证授权者(CA - Certificate Authority)提供,而这个签名过程也在认证授权者内部完成,因为file1.key中包含这个认证授权者自己的私钥部分数据,不能暴露到外部。
CA:Certificate Authority,它的名字翻译过来有很多种:认证授权者,权威机构,认证中心。
CA是以角色和功能来定义的,它的形式可以是个人、
组织、机构、政府等等,但一般大家公信的CA通常是一些大的安全公司、机构、政府部门等,例如:VeriSign、Thawte。
8.查看证书
∙可以使用SUN JRE/JDK中的keytool,来显示证书file.cer的
∙也可以用openssl的命令显示证书file.cer的细节:
9.
将一对PEM格式的证书和其密钥文件,转换成PKCS#12格式的证书文件,PKCS#12称为Personal Information Exchange格式,通常以.p12
需要设置导出密码(Export Password)保护PKCS#12证书文件。
一般浏览器对个人证书的导入/导出都采用PKCS#12格式,在浏览器中导入PKCS#12文件时,会提示输入的密码,即上面设置的导出密码,而原始的PEM密钥文件的保护密码不能在这里用。