openssl (OpenSSL-证书-精粹-私钥和-CSR-SSL)

文章编号:9164 更新时间:2024-01-04 分类:互联网资讯 阅读次数:

资讯内容

引见

OpenSSL是一个多配置的命令行工具,可以用于与(PKI)和HTTPS(HTTPoverTLS)相关的少量义务。这本小抄格调的指南提供了OpenSSL命令的极速参考,这些命令在经常出现的日常场景中十分有用。这包括生成私钥、(CSR)和证书格局转换的OpenSSL示例,但它并没有涵盖OpenSSL的一切用途。

opensslOpenSSL证书精粹

如何经常使用本指南

对于证书签订恳求(CSR)

假设你想从(CA)那里取得SSL证书,你必定生成一个(CSR)。一个CSR关键是由一个密钥对的公钥和一些附加消息组成。当证书被签订时,这两局部都会被拔出到证书中。

每当你生成一个CSR时,你会被揭示提供无关证书的消息。这些消息被称为(DN)。DN中的一个关键字段是(CN),它应该是你计划经常使用证书的主机的(FQDN)。当创立CSR时,也可以经过命令行或文件传递消息来跳过交互式揭示。

DN中的其余名目提供了无关你的业务或组织的附加消息。假设你是从证书机构购置SSL证书,理论要求这些附加字段(如)准确地反映你的组织的具体消息。

上方是一个CSR消息揭示的例子:

---CountryName(2lettercode)[AU]:USStateorProvinceName(fullname)[Some-State]:NewYorkLocalityName(eg,city)[]:BrooklynOrganizationName(eg,company)[InternetWidgitsPtyLtd]:ExampleBrooklynCompanyOrganizationalUnitName(eg,section)[]:TechnologyDivisionCommonName(e.g.serverFQDNorYOURname)[]:examplebrooklyn.comEmailAddress[]:

假设你想非交互式地回答CSR消息揭示,你可以经过在任何恳求CSR消息的OpenSSL命令中减少选项来成功。这里是该选项的一个例子,经常使用上方代码块中显示的相反消息:

-subj"/C=US/ST=NewYork/L=Brooklyn/O=ExampleBrooklynCompany/CN=examplebrooklyn.com"

如今你曾经了解了CSR,可以自在跳转到本指南中涵盖你的OpenSSL需求的任何一节。

生成CSR

本节引见了与生成CSR(以及私钥,假设它们还不存在的话)无关的OpenSSL命令。CSR可以用来向证书颁发机构恳求SSL证书。

请记住,你可以经过上一节中提到的选项非交互式地减少CSR消息。

生成一个私钥和一个CSR

假设你想经常使用HTTPS(HTTPoverTLS)来包全你的ApacheHTTP或NginxWeb主机的安保,并且你想经常使用一个证书颁发机构(CA)来颁发SSL证书,那么就经常使用这个方法。生成的CSR可以发送给CA,恳求签发由CA签名的SSL证书。假设你的CA支持SHA-2,请减少选项,用SHA-2签订CSR。

这条命令从头开局创立一个2048位的私钥( domain.key )和一个CSR( domain.csr ):

opensslreq\-newkeyrsa:2048-nodes-keyoutdomain.key\-outdomain.csr

回答CSR消息提问,成功该环节。

选项 -newkeyrsa:2048 指定密钥应该是位,经常使用算法生成。选项指定私钥用明码加密。这里没有蕴含选项,而是隐含在其中,示意正在生成一个CSR。

从现有的私钥中生成一个CSR

假设你曾经有了私钥,并想用它向CA放开证书,请经常使用这个方法。

该命令基于现有的私钥( domain.key )创立一个新的CSR( domain.csr ):

opensslreq\-keydomain.key\-new-outdomain.csr

回答CSR消息提问,成功该环节。

选项指定一个现有的私钥( domain.key ),它将被用来生成一个新的CSR。选项示意正在生成一个CSR。

从现有的证书和私钥生成CSR

假设你想降级现有的证书,但由于某些要素,你或你的CA没有原始的CSR,请经常使用这个方法。基本上可以省去从新输入CSR消息的费事,由于它是从现有证书中提敞开息的。

