OpenSSL 精粹:SSL 证书、私钥和 CSR( 三 )

如果每条命令的输出都是相同的,那么私钥、证书和 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.derDER 格式通常与 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"


推荐阅读