如果每条命令的输出都是相同的,那么私钥、证书和 CSR 就极有可能是相关的 。
加密私钥
这需要一个未加密的私钥(unencrypted.key),并输出它的加密版本(encrypted.key):
openssl rsa -des3 -in unencrypted.key -out encrypted.key
输入你所需的密码,以加密私钥 。
解密私钥
这需要一个加密的私钥(encrypted.key),并输出一个解密的版本(decrypted.key):
openssl rsa -in encrypted.key -out decrypted.key
在提示时,输入加密密钥的密码 。
转换证书格式我们一直在使用的所有证书都是 ASCII 码 PEM 编码的 X.509 证书 。还有很多其他的证书编码和容器类型;一些应用程序喜欢某些格式而不是其他格式 。此外,这些格式中的许多格式可以在一个文件中包含多个项目,如私钥、证书和 CA 证书 。
OpenSSL 可以用来将证书在则西格式间转换 。本节将介绍一些可能的转换 。
将 PEM 转换为 DER
如果要将 PEM 编码的证书(domain.crt)转换为 DER 编码的证书(domain.der),即二进制格式,请使用此命令:
openssl x509 -in domain.crt -outform der -out domain.der
DER 格式通常与 JAVA 一起使用 。
将 DER 转换为 PEM
如果要将 DER 编码的证书(domain.der)转换为 PEM 编码的证书(domain.crt),请使用此命令:
openssl x509 -inform der -in domain.der -out domain.crt
将 PEM 转换为 PKCS7
如果你想把 PEM 证书(domain.crt 和 ca-chain.crt)添加到 PKCS7 文件(domain.p7b)中,请使用该命令:
openssl crl2pkcs7 -nocrl -certfile domain.crt -certfile ca-chain.crt -out domain.p7b
请注意,你可以使用一个或多个 -certfile 选项来指定要添加到 PKCS7 文件中的证书 。
PKCS7 文件,也被称为 P7B,通常用于 Java Keystores 和 Microsoft IIS(windows) 。它们是 ASCII 文件,可以包含证书和 CA 证书 。
将 PKCS7 转换为 PEM
如果你想将 PKCS7 文件(domain.p7b)转换为 PEM 文件,请使用该命令:
openssl pkcs7 -in domain.p7b -print_certs -out domain.crt
请注意,如果你的 PKCS7 文件中有多个项目(如证书和 CA 中间证书),创建的 PEM 文件将包含其中的所有项目 。
将 PEM 转换为 PKCS12
如果你想使用私钥(domain.key)和证书(domain.crt),并将它们组合成一个 PKCS12 文件(domain.pfx),请使用这个命令:
openssl pkcs12 -inkey domain.key -in domain.crt -export -out domain.pfx
系统会提示你输入导出密码,你可以留空 。请注意,在这种情况下,你可以通过将多个证书连接到一个 PEM 文件(domain.crt)中来添加一个证书链到 PKCS12 文件中 。
PKCS12 文件,也被称为 PFX 文件,通常用于在 Micrsoft IIS(Windows)中导入和导出证书链 。
将 PKCS12 转换为 PEM
如果你想转换 PKCS12 文件(domain.pfx)并将其转换为 PEM 格式(domain.combined.crt),请使用此命令:
openssl pkcs12 -in domain.pfx -nodes -out domain.combined.crt
请注意,如果你的 PKCS12 文件中有多个项目(如证书和私钥),创建的 PEM 文件将包含其中的所有项目 。
OpenSSL 版本openssl version 命令可以用来检查你正在运行的版本 。你正在运行的 OpenSSL 版本,以及编译时使用的选项会影响到你可以使用的功能(有时也会影响到命令行选项) 。
下面的命令显示了你正在运行的 OpenSSL 版本,以及它被编译时的所有选项:
openssl version -a
本指南是使用具有如下细节的 OpenSSL 二进制文件编写的(参见前面命令的输出):
OpenSSL 1.0.1f 6 Jan 2014built on: Mon Apr 7 21:22:23 UTC 2014platform: debian-amd64options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx)compiler: cc -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASMOPENSSLDIR: "/usr/lib/ssl"
推荐阅读
- nginx开启ssl并把http重定向到https的两种方式
- 阿里云:SSL认证申请及配置流程
- 一文读懂HTTPS以及SSL单向验证和双向验证
- 如何利用 SSL/TLS 保护你的 Linux 邮件服务
- kali渗透:web登录密码嗅探神器SSLstrip,这样使用才是正确姿势
- 阿里云centOS Ngnix配置ssl证书
- 宝塔面板开启反向代理后,怎么自动续签Let's Encrypt免费SSL证书
- Nginx服务器安装SSL证书方法教程
- 推荐一款github上开源的SSL VPN
- 免费的SSL证书它不香吗?香,真香