该命令基于现有的证书( domain.crt )和私钥( domain.key )创立一个新的CSR( domain.csr ):

opensslx509\-indomain.crt\-signkeydomain.key\-x509toreq-outdomain.csr

选项 -x509toreq 指定你经常使用一个X509证书来制造CSR。

生成SSL证书

假设你想经常使用SSL证书来确保服务的安保,但你不须要CA签名的证书,一个有效的(和收费的)处置计划是签订你自己的证书。

你可以自己签发的一种经常出现证书是。自签证书是用自己的私钥签订的证书。自签证书和CA签名证书一样可以用来加密数据,然而你的用户会显示一个正告,说这个证书不被他们的计算机或阅读器信赖。因此,只要当你不须要向用户证实你的服务身份时,才可以经常使用自签名证书(例如非消费或非地下主机)。

本节引见与生成自签名证书相关的OpenSSL命令。

生成自签证书

假设你想经常使用HTTPS(HTTPoverTLS)来包全你的ApacheHTTP或NginxWeb主机,并且你不须要你的证书由CA签名,那么就经常使用这个方法。

这个命令可以从头开局创立一个2048位的私钥( domain.key )和一个自签证书( domain.crt ):

opensslreq\-newkeyrsa:2048-nodes-keyoutdomain.key\-x509-days365-outdomain.crt

回答CSR消息提问,成功该环节。

选项通知子命令创立一个自签名的证书。选项指定证书的有效期为天。它会生成一个暂时的CSR,以搜集与证书相关的消息。

从现有私钥生成自签名证书

假设你曾经有了一个私钥,并且你想用它来生成一个自签证书,请经常使用这个方法。

这条命令可以从现有的私钥( domain.key )中创立一个自签证书( domain.crt ):

opensslreq\-keydomain.key\-new\-x509-days365-outdomain.crt

回答CSR消息提问,成功该环节。

选项通知子命令创立一个自签证书。选项指定证书的有效期为天。选项启用CSR消息提问。

从现有的私钥和CSR生成自签证书

假设你曾经有了私钥和CSR,并且你想用它们生成一个自签证书,请经常使用这个方法。

这条命令将从现有的私钥( domain.key )和( domain.csr )中创立一个自签证书( domain.crt )。

opensslx509\-signkeydomain.key\-indomain.csr\-req-days365-outdomain.crt

选项指定证书的有效期为天。

检查证书

证书和CSR文件是以PEM格局编码的,不适宜被人读取。

本节引见的OpenSSL命令将输入PEM编码文件的实践条目。

检查CSR条目

该命令准许你检查和验证纯文本的CSR( domain.csr )的内容:

opensslreq\-text-noout-verify\-indomain.csr

检查证书条目

该命令准许你检查纯文本证书( domain.crt )的内容:

opensslx509\-text-noout\-indomain.crt

验证证书由CA签订

经常使用此命令验证证书( domain.crt )能否由特定的CA证书()签订:

opensslverify\-verbose-CAFileca.crt\domain.crt

私钥

本节引见了用于创立和验证私钥的OpenSSL命令。

创立私钥

经常使用该命令创立一个受明码包全的位私钥( domain.key ):

opensslgenrsa\-des3-outdomain.key2048

在揭示时输入明码以成功该环节。

验证私钥

经常使用此命令审核私钥( domain.key )能否为有效密钥:

opensslrsa\-check-indomain.key

假设你的私钥曾经加密,系统会揭示你输入它的明码,成功后,未加密的密钥会在终端上输入。

验证私钥能否与证书和CSR婚配

经常使用这些命令来验证私钥( domain.key )能否婚配证书( domain.crt )和CSR( domain.csr ):

opensslrsa-noout-modulus-indomain.key|opensslmd5opensslx509-noout-modulus-indomain.crt|opensslmd5opensslreq-noout-modulus-indomain.csr|opensslmd5

假设每条命令的输入都是相反的,那么私钥、证书和CSR就极有或者是相关的。

加密私钥

这须要一个未加密的私钥( unencrypted.key ),并输入它的加密版本( encrypted.key ):

opensslrsa-des3\-inunencrypted.key\-outencrypted.key

输入你所需的明码,以加密私钥。

解密私钥

