OpenSSL 是一个功能强大的开源工具包,用于处理各种与加密相关的任务,包括生成密钥、创建证书、加密解密数据、验证证书等。以下是 OpenSSL 的主要功能及其示例命令。
1.生成密钥
1.1 生成 RSA 私钥
openssl genrsa -out private_key.pem 2048
• 说明:生成一个 2048 位的 RSA 私钥,并保存到private_key.pem
文件中。
1.2 从私钥提取公钥
openssl rsa -in private_key.pem -pubout -out public_key.pem
• 说明:从私钥文件中提取公钥,并保存到public_key.pem
文件中。
2.生成自签名证书
2.1 生成自签名证书
openssl req -x509 -new -key private_key.pem -out certificate.pem -days 365
• 说明:使用私钥生成一个自签名的 X.509 证书,有效期为 365 天,保存到certificate.pem
文件中。
2.2 生成证书签名请求(CSR)
openssl req -new -key private_key.pem -out csr.pem
• 说明:生成一个证书签名请求(CSR),保存到csr.pem
文件中。CSR 可以提交给证书颁发机构(CA)以获取签名证书。
3.验证证书
3.1 验证证书
openssl x509 -in certificate.pem -text -noout
• 说明:查看证书的详细信息,包括主题、有效期、颁发者等。
3.2 验证证书链
openssl verify -CAfile ca_certificate.pem certificate.pem
• 说明:验证certificate.pem
是否由ca_certificate.pem
颁发。
4.加密和解密
4.1 使用公钥加密数据
openssl rsautl -encrypt -pubin -inkey public_key.pem -in plaintext.txt -out encrypted.bin
• 说明:使用公钥对plaintext.txt
文件进行加密,生成加密后的二进制文件encrypted.bin
。
4.2 使用私钥解密数据
openssl rsautl -decrypt -inkey private_key.pem -in encrypted.bin -out decrypted.txt
• 说明:使用私钥对encrypted.bin
文件进行解密,生成解密后的文件decrypted.txt
。
5.生成和管理证书颁发机构(CA)
5.1 创建 CA 证书
openssl genrsa -out ca_private_key.pem 2048
openssl req -x509 -new -key ca_private_key.pem -out ca_certificate.pem -days 3650
• 说明:生成一个 CA 私钥和自签名的 CA 证书,有效期为 3650 天。
5.2 签署证书请求
openssl x509 -req -in csr.pem -CA ca_certificate.pem -CAkey ca_private_key.pem -CAcreateserial -out signed_certificate.pem -days 365
• 说明:使用 CA 证书和私钥签署一个证书签名请求(CSR),生成签名后的证书signed_certificate.pem
。
6.创建和管理密钥库(PKCS#12)
6.1 创建 PKCS#12 密钥库
openssl pkcs12 -export -out keystore.p12 -inkey private_key.pem -in certificate.pem
• 说明:将私钥和证书打包到一个 PKCS#12 密钥库文件keystore.p12
中。
6.2 从 PKCS#12 密钥库提取私钥和证书
openssl pkcs12 -in keystore.p12 -out extracted_private_key.pem -nocerts
openssl pkcs12 -in keystore.p12 -out extracted_certificate.pem -nokeys
• 说明:从 PKCS#12 密钥库中提取私钥和证书。
7.生成 Diffie-Hellman 参数
7.1 生成 DH 参数
openssl dhparam -out dhparams.pem 2048
• 说明:生成 2048 位的 Diffie-Hellman 参数,保存到dhparams.pem
文件中。
8.生成和管理椭圆曲线密钥
8.1 生成椭圆曲线密钥
openssl ecparam -genkey -name prime256v1 -out ecdsa_private_key.pem
• 说明:生成一个椭圆曲线密钥,使用prime256v1
曲线,保存到ecdsa_private_key.pem
文件中。
8.2 提取椭圆曲线公钥
openssl ec -in ecdsa_private_key.pem -pubout -out ecdsa_public_key.pem
• 说明:从椭圆曲线私钥文件中提取公钥,保存到ecdsa_public_key.pem
文件中。
9.生成和管理证书吊销列表(CRL)
9.1 创建 CRL
openssl ca -gencrl -out crl.pem -config openssl.cnf
• 说明:生成一个证书吊销列表(CRL),保存到crl.pem
文件中。需要一个openssl.cnf
配置文件。
10.其他常用命令
10.1 查看私钥信息
openssl rsa -in private_key.pem -check
• 说明:检查私钥文件的完整性和详细信息。
10.2 查看公钥信息
openssl rsa -pubin -in public_key.pem -check
• 说明:检查公钥文件的完整性和详细信息。
10.3 查看 CSR 信息
openssl req -in csr.pem -text -noout
• 说明:查看证书签名请求(CSR)的详细信息。
10.4 查看密钥库信息
openssl pkcs12 -info -in keystore.p12
• 说明:查看 PKCS#12 密钥库文件的详细信息。
总结
OpenSSL 是一个功能强大的工具,涵盖了从密钥生成、证书管理到数据加密解密的各个方面。通过上述命令,你可以完成大多数与加密相关的任务。如果你有特定的需求或遇到问题,可以参考 OpenSSL 的官方文档或社区支持。