默认情况下,openssl输出格式为PKCS#1-PEM
生成RSA私钥(无加密)
opensslgenrsa-outrsa_private.key2048生成RSA公钥
opensslrsa-inrsa_private.key-pubout-outrsa_public.key生成RSA私钥(使用aes256加密)
opensslgenrsa-aes256-passoutpass:111111-outrsa_aes_private.key2048其中passout代替shell进行密码输入,否则会提示输入密码;生成加密后的内容如:
-----BEGINRSAPRIVATEKEY-----Proc-Type:4,ENCRYPTEDDEK-Info:AES-256-CBC,5584D000DDDD53DD5B12AE935F05A007Base64EncodedData-----ENDRSAPRIVATEKEY-----此时若生成公钥,需要提供密码
opensslrsa-inrsa_aes_private.key-passinpass:111111-pubout-outrsa_public.key其中passout代替shell进行密码输入,否则会提示输入密码;
私钥转非加密
opensslrsa-inrsa_aes_private.key-passinpass:111111-outrsa_private.key私钥转加密
opensslrsa-inrsa_private.key-aes256-passoutpass:111111-outrsa_aes_private.key私钥PEM转DER
opensslrsa-inrsa_private.key-outformder-outrsa_aes_private.der-inform和-outform参数制定输入输出格式,由der转pem格式同理
查看私钥明细
opensslrsa-inrsa_private.key-noout-text使用-pubin参数可查看公钥明细
私钥PKCS#1转PKCS#8
opensslpkcs8-topk8-inrsa_private.key-passoutpass:111111-outpkcs8_private.key其中-passout指定了密码,输出的pkcs8格式密钥为加密形式,pkcs8默认采用des3加密算法,内容如下:
-----BEGINENCRYPTEDPRIVATEKEY-----Base64EncodedData-----ENDENCRYPTEDPRIVATEKEY-----使用-nocrypt参数可以输出无加密的pkcs8密钥,如下:
-----BEGINPRIVATEKEY-----Base64EncodedData-----ENDPRIVATEKEY-----三、生成自签名证书生成RSA私钥和自签名证书
opensslreq-newkeyrsa:2048-nodes-keyoutrsa_private.key-x509-days365-outcert.crtreq是证书请求的子命令,-newkeyrsa:2048-keyoutprivate_key.pem表示生成私钥(PKCS8格式),-nodes表示私钥不加密,若不带参数将提示输入密码;-x509表示输出证书,-days365为有效期,此后根据提示输入证书拥有者信息;若执行自动输入,可使用-subj选项:
opensslreq-newkeyrsa:2048-nodes-keyoutrsa_private.key-x509-days365-outcert.crt-subj"/C=CN/ST=GD/L=SZ/O=vihoo/OU=dev/CN=vivo.com/emailAddress=yy@vivo.com"使用已有RSA私钥生成自签名证书
opensslreq-new-x509-days365-keyrsa_private.key-outcert.crt-new指生成证书请求,加上-x509表示直接输出证书,-key指定私钥文件,其余选项与上述命令相同
使用RSA私钥生成CSR签名请求
opensslgenrsa-aes256-passoutpass:111111-outserver.key2048opensslreq-new-keyserver.key-outserver.csr此后输入密码、server证书信息完成,也可以命令行指定各类参数
opensslreq-new-keyserver.key-passinpass:111111-outserver.csr-subj"/C=CN/ST=GD/L=SZ/O=vihoo/OU=dev/CN=vivo.com/emailAddress=yy@vivo.com"***此时生成的csr签名请求文件可提交至CA进行签发***
查看CSR的细节
catserver.csr-----BEGINCERTIFICATEREQUEST-----Base64EncodedData-----ENDCERTIFICATEREQUEST-----opensslreq-noout-text-inserver.csr使用CA证书及CA密钥对请求签发证书进行签发,生成x509证书
opensslx509-req-days3650-inserver.csr-CAca.crt-CAkeyca.key-passinpass:111111-CAcreateserial-outserver.crt其中CAxxx选项用于指定CA参数输入
查看证书细节
opensslx509-incert.crt-noout-text转换证书编码格式
opensslx509-incert.cer-informDER-outformPEM-outcert.pem合成pkcs#12证书(含私钥)
**将pem证书和私钥转pkcs#12证书**
opensslpkcs12-export-inserver.crt-inkeyserver.key-passinpass:111111-passwordpass:111111-outserver.p12其中-export指导出pkcs#12证书,-inkey指定了私钥文件,-passin为私钥(文件)密码(nodes为无加密),-password指定p12文件的密码(导入导出)
**将pem证书和私钥/CA证书合成pkcs#12证书**
opensslpkcs12-export-inserver.crt-inkeyserver.key-passinpass:111111\-chain-CAfileca.crt-passwordpass:111111-outserver-all.p12其中-chain指示同时添加证书链,-CAfile指定了CA证书,导出的p12文件将包含多个证书。(其他选项:-name可用于指定server证书别名;-caname用于指定ca证书别名)
**pcks#12提取PEM文件(含私钥)**
opensslpkcs12-inserver.p12-passwordpass:111111-passoutpass:111111-outout/server.pem其中-password指定p12文件的密码(导入导出),-passout指输出私钥的加密密码(nodes为无加密)导出的文件为pem格式,同时包含证书和私钥(pkcs#8):
opensslpkcs12-inserver.p12-passwordpass:111111-passoutpass:111111-nocerts-outout/key.pem仅提取证书(所有证书)
opensslpkcs12-inserver.p12-passwordpass:111111-nokeys-outout/key.pem仅提取ca证书
opensslpkcs12-inserver-all.p12-passwordpass:111111-nokeys-cacerts-outout/cacert.pem