这须要一个加密的私钥( encrypted.key ),并输入一个解密的版本( decrypted.key ):

opensslrsa\-inencrypted.key\-outdecrypted.key

在揭示时,输入加密密钥的明码。

转换证书格局

咱们不时在经常使用的一切证书都是ASCII码PEM编码的X.509证书。还有很多其余的证书编码和容器类型;一些运行程序青睐某些格局而不是其余格局。此外,这些格局中的许多格局可以在一个文件中蕴含多个名目,如私钥、证书和CA证书。

OpenSSL可以用来将证书在则西格局间转换。本节将引见一些或者的转换。

将PEM转换为DER

假设要将PEM编码的证书( domain.crt )转换为DER编码的证书( domain.der ),即二进制格局,请经常使用此命令:

opensslx509\-indomain.crt\-outformder-outdomain.der

DER格局理论与Java一同经常使用。

将DER转换为PEM

假设要将DER编码的证书( domain.der )转换为PEM编码的证书( domain.crt ),请经常使用此命令:

opensslx509\-informder-indomain.der\-outdomain.crt

将PEM转换为PKCS7

假设你想把PEM证书( domain.crt ca-chain.crt )减少到PKCS7文件( domain.p7b )中,请经常使用该命令:

opensslcrl2pkcs7-nocrl\-certfiledomain.crt\-certfileca-chain.crt\-outdomain.p7b

请留意,你可以经常使用一个或多个选项来指定要减少到PKCS7文件中的证书。

PKCS7文件,也被称为P7B,理论用于JavaKeystores和MicrosoftIIS(Windows)。它们是ASCII文件,可以蕴含证书和CA证书。

将PKCS7转换为PEM

假设你想将PKCS7文件( domain.p7b )转换为PEM文件,请经常使用该命令:

opensslpkcs7\-indomain.p7b\-print_certs-outdomain.crt

请留意,假设你的PKCS7文件中有多个名目(如证书和CA两边证书),创立的PEM文件将蕴含其中的一切名目。

将PEM转换为PKCS12

假设你想经常使用私钥( domain.key )和证书( domain.crt ),并将它们组分解一个PKCS12文件( domain.pfx ),请经常使用这个命令:

opensslpkcs12\-inkeydomain.key\-indomain.crt\-export-outdomain.pfx

系统会揭示你输入导出明码,你可以留空。请留意,在这种状况下,你可以经过将多个证书衔接到一个PEM文件( domain.crt )中来减少一个证书链到PKCS12文件中。

PKCS12文件,也被称为PFX文件,理论用于在MicrsoftIIS(Windows)中导入和导出证书链。

将PKCS12转换为PEM

假设你想转换PKCS12文件( domain.pfx )并将其转换为PEM格局( domain.combined.crt ),请经常使用此命令:

opensslpkcs12\-indomain.pfx\-nodes-outdomain.combined.crt

请留意,假设你的PKCS12文件中有多个名目(如证书和私钥),创立的PEM文件将蕴含其中的一切名目。

OpenSSL版本

opensslversion 命令可以用来审核你正在运转的版本。你正在运转的OpenSSL版本,以及编译时经常使用的选项会影响到你可以经常使用的配置(有时也会影响到命令行选项)。

上方的命令显示了你正在运转的OpenSSL版本,以及它被编译时的一切选项:

opensslversion-a

本指南是使用具备如下细节的OpenSSL二进制文件编写的(参见前面命令的输入):

OpenSSL1.0.1f6Jan2014builton:MonApr721:22:23UTC2014platform: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"

总结

这应该涵盖了大少数人如何经常使用OpenSSL来处置SSL证书的状况!它还有很多其余的用途,在这里没有引见,所以请在评论中随时征询或倡导其余用途。

假设你在经常使用这些命令时遇到了疑问,请必定要评论(并附上你的OpenSSL版本输入)。


作者:MitchellAnicas选题:译者:校正:

本文由原创编译,Linux中国荣誉推出

标签: SSL证书SSLOpenSSL

本文地址: https://yihaiquanyi.com/article/d70cebe331c64dc73702.html

上一篇:带着疑问读课文的好处看完还疑问HTTPS我直...
下一篇:我是付闻樱重生后手撕白眼狼养女许沁我是付...

发表评论